From 9d0f3261c9fed02c6a00c67a5edbfd7dc12096c3 Mon Sep 17 00:00:00 2001 From: Bastien CHAMAGNE Date: Fri, 13 Jan 2023 09:20:01 +0100 Subject: [PATCH 1/3] add transaction types: contract and data --- dist/archethic-browser.mjs | 44 ++++++------ dist/archethic-browser.mjs.map | 8 +-- dist/archethic-node.mjs | 28 ++++---- dist/archethic-node.mjs.map | 8 +-- dist/archethic.cjs | 28 ++++---- dist/archethic.cjs.map | 8 +-- dist/archethic.js | 44 ++++++------ dist/archethic.js.map | 8 +-- dist/archethic.mjs | 99 --------------------------- dist/archethic.mjs.map | 7 -- example/transactionBuilder/index.html | 4 +- lib/transaction_builder.js | 8 ++- 12 files changed, 96 insertions(+), 198 deletions(-) delete mode 100644 dist/archethic.mjs delete mode 100644 dist/archethic.mjs.map diff --git a/dist/archethic-browser.mjs b/dist/archethic-browser.mjs index 3e3a80a..ed02350 100644 --- a/dist/archethic-browser.mjs +++ b/dist/archethic-browser.mjs @@ -1,24 +1,24 @@ -var $_=Object.create;var Wh=Object.defineProperty;var W_=Object.getOwnPropertyDescriptor;var J_=Object.getOwnPropertyNames;var X_=Object.getPrototypeOf,Z_=Object.prototype.hasOwnProperty;var Mv=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var eI=(t,e)=>()=>(t&&(e=t(t=0)),e);var P=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Sv=(t,e)=>{for(var r in e)Wh(t,r,{get:e[r],enumerable:!0})},tI=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of J_(e))!Z_.call(t,n)&&n!==r&&Wh(t,n,{get:()=>e[n],enumerable:!(i=W_(e,n))||i.enumerable});return t};var $r=(t,e,r)=>(r=t!=null?$_(X_(t)):{},tI(e||!t||!t.__esModule?Wh(r,"default",{value:t,enumerable:!0}):r,t));var qv=P(Hs=>{"use strict";g();Hs.byteLength=iI;Hs.toByteArray=fI;Hs.fromByteArray=sI;var Fi=[],Wr=[],rI=typeof Uint8Array<"u"?Uint8Array:Array,Jh="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(lf=0,Cv=Jh.length;lf0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var i=r===e?0:4-r%4;return[r,i]}function iI(t){var e=Bv(t),r=e[0],i=e[1];return(r+i)*3/4-i}function nI(t,e,r){return(e+r)*3/4-r}function fI(t){var e,r=Bv(t),i=r[0],n=r[1],a=new rI(nI(t,i,n)),o=0,c=n>0?i-4:i,m;for(m=0;m>16&255,a[o++]=e>>8&255,a[o++]=e&255;return n===2&&(e=Wr[t.charCodeAt(m)]<<2|Wr[t.charCodeAt(m+1)]>>4,a[o++]=e&255),n===1&&(e=Wr[t.charCodeAt(m)]<<10|Wr[t.charCodeAt(m+1)]<<4|Wr[t.charCodeAt(m+2)]>>2,a[o++]=e>>8&255,a[o++]=e&255),a}function aI(t){return Fi[t>>18&63]+Fi[t>>12&63]+Fi[t>>6&63]+Fi[t&63]}function oI(t,e,r){for(var i,n=[],a=e;ac?c:o+a));return i===1?(e=t[r-1],n.push(Fi[e>>2]+Fi[e<<4&63]+"==")):i===2&&(e=(t[r-2]<<8)+t[r-1],n.push(Fi[e>>10]+Fi[e>>4&63]+Fi[e<<2&63]+"=")),n.join("")}});var Rv=P(Xh=>{g();Xh.read=function(t,e,r,i,n){var a,o,c=n*8-i-1,m=(1<>1,B=-7,R=r?n-1:0,F=r?-1:1,N=t[e+R];for(R+=F,a=N&(1<<-B)-1,N>>=-B,B+=c;B>0;a=a*256+t[e+R],R+=F,B-=8);for(o=a&(1<<-B)-1,a>>=-B,B+=i;B>0;o=o*256+t[e+R],R+=F,B-=8);if(a===0)a=1-M;else{if(a===m)return o?NaN:(N?-1:1)*(1/0);o=o+Math.pow(2,i),a=a-M}return(N?-1:1)*o*Math.pow(2,a-i)};Xh.write=function(t,e,r,i,n,a){var o,c,m,M=a*8-n-1,B=(1<>1,F=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,N=i?0:a-1,G=i?1:-1,Z=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(c=isNaN(e)?1:0,o=B):(o=Math.floor(Math.log(e)/Math.LN2),e*(m=Math.pow(2,-o))<1&&(o--,m*=2),o+R>=1?e+=F/m:e+=F*Math.pow(2,1-R),e*m>=2&&(o++,m/=2),o+R>=B?(c=0,o=B):o+R>=1?(c=(e*m-1)*Math.pow(2,n),o=o+R):(c=e*Math.pow(2,R-1)*Math.pow(2,n),o=0));n>=8;t[r+N]=c&255,N+=G,c/=256,n-=8);for(o=o<0;t[r+N]=o&255,N+=G,o/=256,M-=8);t[r+N-G]|=Z*128}});var fn=P(sa=>{"use strict";g();var Zh=qv(),aa=Rv(),Tv=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;sa.Buffer=re;sa.SlowBuffer=pI;sa.INSPECT_MAX_BYTES=50;var zs=2147483647;sa.kMaxLength=zs;re.TYPED_ARRAY_SUPPORT=uI();!re.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function uI(){try{let t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),t.foo()===42}catch{return!1}}Object.defineProperty(re.prototype,"parent",{enumerable:!0,get:function(){if(!!re.isBuffer(this))return this.buffer}});Object.defineProperty(re.prototype,"offset",{enumerable:!0,get:function(){if(!!re.isBuffer(this))return this.byteOffset}});function nn(t){if(t>zs)throw new RangeError('The value "'+t+'" is invalid for option "size"');let e=new Uint8Array(t);return Object.setPrototypeOf(e,re.prototype),e}function re(t,e,r){if(typeof t=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ic(t)}return Uv(t,e,r)}re.poolSize=8192;function Uv(t,e,r){if(typeof t=="string")return cI(t,e);if(ArrayBuffer.isView(t))return dI(t);if(t==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(Li(t,ArrayBuffer)||t&&Li(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Li(t,SharedArrayBuffer)||t&&Li(t.buffer,SharedArrayBuffer)))return tc(t,e,r);if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let i=t.valueOf&&t.valueOf();if(i!=null&&i!==t)return re.from(i,e,r);let n=lI(t);if(n)return n;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof t[Symbol.toPrimitive]=="function")return re.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}re.from=function(t,e,r){return Uv(t,e,r)};Object.setPrototypeOf(re.prototype,Uint8Array.prototype);Object.setPrototypeOf(re,Uint8Array);function kv(t){if(typeof t!="number")throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function hI(t,e,r){return kv(t),t<=0?nn(t):e!==void 0?typeof r=="string"?nn(t).fill(e,r):nn(t).fill(e):nn(t)}re.alloc=function(t,e,r){return hI(t,e,r)};function ic(t){return kv(t),nn(t<0?0:nc(t)|0)}re.allocUnsafe=function(t){return ic(t)};re.allocUnsafeSlow=function(t){return ic(t)};function cI(t,e){if((typeof e!="string"||e==="")&&(e="utf8"),!re.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let r=Fv(t,e)|0,i=nn(r),n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}function ec(t){let e=t.length<0?0:nc(t.length)|0,r=nn(e);for(let i=0;i=zs)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+zs.toString(16)+" bytes");return t|0}function pI(t){return+t!=t&&(t=0),re.alloc(+t)}re.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==re.prototype};re.compare=function(e,r){if(Li(e,Uint8Array)&&(e=re.from(e,e.offset,e.byteLength)),Li(r,Uint8Array)&&(r=re.from(r,r.offset,r.byteLength)),!re.isBuffer(e)||!re.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===r)return 0;let i=e.length,n=r.length;for(let a=0,o=Math.min(i,n);an.length?(re.isBuffer(o)||(o=re.from(o)),o.copy(n,a)):Uint8Array.prototype.set.call(n,o,a);else if(re.isBuffer(o))o.copy(n,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=o.length}return n};function Fv(t,e){if(re.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||Li(t,ArrayBuffer))return t.byteLength;if(typeof t!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);let r=t.length,i=arguments.length>2&&arguments[2]===!0;if(!i&&r===0)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return rc(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Yv(t).length;default:if(n)return i?-1:rc(t).length;e=(""+e).toLowerCase(),n=!0}}re.byteLength=Fv;function vI(t,e,r){let i=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,e>>>=0,r<=e))return"";for(t||(t="utf8");;)switch(t){case"hex":return EI(this,e,r);case"utf8":case"utf-8":return Nv(this,e,r);case"ascii":return _I(this,e,r);case"latin1":case"binary":return II(this,e,r);case"base64":return wI(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return MI(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}re.prototype._isBuffer=!0;function pf(t,e,r){let i=t[e];t[e]=t[r],t[r]=i}re.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(e+=" ... "),""};Tv&&(re.prototype[Tv]=re.prototype.inspect);re.prototype.compare=function(e,r,i,n,a){if(Li(e,Uint8Array)&&(e=re.from(e,e.offset,e.byteLength)),!re.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(r===void 0&&(r=0),i===void 0&&(i=e?e.length:0),n===void 0&&(n=0),a===void 0&&(a=this.length),r<0||i>e.length||n<0||a>this.length)throw new RangeError("out of range index");if(n>=a&&r>=i)return 0;if(n>=a)return-1;if(r>=i)return 1;if(r>>>=0,i>>>=0,n>>>=0,a>>>=0,this===e)return 0;let o=a-n,c=i-r,m=Math.min(o,c),M=this.slice(n,a),B=e.slice(r,i);for(let R=0;R2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,ac(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0)if(n)r=0;else return-1;if(typeof e=="string"&&(e=re.from(e,i)),re.isBuffer(e))return e.length===0?-1:Ov(t,e,r,i,n);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):Ov(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function Ov(t,e,r,i,n){let a=1,o=t.length,c=e.length;if(i!==void 0&&(i=String(i).toLowerCase(),i==="ucs2"||i==="ucs-2"||i==="utf16le"||i==="utf-16le")){if(t.length<2||e.length<2)return-1;a=2,o/=2,c/=2,r/=2}function m(B,R){return a===1?B[R]:B.readUInt16BE(R*a)}let M;if(n){let B=-1;for(M=r;Mo&&(r=o-c),M=r;M>=0;M--){let B=!0;for(let R=0;Rn&&(i=n)):i=n;let a=e.length;i>a/2&&(i=a/2);let o;for(o=0;o>>0,isFinite(i)?(i=i>>>0,n===void 0&&(n="utf8")):(n=i,i=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((i===void 0||i>a)&&(i=a),e.length>0&&(i<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return bI(this,e,r,i);case"utf8":case"utf-8":return gI(this,e,r,i);case"ascii":case"latin1":case"binary":return yI(this,e,r,i);case"base64":return mI(this,e,r,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return xI(this,e,r,i);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}};re.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function wI(t,e,r){return e===0&&r===t.length?Zh.fromByteArray(t):Zh.fromByteArray(t.slice(e,r))}function Nv(t,e,r){r=Math.min(t.length,r);let i=[],n=e;for(;n239?4:a>223?3:a>191?2:1;if(n+c<=r){let m,M,B,R;switch(c){case 1:a<128&&(o=a);break;case 2:m=t[n+1],(m&192)===128&&(R=(a&31)<<6|m&63,R>127&&(o=R));break;case 3:m=t[n+1],M=t[n+2],(m&192)===128&&(M&192)===128&&(R=(a&15)<<12|(m&63)<<6|M&63,R>2047&&(R<55296||R>57343)&&(o=R));break;case 4:m=t[n+1],M=t[n+2],B=t[n+3],(m&192)===128&&(M&192)===128&&(B&192)===128&&(R=(a&15)<<18|(m&63)<<12|(M&63)<<6|B&63,R>65535&&R<1114112&&(o=R))}}o===null?(o=65533,c=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|o&1023),i.push(o),n+=c}return AI(i)}var Dv=4096;function AI(t){let e=t.length;if(e<=Dv)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii)&&(r=i);let n="";for(let a=e;ai&&(e=i),r<0?(r+=i,r<0&&(r=0)):r>i&&(r=i),rr)throw new RangeError("Trying to access beyond buffer length")}re.prototype.readUintLE=re.prototype.readUIntLE=function(e,r,i){e=e>>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e],a=1,o=0;for(;++o>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e+--r],a=1;for(;r>0&&(a*=256);)n+=this[e+--r]*a;return n};re.prototype.readUint8=re.prototype.readUInt8=function(e,r){return e=e>>>0,r||ur(e,1,this.length),this[e]};re.prototype.readUint16LE=re.prototype.readUInt16LE=function(e,r){return e=e>>>0,r||ur(e,2,this.length),this[e]|this[e+1]<<8};re.prototype.readUint16BE=re.prototype.readUInt16BE=function(e,r){return e=e>>>0,r||ur(e,2,this.length),this[e]<<8|this[e+1]};re.prototype.readUint32LE=re.prototype.readUInt32LE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};re.prototype.readUint32BE=re.prototype.readUInt32BE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};re.prototype.readBigUInt64LE=On(function(e){e=e>>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=r+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,a=this[++e]+this[++e]*2**8+this[++e]*2**16+i*2**24;return BigInt(n)+(BigInt(a)<>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=r*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],a=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i;return(BigInt(n)<>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e],a=1,o=0;for(;++o=a&&(n-=Math.pow(2,8*r)),n};re.prototype.readIntBE=function(e,r,i){e=e>>>0,r=r>>>0,i||ur(e,r,this.length);let n=r,a=1,o=this[e+--n];for(;n>0&&(a*=256);)o+=this[e+--n]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};re.prototype.readInt8=function(e,r){return e=e>>>0,r||ur(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};re.prototype.readInt16LE=function(e,r){e=e>>>0,r||ur(e,2,this.length);let i=this[e]|this[e+1]<<8;return i&32768?i|4294901760:i};re.prototype.readInt16BE=function(e,r){e=e>>>0,r||ur(e,2,this.length);let i=this[e+1]|this[e]<<8;return i&32768?i|4294901760:i};re.prototype.readInt32LE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};re.prototype.readInt32BE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};re.prototype.readBigInt64LE=On(function(e){e=e>>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(i<<24);return(BigInt(n)<>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=(r<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(n)<>>0,r||ur(e,4,this.length),aa.read(this,e,!0,23,4)};re.prototype.readFloatBE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),aa.read(this,e,!1,23,4)};re.prototype.readDoubleLE=function(e,r){return e=e>>>0,r||ur(e,8,this.length),aa.read(this,e,!0,52,8)};re.prototype.readDoubleBE=function(e,r){return e=e>>>0,r||ur(e,8,this.length),aa.read(this,e,!1,52,8)};function Or(t,e,r,i,n,a){if(!re.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}re.prototype.writeUintLE=re.prototype.writeUIntLE=function(e,r,i,n){if(e=+e,r=r>>>0,i=i>>>0,!n){let c=Math.pow(2,8*i)-1;Or(this,e,r,i,c,0)}let a=1,o=0;for(this[r]=e&255;++o>>0,i=i>>>0,!n){let c=Math.pow(2,8*i)-1;Or(this,e,r,i,c,0)}let a=i-1,o=1;for(this[r+a]=e&255;--a>=0&&(o*=256);)this[r+a]=e/o&255;return r+i};re.prototype.writeUint8=re.prototype.writeUInt8=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,1,255,0),this[r]=e&255,r+1};re.prototype.writeUint16LE=re.prototype.writeUInt16LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,65535,0),this[r]=e&255,this[r+1]=e>>>8,r+2};re.prototype.writeUint16BE=re.prototype.writeUInt16BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,65535,0),this[r]=e>>>8,this[r+1]=e&255,r+2};re.prototype.writeUint32LE=re.prototype.writeUInt32LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,4294967295,0),this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=e&255,r+4};re.prototype.writeUint32BE=re.prototype.writeUInt32BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,4294967295,0),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};function Qv(t,e,r,i,n){Gv(e,i,n,t,r,7);let a=Number(e&BigInt(4294967295));t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a;let o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=o,o=o>>8,t[r++]=o,o=o>>8,t[r++]=o,o=o>>8,t[r++]=o,r}function Kv(t,e,r,i,n){Gv(e,i,n,t,r,7);let a=Number(e&BigInt(4294967295));t[r+7]=a,a=a>>8,t[r+6]=a,a=a>>8,t[r+5]=a,a=a>>8,t[r+4]=a;let o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=o,o=o>>8,t[r+2]=o,o=o>>8,t[r+1]=o,o=o>>8,t[r]=o,r+8}re.prototype.writeBigUInt64LE=On(function(e,r=0){return Qv(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});re.prototype.writeBigUInt64BE=On(function(e,r=0){return Kv(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});re.prototype.writeIntLE=function(e,r,i,n){if(e=+e,r=r>>>0,!n){let m=Math.pow(2,8*i-1);Or(this,e,r,i,m-1,-m)}let a=0,o=1,c=0;for(this[r]=e&255;++a>0)-c&255;return r+i};re.prototype.writeIntBE=function(e,r,i,n){if(e=+e,r=r>>>0,!n){let m=Math.pow(2,8*i-1);Or(this,e,r,i,m-1,-m)}let a=i-1,o=1,c=0;for(this[r+a]=e&255;--a>=0&&(o*=256);)e<0&&c===0&&this[r+a+1]!==0&&(c=1),this[r+a]=(e/o>>0)-c&255;return r+i};re.prototype.writeInt8=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,1,127,-128),e<0&&(e=255+e+1),this[r]=e&255,r+1};re.prototype.writeInt16LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,32767,-32768),this[r]=e&255,this[r+1]=e>>>8,r+2};re.prototype.writeInt16BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,32767,-32768),this[r]=e>>>8,this[r+1]=e&255,r+2};re.prototype.writeInt32LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,2147483647,-2147483648),this[r]=e&255,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24,r+4};re.prototype.writeInt32BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};re.prototype.writeBigInt64LE=On(function(e,r=0){return Qv(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});re.prototype.writeBigInt64BE=On(function(e,r=0){return Kv(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function jv(t,e,r,i,n,a){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Hv(t,e,r,i,n){return e=+e,r=r>>>0,n||jv(t,e,r,4,34028234663852886e22,-34028234663852886e22),aa.write(t,e,r,i,23,4),r+4}re.prototype.writeFloatLE=function(e,r,i){return Hv(this,e,r,!0,i)};re.prototype.writeFloatBE=function(e,r,i){return Hv(this,e,r,!1,i)};function zv(t,e,r,i,n){return e=+e,r=r>>>0,n||jv(t,e,r,8,17976931348623157e292,-17976931348623157e292),aa.write(t,e,r,i,52,8),r+8}re.prototype.writeDoubleLE=function(e,r,i){return zv(this,e,r,!0,i)};re.prototype.writeDoubleBE=function(e,r,i){return zv(this,e,r,!1,i)};re.prototype.copy=function(e,r,i,n){if(!re.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),!n&&n!==0&&(n=this.length),r>=e.length&&(r=e.length),r||(r=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-r>>0,i=i===void 0?this.length:i>>>0,e||(e=0);let a;if(typeof e=="number")for(a=r;a2**32?n=Pv(String(r)):typeof r=="bigint"&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Pv(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i},RangeError);function Pv(t){let e="",r=t.length,i=t[0]==="-"?1:0;for(;r>=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function SI(t,e,r){oa(e,"offset"),(t[e]===void 0||t[e+r]===void 0)&&uo(e,t.length-(r+1))}function Gv(t,e,r,i,n,a){if(t>r||t3?e===0||e===BigInt(0)?c=`>= 0${o} and < 2${o} ** ${(a+1)*8}${o}`:c=`>= -(2${o} ** ${(a+1)*8-1}${o}) and < 2 ** ${(a+1)*8-1}${o}`:c=`>= ${e}${o} and <= ${r}${o}`,new fa.ERR_OUT_OF_RANGE("value",c,t)}SI(i,n,a)}function oa(t,e){if(typeof t!="number")throw new fa.ERR_INVALID_ARG_TYPE(e,"number",t)}function uo(t,e,r){throw Math.floor(t)!==t?(oa(t,r),new fa.ERR_OUT_OF_RANGE(r||"offset","an integer",t)):e<0?new fa.ERR_BUFFER_OUT_OF_BOUNDS:new fa.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}var CI=/[^+/0-9A-Za-z-_]/g;function BI(t){if(t=t.split("=")[0],t=t.trim().replace(CI,""),t.length<2)return"";for(;t.length%4!==0;)t=t+"=";return t}function rc(t,e){e=e||1/0;let r,i=t.length,n=null,a=[];for(let o=0;o55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}else if(o+1===i){(e-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),n=r;continue}r=(n-55296<<10|r-56320)+65536}else n&&(e-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function qI(t){let e=[];for(let r=0;r>8,n=r%256,a.push(n),a.push(i);return a}function Yv(t){return Zh.toByteArray(BI(t))}function Gs(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function Li(t,e){return t instanceof e||t!=null&&t.constructor!=null&&t.constructor.name!=null&&t.constructor.name===e.name}function ac(t){return t!==t}var TI=function(){let t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){let i=r*16;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function On(t){return typeof BigInt>"u"?OI:t}function OI(){throw new Error("BigInt not supported")}});var U,g=eI(()=>{U=fn().Buffer});var oc=P((an,$v)=>{g();var Vv=typeof self<"u"?self:an,Ys=function(){function t(){this.fetch=!1,this.DOMException=Vv.DOMException}return t.prototype=Vv,new t}();(function(t){var e=function(r){var i={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};function n(d){return d&&DataView.prototype.isPrototypeOf(d)}if(i.arrayBuffer)var a=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],o=ArrayBuffer.isView||function(d){return d&&a.indexOf(Object.prototype.toString.call(d))>-1};function c(d){if(typeof d!="string"&&(d=String(d)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(d))throw new TypeError("Invalid character in header field name");return d.toLowerCase()}function m(d){return typeof d!="string"&&(d=String(d)),d}function M(d){var b={next:function(){var E=d.shift();return{done:E===void 0,value:E}}};return i.iterable&&(b[Symbol.iterator]=function(){return b}),b}function B(d){this.map={},d instanceof B?d.forEach(function(b,E){this.append(E,b)},this):Array.isArray(d)?d.forEach(function(b){this.append(b[0],b[1])},this):d&&Object.getOwnPropertyNames(d).forEach(function(b){this.append(b,d[b])},this)}B.prototype.append=function(d,b){d=c(d),b=m(b);var E=this.map[d];this.map[d]=E?E+", "+b:b},B.prototype.delete=function(d){delete this.map[c(d)]},B.prototype.get=function(d){return d=c(d),this.has(d)?this.map[d]:null},B.prototype.has=function(d){return this.map.hasOwnProperty(c(d))},B.prototype.set=function(d,b){this.map[c(d)]=m(b)},B.prototype.forEach=function(d,b){for(var E in this.map)this.map.hasOwnProperty(E)&&d.call(b,this.map[E],E,this)},B.prototype.keys=function(){var d=[];return this.forEach(function(b,E){d.push(E)}),M(d)},B.prototype.values=function(){var d=[];return this.forEach(function(b){d.push(b)}),M(d)},B.prototype.entries=function(){var d=[];return this.forEach(function(b,E){d.push([E,b])}),M(d)},i.iterable&&(B.prototype[Symbol.iterator]=B.prototype.entries);function R(d){if(d.bodyUsed)return Promise.reject(new TypeError("Already read"));d.bodyUsed=!0}function F(d){return new Promise(function(b,E){d.onload=function(){b(d.result)},d.onerror=function(){E(d.error)}})}function N(d){var b=new FileReader,E=F(b);return b.readAsArrayBuffer(d),E}function G(d){var b=new FileReader,E=F(b);return b.readAsText(d),E}function Z(d){for(var b=new Uint8Array(d),E=new Array(b.length),p=0;p-1?b:d}function ve(d,b){b=b||{};var E=b.body;if(d instanceof ve){if(d.bodyUsed)throw new TypeError("Already read");this.url=d.url,this.credentials=d.credentials,b.headers||(this.headers=new B(d.headers)),this.method=d.method,this.mode=d.mode,this.signal=d.signal,!E&&d._bodyInit!=null&&(E=d._bodyInit,d.bodyUsed=!0)}else this.url=String(d);if(this.credentials=b.credentials||this.credentials||"same-origin",(b.headers||!this.headers)&&(this.headers=new B(b.headers)),this.method=ge(b.method||this.method||"GET"),this.mode=b.mode||this.mode||null,this.signal=b.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&E)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(E)}ve.prototype.clone=function(){return new ve(this,{body:this._bodyInit})};function Ke(d){var b=new FormData;return d.trim().split("&").forEach(function(E){if(E){var p=E.split("="),f=p.shift().replace(/\+/g," "),s=p.join("=").replace(/\+/g," ");b.append(decodeURIComponent(f),decodeURIComponent(s))}}),b}function be(d){var b=new B,E=d.replace(/\r?\n[\t ]+/g," ");return E.split(/\r?\n/).forEach(function(p){var f=p.split(":"),s=f.shift().trim();if(s){var v=f.join(":").trim();b.append(s,v)}}),b}fe.call(ve.prototype);function pe(d,b){b||(b={}),this.type="default",this.status=b.status===void 0?200:b.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in b?b.statusText:"OK",this.headers=new B(b.headers),this.url=b.url||"",this._initBody(d)}fe.call(pe.prototype),pe.prototype.clone=function(){return new pe(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new B(this.headers),url:this.url})},pe.error=function(){var d=new pe(null,{status:0,statusText:""});return d.type="error",d};var Ne=[301,302,303,307,308];pe.redirect=function(d,b){if(Ne.indexOf(b)===-1)throw new RangeError("Invalid status code");return new pe(null,{status:b,headers:{location:d}})},r.DOMException=t.DOMException;try{new r.DOMException}catch{r.DOMException=function(b,E){this.message=b,this.name=E;var p=Error(b);this.stack=p.stack},r.DOMException.prototype=Object.create(Error.prototype),r.DOMException.prototype.constructor=r.DOMException}function k(d,b){return new Promise(function(E,p){var f=new ve(d,b);if(f.signal&&f.signal.aborted)return p(new r.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function v(){s.abort()}s.onload=function(){var l={status:s.status,statusText:s.statusText,headers:be(s.getAllResponseHeaders()||"")};l.url="responseURL"in s?s.responseURL:l.headers.get("X-Request-URL");var h="response"in s?s.response:s.responseText;E(new pe(h,l))},s.onerror=function(){p(new TypeError("Network request failed"))},s.ontimeout=function(){p(new TypeError("Network request failed"))},s.onabort=function(){p(new r.DOMException("Aborted","AbortError"))},s.open(f.method,f.url,!0),f.credentials==="include"?s.withCredentials=!0:f.credentials==="omit"&&(s.withCredentials=!1),"responseType"in s&&i.blob&&(s.responseType="blob"),f.headers.forEach(function(l,h){s.setRequestHeader(h,l)}),f.signal&&(f.signal.addEventListener("abort",v),s.onreadystatechange=function(){s.readyState===4&&f.signal.removeEventListener("abort",v)}),s.send(typeof f._bodyInit>"u"?null:f._bodyInit)})}return k.polyfill=!0,t.fetch||(t.fetch=k,t.Headers=B,t.Request=ve,t.Response=pe),r.Headers=B,r.Request=ve,r.Response=pe,r.fetch=k,Object.defineProperty(r,"__esModule",{value:!0}),r}({})})(Ys);Ys.fetch.ponyfill=!0;delete Ys.fetch.polyfill;var ua=Ys;an=ua.fetch;an.default=ua.fetch;an.fetch=ua.fetch;an.Headers=ua.Headers;an.Request=ua.Request;an.Response=ua.Response;$v.exports=an});var hc=P(Zv=>{g();var Wv=Object.defineProperty,DI=t=>Wv(t,"__esModule",{value:!0}),PI=(t,e)=>{DI(t);for(var r in e)Wv(t,r,{get:e[r],enumerable:!0})};PI(Zv,{Channel:()=>Xv,LongPoll:()=>uc,Presence:()=>co,Serializer:()=>lo,Socket:()=>QI});var po=t=>typeof t=="function"?t:function(){return t},UI=typeof self<"u"?self:null,ho=typeof window<"u"?window:null,$s=UI||ho||void 0,kI="2.0.0",Ni={connecting:0,open:1,closing:2,closed:3},FI=1e4,LI=1e3,Kr={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},on={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},sc={longpoll:"longpoll",websocket:"websocket"},NI={complete:4},Vs=class{constructor(t,e,r,i){this.channel=t,this.event=e,this.payload=r||function(){return{}},this.receivedResp=null,this.timeout=i,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:t,response:e,_ref:r}){this.recHooks.filter(i=>i.status===t).forEach(i=>i.callback(e))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},Jv=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},Xv=class{constructor(t,e,r){this.state=Kr.closed,this.topic=t,this.params=po(e||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new Vs(this,on.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new Jv(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Kr.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(i=>i.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=Kr.closed,this.socket.remove(this)}),this.onError(i=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,i),this.isJoining()&&this.joinPush.reset(),this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new Vs(this,on.leave,po({}),this.timeout).send(),this.state=Kr.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(on.reply,(i,n)=>{this.trigger(this.replyEventName(n),i)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(t){this.on(on.close,t)}onError(t){return this.on(on.error,e=>t(e))}on(t,e){let r=this.bindingRef++;return this.bindings.push({event:t,ref:r,callback:e}),r}off(t,e){this.bindings=this.bindings.filter(r=>!(r.event===t&&(typeof e>"u"||e===r.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,r=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let i=new Vs(this,t,function(){return e},r);return this.canPush()?i.send():(i.startTimeout(),this.pushBuffer.push(i)),i}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Kr.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(on.close,"leave")},r=new Vs(this,on.leave,po({}),t);return r.receive("ok",()=>e()).receive("timeout",()=>e()),r.send(),this.canPush()||r.trigger("ok",{}),r}onMessage(t,e,r){return e}isMember(t,e,r,i){return this.topic!==t?!1:i&&i!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:r,joinRef:i}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Kr.joining,this.joinPush.resend(t))}trigger(t,e,r,i){let n=this.onMessage(t,e,r,i);if(e&&!n)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let a=this.bindings.filter(o=>o.event===t);for(let o=0;o{let c=this.parseJSON(t.responseText);o&&o(c)},a&&(t.ontimeout=a),t.onprogress=()=>{},t.send(i)}static xhrRequest(t,e,r,i,n,a,o,c){t.open(e,r,!0),t.timeout=a,t.setRequestHeader("Content-Type",i),t.onerror=()=>{c&&c(null)},t.onreadystatechange=()=>{if(t.readyState===NI.complete&&c){let m=this.parseJSON(t.responseText);c(m)}},o&&(t.ontimeout=o),t.send(n)}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let r=[];for(var i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;let n=e?`${e}[${i}]`:i,a=t[i];typeof a=="object"?r.push(this.serialize(a,n)):r.push(encodeURIComponent(n)+"="+encodeURIComponent(a))}return r.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let r=t.match(/\?/)?"&":"?";return`${t}${r}${this.serialize(e)}`}},uc=class{constructor(t){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=Ni.connecting,this.poll()}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+sc.websocket),"$1/"+sc.longpoll)}endpointURL(){return vo.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(){this.close(),this.readyState=Ni.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry()}poll(){(this.readyState===Ni.open||this.readyState===Ni.connecting)&&vo.request("GET",this.endpointURL(),"application/json",null,this.timeout,this.ontimeout.bind(this),t=>{if(t){var{status:e,token:r,messages:i}=t;this.token=r}else e=0;switch(e){case 200:i.forEach(n=>{setTimeout(()=>{this.onmessage({data:n})},0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Ni.open,this.onopen(),this.poll();break;case 403:this.onerror(),this.close();break;case 0:case 500:this.onerror(),this.closeAndRetry();break;default:throw new Error(`unhandled poll status ${e}`)}})}send(t){vo.request("POST",this.endpointURL(),"application/json",t,this.timeout,this.onerror.bind(this,"timeout"),e=>{(!e||e.status!==200)&&(this.onerror(e&&e.status),this.closeAndRetry())})}close(t,e){this.readyState=Ni.closed,this.onclose()}},co=class{constructor(t,e={}){let r=e.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(r.state,i=>{let{onJoin:n,onLeave:a,onSync:o}=this.caller;this.joinRef=this.channel.joinRef(),this.state=co.syncState(this.state,i,n,a),this.pendingDiffs.forEach(c=>{this.state=co.syncDiff(this.state,c,n,a)}),this.pendingDiffs=[],o()}),this.channel.on(r.diff,i=>{let{onJoin:n,onLeave:a,onSync:o}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(i):(this.state=co.syncDiff(this.state,i,n,a),o())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return co.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,e,r,i){let n=this.clone(t),a={},o={};return this.map(n,(c,m)=>{e[c]||(o[c]=m)}),this.map(e,(c,m)=>{let M=n[c];if(M){let B=m.metas.map(G=>G.phx_ref),R=M.metas.map(G=>G.phx_ref),F=m.metas.filter(G=>R.indexOf(G.phx_ref)<0),N=M.metas.filter(G=>B.indexOf(G.phx_ref)<0);F.length>0&&(a[c]=m,a[c].metas=F),N.length>0&&(o[c]=this.clone(M),o[c].metas=N)}else a[c]=m}),this.syncDiff(n,{joins:a,leaves:o},r,i)}static syncDiff(t,e,r,i){let{joins:n,leaves:a}=this.clone(e);return r||(r=function(){}),i||(i=function(){}),this.map(n,(o,c)=>{let m=t[o];if(t[o]=this.clone(c),m){let M=t[o].metas.map(R=>R.phx_ref),B=m.metas.filter(R=>M.indexOf(R.phx_ref)<0);t[o].metas.unshift(...B)}r(o,m,c)}),this.map(a,(o,c)=>{let m=t[o];if(!m)return;let M=c.metas.map(B=>B.phx_ref);m.metas=m.metas.filter(B=>M.indexOf(B.phx_ref)<0),i(o,m,c),m.metas.length===0&&delete t[o]}),t}static list(t,e){return e||(e=function(r,i){return i}),this.map(t,(r,i)=>e(r,i))}static map(t,e){return Object.getOwnPropertyNames(t).map(r=>e(r,t[r]))}static clone(t){return JSON.parse(JSON.stringify(t))}},lo={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let r=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(r))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[r,i,n,a,o]=JSON.parse(t);return e({join_ref:r,ref:i,topic:n,event:a,payload:o})}},binaryEncode(t){let{join_ref:e,ref:r,event:i,topic:n,payload:a}=t,o=this.META_LENGTH+e.length+r.length+n.length+i.length,c=new ArrayBuffer(this.HEADER_LENGTH+o),m=new DataView(c),M=0;m.setUint8(M++,this.KINDS.push),m.setUint8(M++,e.length),m.setUint8(M++,r.length),m.setUint8(M++,n.length),m.setUint8(M++,i.length),Array.from(e,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(r,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(n,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(i,R=>m.setUint8(M++,R.charCodeAt(0)));var B=new Uint8Array(c.byteLength+a.byteLength);return B.set(new Uint8Array(c),0),B.set(new Uint8Array(a),c.byteLength),B.buffer},binaryDecode(t){let e=new DataView(t),r=e.getUint8(0),i=new TextDecoder;switch(r){case this.KINDS.push:return this.decodePush(t,e,i);case this.KINDS.reply:return this.decodeReply(t,e,i);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,i)}},decodePush(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=e.getUint8(3),o=this.HEADER_LENGTH+this.META_LENGTH-1,c=r.decode(t.slice(o,o+i));o=o+i;let m=r.decode(t.slice(o,o+n));o=o+n;let M=r.decode(t.slice(o,o+a));o=o+a;let B=t.slice(o,t.byteLength);return{join_ref:c,ref:null,topic:m,event:M,payload:B}},decodeReply(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=e.getUint8(3),o=e.getUint8(4),c=this.HEADER_LENGTH+this.META_LENGTH,m=r.decode(t.slice(c,c+i));c=c+i;let M=r.decode(t.slice(c,c+n));c=c+n;let B=r.decode(t.slice(c,c+a));c=c+a;let R=r.decode(t.slice(c,c+o));c=c+o;let F=t.slice(c,t.byteLength),N={status:R,response:F};return{join_ref:m,ref:M,topic:B,event:on.reply,payload:N}},decodeBroadcast(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=this.HEADER_LENGTH+2,o=r.decode(t.slice(a,a+i));a=a+i;let c=r.decode(t.slice(a,a+n));a=a+n;let m=t.slice(a,t.byteLength);return{join_ref:null,ref:null,topic:o,event:c,payload:m}}},QI=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=e.timeout||FI,this.transport=e.transport||$s.WebSocket||uc,this.establishedConnections=0,this.defaultEncoder=lo.encode.bind(lo),this.defaultDecoder=lo.decode.bind(lo),this.closeWasClean=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.transport!==uc?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let r=null;ho&&ho.addEventListener&&(ho.addEventListener("pagehide",i=>{this.conn&&(this.disconnect(),r=this.connectClock)}),ho.addEventListener("pageshow",i=>{r===this.connectClock&&(r=null,this.connect())})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.rejoinAfterMs=i=>e.rejoinAfterMs?e.rejoinAfterMs(i):[1e3,2e3,5e3][i-1]||1e4,this.reconnectAfterMs=i=>e.reconnectAfterMs?e.reconnectAfterMs(i):[10,50,100,150,200,250,500,1e3,2e3][i-1]||5e3,this.logger=e.logger||null,this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=po(e.params||{}),this.endPoint=`${t}/${sc.websocket}`,this.vsn=e.vsn||kI,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new Jv(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}replaceTransport(t){this.disconnect(),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=vo.appendParams(vo.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,r){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(t,e,r)}connect(t){this.connectClock++,t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=po(t)),!this.conn&&(this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(t,e,r){this.logger(t,e,r)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,t])=>t())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.abnormalClose("heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,clearTimeout(this.heartbeatTimer),setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,r){if(!this.conn)return t&&t();this.waitForBufferDone(()=>{this.conn&&(e?this.conn.close(e,r||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e=1){if(e===5||!this.conn||!this.conn.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(t,e+1)},150*e)}waitForSocketClosed(t,e=1){if(e===5||!this.conn||this.conn.readyState===Ni.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(t,e+1)},150*e)}onConnClose(t){let e=t&&t.code;this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(),clearTimeout(this.heartbeatTimer),!this.closeWasClean&&e!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,r])=>r(t))}onConnError(t){this.hasLogger()&&this.log("transport",t);let e=this.transport,r=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,i])=>{i(t,e,r)}),(e===this.transport||r>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(on.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case Ni.connecting:return"connecting";case Ni.open:return"open";case Ni.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e.joinRef()!==t.joinRef())}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([r])=>t.indexOf(r)===-1)}channel(t,e={}){let r=new Xv(t,e,this);return this.channels.push(r),r}push(t){if(this.hasLogger()){let{topic:e,event:r,payload:i,ref:n,join_ref:a}=t;this.log("push",`${e} ${r} (${a}, ${n})`,i)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}abnormalClose(t){this.closeWasClean=!1,this.isConnected()&&this.conn.close(LI,t)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:r,event:i,payload:n,ref:a,join_ref:o}=e;a&&a===this.pendingHeartbeatRef&&(clearTimeout(this.heartbeatTimer),this.pendingHeartbeatRef=null,setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${n.status||""} ${r} ${i} ${a&&"("+a+")"||""}`,n);for(let c=0;cr.topic===t&&(r.isJoined()||r.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}}});var t2=P((zj,e2)=>{g();var ha=null;typeof WebSocket<"u"?ha=WebSocket:typeof MozWebSocket<"u"?ha=MozWebSocket:typeof global<"u"?ha=global.WebSocket||global.MozWebSocket:typeof window<"u"?ha=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(ha=self.WebSocket||self.MozWebSocket);e2.exports=ha});var Dn=P((Yj,r2)=>{g();var KI=r2.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=KI)});var Ws=P(($j,i2)=>{g();var jI=i2.exports={version:"2.6.0"};typeof __e=="number"&&(__e=jI)});var vf=P((Jj,n2)=>{g();n2.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var ca=P((Zj,f2)=>{g();var HI=vf();f2.exports=function(t){if(!HI(t))throw TypeError(t+" is not an object!");return t}});var bo=P((tH,a2)=>{g();a2.exports=function(t){try{return!!t()}catch{return!0}}});var da=P((iH,o2)=>{g();o2.exports=!bo()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var dc=P((fH,u2)=>{g();var s2=vf(),cc=Dn().document,zI=s2(cc)&&s2(cc.createElement);u2.exports=function(t){return zI?cc.createElement(t):{}}});var c2=P((oH,h2)=>{g();h2.exports=!da()&&!bo()(function(){return Object.defineProperty(dc()("div"),"a",{get:function(){return 7}}).a!=7})});var l2=P((uH,d2)=>{g();var Js=vf();d2.exports=function(t,e){if(!Js(t))return t;var r,i;if(e&&typeof(r=t.toString)=="function"&&!Js(i=r.call(t))||typeof(r=t.valueOf)=="function"&&!Js(i=r.call(t))||!e&&typeof(r=t.toString)=="function"&&!Js(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}});var go=P(v2=>{g();var p2=ca(),GI=c2(),YI=l2(),VI=Object.defineProperty;v2.f=da()?Object.defineProperty:function(e,r,i){if(p2(e),r=YI(r,!0),p2(i),GI)try{return VI(e,r,i)}catch{}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[r]=i.value),e}});var lc=P((lH,b2)=>{g();b2.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var Pn=P((vH,g2)=>{g();var $I=go(),WI=lc();g2.exports=da()?function(t,e,r){return $I.f(t,e,WI(1,r))}:function(t,e,r){return t[e]=r,t}});var yo=P((gH,y2)=>{g();var JI={}.hasOwnProperty;y2.exports=function(t,e){return JI.call(t,e)}});var Xs=P((mH,m2)=>{g();var XI=0,ZI=Math.random();m2.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++XI+ZI).toString(36))}});var mo=P((wH,w2)=>{g();var eE=Dn(),Zs=Pn(),x2=yo(),pc=Xs()("src"),vc="toString",bc=Function[vc],tE=(""+bc).split(vc);Ws().inspectSource=function(t){return bc.call(t)};(w2.exports=function(t,e,r,i){var n=typeof r=="function";n&&(x2(r,"name")||Zs(r,"name",e)),t[e]!==r&&(n&&(x2(r,pc)||Zs(r,pc,t[e]?""+t[e]:tE.join(String(e)))),t===eE?t[e]=r:i?t[e]?t[e]=r:Zs(t,e,r):(delete t[e],Zs(t,e,r)))})(Function.prototype,vc,function(){return typeof this=="function"&&this[pc]||bc.call(this)})});var gc=P((_H,A2)=>{g();A2.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var yc=P((EH,_2)=>{g();var rE=gc();_2.exports=function(t,e,r){if(rE(t),e===void 0)return t;switch(r){case 1:return function(i){return t.call(e,i)};case 2:return function(i,n){return t.call(e,i,n)};case 3:return function(i,n,a){return t.call(e,i,n,a)}}return function(){return t.apply(e,arguments)}}});var Jr=P((SH,E2)=>{g();var la=Dn(),e0=Ws(),iE=Pn(),nE=mo(),I2=yc(),mc="prototype",qr=function(t,e,r){var i=t&qr.F,n=t&qr.G,a=t&qr.S,o=t&qr.P,c=t&qr.B,m=n?la:a?la[e]||(la[e]={}):(la[e]||{})[mc],M=n?e0:e0[e]||(e0[e]={}),B=M[mc]||(M[mc]={}),R,F,N,G;n&&(r=e);for(R in r)F=!i&&m&&m[R]!==void 0,N=(F?m:r)[R],G=c&&F?I2(N,la):o&&typeof N=="function"?I2(Function.call,N):N,m&&nE(m,R,N,t&qr.U),M[R]!=N&&iE(M,R,G),o&&B[R]!=N&&(B[R]=N)};la.core=e0;qr.F=1;qr.G=2;qr.S=4;qr.P=8;qr.B=16;qr.W=32;qr.U=64;qr.R=128;E2.exports=qr});var xo=P((BH,M2)=>{g();var fE={}.toString;M2.exports=function(t){return fE.call(t).slice(8,-1)}});var xc=P((RH,S2)=>{g();var aE=xo();S2.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return aE(t)=="String"?t.split(""):Object(t)}});var pa=P((OH,C2)=>{g();C2.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var wc=P((PH,B2)=>{g();var oE=pa();B2.exports=function(t){return Object(oE(t))}});var t0=P((kH,q2)=>{g();var sE=Math.ceil,uE=Math.floor;q2.exports=function(t){return isNaN(t=+t)?0:(t>0?uE:sE)(t)}});var r0=P((LH,R2)=>{g();var hE=t0(),cE=Math.min;R2.exports=function(t){return t>0?cE(hE(t),9007199254740991):0}});var O2=P((QH,T2)=>{g();var dE=xo();T2.exports=Array.isArray||function(e){return dE(e)=="Array"}});var Ac=P((jH,D2)=>{g();D2.exports=!1});var _c=P((zH,F2)=>{g();var lE=Ws(),P2=Dn(),U2="__core-js_shared__",k2=P2[U2]||(P2[U2]={});(F2.exports=function(t,e){return k2[t]||(k2[t]=e!==void 0?e:{})})("versions",[]).push({version:lE.version,mode:Ac()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var gi=P((YH,N2)=>{g();var Ic=_c()("wks"),pE=Xs(),Ec=Dn().Symbol,L2=typeof Ec=="function",vE=N2.exports=function(t){return Ic[t]||(Ic[t]=L2&&Ec[t]||(L2?Ec:pE)("Symbol."+t))};vE.store=Ic});var j2=P(($H,K2)=>{g();var bE=vf(),Q2=O2(),gE=gi()("species");K2.exports=function(t){var e;return Q2(t)&&(e=t.constructor,typeof e=="function"&&(e===Array||Q2(e.prototype))&&(e=void 0),bE(e)&&(e=e[gE],e===null&&(e=void 0))),e===void 0?Array:e}});var z2=P((JH,H2)=>{g();var yE=j2();H2.exports=function(t,e){return new(yE(t))(e)}});var va=P((ZH,G2)=>{g();var mE=yc(),xE=xc(),wE=wc(),AE=r0(),_E=z2();G2.exports=function(t,e){var r=t==1,i=t==2,n=t==3,a=t==4,o=t==6,c=t==5||o,m=e||_E;return function(M,B,R){for(var F=wE(M),N=xE(F),G=mE(B,R,3),Z=AE(N.length),ie=0,fe=r?m(M,Z):i?m(M,0):void 0,ce,ge;Z>ie;ie++)if((c||ie in N)&&(ce=N[ie],ge=G(ce,ie,F),t)){if(r)fe[ie]=ge;else if(ge)switch(t){case 3:return!0;case 5:return ce;case 6:return ie;case 2:fe.push(ce)}else if(a)return!1}return o?-1:n||a?a:fe}}});var wo=P((tz,Y2)=>{g();var Mc=gi()("unscopables"),Sc=Array.prototype;Sc[Mc]==null&&Pn()(Sc,Mc,{});Y2.exports=function(t){Sc[Mc][t]=!0}});var $2=P(()=>{"use strict";g();var Cc=Jr(),IE=va()(6),Bc="findIndex",V2=!0;Bc in[]&&Array(1)[Bc](function(){V2=!1});Cc(Cc.P+Cc.F*V2,"Array",{findIndex:function(e){return IE(this,e,arguments.length>1?arguments[1]:void 0)}});wo()(Bc)});var J2=P(()=>{"use strict";g();var qc=Jr(),EE=va()(5),Rc="find",W2=!0;Rc in[]&&Array(1)[Rc](function(){W2=!1});qc(qc.P+qc.F*W2,"Array",{find:function(e){return EE(this,e,arguments.length>1?arguments[1]:void 0)}});wo()(Rc)});var eb=P(()=>{g();var ME=go().f,X2=Function.prototype,SE=/^\s*function ([^ (]*)/,Z2="name";Z2 in X2||da()&&ME(X2,Z2,{configurable:!0,get:function(){try{return(""+this).match(SE)[1]}catch{return""}}})});var Oc=P(Tc=>{"use strict";g();Tc.__esModule=!0;Tc.default=function(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}});var rb=P(Un=>{"use strict";g();Object.defineProperty(Un,"__esModule",{value:!0});Un.flip=CE;Un.constant=BE;Un.on=qE;Un.compose=RE;Un.pipe=TE;Un.curry=OE;function CE(t){return function(e,r){return t(r,e)}}function BE(t){return function(){return t}}function qE(t,e){return function(r,i){return t(e(r),e(i))}}function RE(){for(var t=this,e=arguments.length,r=Array(e),i=0;i-1;c--)o=r[c].call(t,o);return o}}function TE(){for(var t=this,e=arguments.length,r=Array(e),i=0;i=e?t.apply(this,i):tb(t,e,i)}}function OE(t){return tb(t,t.length,[])}});var i0=P((bz,ib)=>{g();var DE=Math.ceil,PE=Math.floor;ib.exports=function(t){return isNaN(t=+t)?0:(t>0?PE:DE)(t)}});var n0=P((yz,nb)=>{g();nb.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var ab=P((xz,fb)=>{g();var UE=i0(),kE=n0();fb.exports=function(t){return function(e,r){var i=String(kE(e)),n=UE(r),a=i.length,o,c;return n<0||n>=a?t?"":void 0:(o=i.charCodeAt(n),o<55296||o>56319||n+1===a||(c=i.charCodeAt(n+1))<56320||c>57343?t?i.charAt(n):o:t?i.slice(n,n+2):(o-55296<<10)+(c-56320)+65536)}}});var Ao=P((Az,ob)=>{g();ob.exports=!0});var sn=P((Iz,sb)=>{g();var FE=sb.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=FE)});var Rr=P((Mz,ub)=>{g();var LE=ub.exports={version:"2.6.0"};typeof __e=="number"&&(__e=LE)});var cb=P((Cz,hb)=>{g();hb.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var Dc=P((qz,db)=>{g();var NE=cb();db.exports=function(t,e,r){if(NE(t),e===void 0)return t;switch(r){case 1:return function(i){return t.call(e,i)};case 2:return function(i,n){return t.call(e,i,n)};case 3:return function(i,n,a){return t.call(e,i,n,a)}}return function(){return t.apply(e,arguments)}}});var bf=P((Tz,lb)=>{g();lb.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var gf=P((Dz,pb)=>{g();var QE=bf();pb.exports=function(t){if(!QE(t))throw TypeError(t+" is not an object!");return t}});var yf=P((Uz,vb)=>{g();vb.exports=function(t){try{return!!t()}catch{return!0}}});var kn=P((Fz,bb)=>{g();bb.exports=!yf()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Uc=P((Nz,yb)=>{g();var gb=bf(),Pc=sn().document,KE=gb(Pc)&&gb(Pc.createElement);yb.exports=function(t){return KE?Pc.createElement(t):{}}});var kc=P((Kz,mb)=>{g();mb.exports=!kn()&&!yf()(function(){return Object.defineProperty(Uc()("div"),"a",{get:function(){return 7}}).a!=7})});var a0=P((Hz,xb)=>{g();var f0=bf();xb.exports=function(t,e){if(!f0(t))return t;var r,i;if(e&&typeof(r=t.toString)=="function"&&!f0(i=r.call(t))||typeof(r=t.valueOf)=="function"&&!f0(i=r.call(t))||!e&&typeof(r=t.toString)=="function"&&!f0(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}});var un=P(Ab=>{g();var wb=gf(),jE=kc(),HE=a0(),zE=Object.defineProperty;Ab.f=kn()?Object.defineProperty:function(e,r,i){if(wb(e),r=HE(r,!0),wb(i),jE)try{return zE(e,r,i)}catch{}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[r]=i.value),e}});var ba=P((Vz,_b)=>{g();_b.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var mf=P((Wz,Ib)=>{g();var GE=un(),YE=ba();Ib.exports=kn()?function(t,e,r){return GE.f(t,e,YE(1,r))}:function(t,e,r){return t[e]=r,t}});var Fn=P((Xz,Eb)=>{g();var VE={}.hasOwnProperty;Eb.exports=function(t,e){return VE.call(t,e)}});var hn=P((eG,Sb)=>{g();var o0=sn(),Fc=Rr(),Mb=Dc(),$E=mf(),WE=Fn(),s0="prototype",Ar=function(t,e,r){var i=t&Ar.F,n=t&Ar.G,a=t&Ar.S,o=t&Ar.P,c=t&Ar.B,m=t&Ar.W,M=n?Fc:Fc[e]||(Fc[e]={}),B=M[s0],R=n?o0:a?o0[e]:(o0[e]||{})[s0],F,N,G;n&&(r=e);for(F in r)N=!i&&R&&R[F]!==void 0,!(N&&WE(M,F))&&(G=N?R[F]:r[F],M[F]=n&&typeof R[F]!="function"?r[F]:c&&N?Mb(G,o0):m&&R[F]==G?function(Z){var ie=function(fe,ce,ge){if(this instanceof Z){switch(arguments.length){case 0:return new Z;case 1:return new Z(fe);case 2:return new Z(fe,ce)}return new Z(fe,ce,ge)}return Z.apply(this,arguments)};return ie[s0]=Z[s0],ie}(G):o&&typeof G=="function"?Mb(Function.call,G):G,o&&((M.virtual||(M.virtual={}))[F]=G,t&Ar.R&&B&&!B[F]&&$E(B,F,G)))};Ar.F=1;Ar.G=2;Ar.S=4;Ar.P=8;Ar.B=16;Ar.W=32;Ar.U=64;Ar.R=128;Sb.exports=Ar});var Lc=P((rG,Cb)=>{g();Cb.exports=mf()});var xf=P((nG,Bb)=>{g();Bb.exports={}});var u0=P((aG,qb)=>{g();var JE={}.toString;qb.exports=function(t){return JE.call(t).slice(8,-1)}});var Nc=P((sG,Rb)=>{g();var XE=u0();Rb.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return XE(t)=="String"?t.split(""):Object(t)}});var Ln=P((hG,Tb)=>{g();var ZE=Nc(),eM=n0();Tb.exports=function(t){return ZE(eM(t))}});var Qc=P((dG,Ob)=>{g();var tM=i0(),rM=Math.min;Ob.exports=function(t){return t>0?rM(tM(t),9007199254740991):0}});var Pb=P((pG,Db)=>{g();var iM=i0(),nM=Math.max,fM=Math.min;Db.exports=function(t,e){return t=iM(t),t<0?nM(t+e,0):fM(t,e)}});var kb=P((bG,Ub)=>{g();var aM=Ln(),oM=Qc(),sM=Pb();Ub.exports=function(t){return function(e,r,i){var n=aM(e),a=oM(n.length),o=sM(i,a),c;if(t&&r!=r){for(;a>o;)if(c=n[o++],c!=c)return!0}else for(;a>o;o++)if((t||o in n)&&n[o]===r)return t||o||0;return!t&&-1}}});var h0=P((yG,Qb)=>{g();var uM=Rr(),Fb=sn(),Lb="__core-js_shared__",Nb=Fb[Lb]||(Fb[Lb]={});(Qb.exports=function(t,e){return Nb[t]||(Nb[t]=e!==void 0?e:{})})("versions",[]).push({version:uM.version,mode:Ao()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var _o=P((xG,Kb)=>{g();var hM=0,cM=Math.random();Kb.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++hM+cM).toString(36))}});var c0=P((AG,Hb)=>{g();var jb=h0()("keys"),dM=_o();Hb.exports=function(t){return jb[t]||(jb[t]=dM(t))}});var Kc=P((IG,Gb)=>{g();var zb=Fn(),lM=Ln(),pM=kb()(!1),vM=c0()("IE_PROTO");Gb.exports=function(t,e){var r=lM(t),i=0,n=[],a;for(a in r)a!=vM&&zb(r,a)&&n.push(a);for(;e.length>i;)zb(r,a=e[i++])&&(~pM(n,a)||n.push(a));return n}});var d0=P((MG,Yb)=>{g();Yb.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var wf=P((CG,Vb)=>{g();var bM=Kc(),gM=d0();Vb.exports=Object.keys||function(e){return bM(e,gM)}});var Wb=P((qG,$b)=>{g();var yM=un(),mM=gf(),xM=wf();$b.exports=kn()?Object.defineProperties:function(e,r){mM(e);for(var i=xM(r),n=i.length,a=0,o;n>a;)yM.f(e,o=i[a++],r[o]);return e}});var Zb=P((TG,Xb)=>{g();var Jb=sn().document;Xb.exports=Jb&&Jb.documentElement});var zc=P((DG,t6)=>{g();var wM=gf(),AM=Wb(),e6=d0(),_M=c0()("IE_PROTO"),jc=function(){},Hc="prototype",l0=function(){var t=Uc()("iframe"),e=e6.length,r="<",i=">",n;for(t.style.display="none",Zb().appendChild(t),t.src="javascript:",n=t.contentWindow.document,n.open(),n.write(r+"script"+i+"document.F=Object"+r+"/script"+i),n.close(),l0=n.F;e--;)delete l0[Hc][e6[e]];return l0()};t6.exports=Object.create||function(e,r){var i;return e!==null?(jc[Hc]=wM(e),i=new jc,jc[Hc]=null,i[_M]=e):i=l0(),r===void 0?i:AM(i,r)}});var Xr=P((UG,i6)=>{g();var Gc=h0()("wks"),IM=_o(),Yc=sn().Symbol,r6=typeof Yc=="function",EM=i6.exports=function(t){return Gc[t]||(Gc[t]=r6&&Yc[t]||(r6?Yc:IM)("Symbol."+t))};EM.store=Gc});var p0=P((FG,f6)=>{g();var MM=un().f,SM=Fn(),n6=Xr()("toStringTag");f6.exports=function(t,e,r){t&&!SM(t=r?t:t.prototype,n6)&&MM(t,n6,{configurable:!0,value:e})}});var s6=P((NG,o6)=>{"use strict";g();var CM=zc(),BM=ba(),qM=p0(),a6={};mf()(a6,Xr()("iterator"),function(){return this});o6.exports=function(t,e,r){t.prototype=CM(a6,{next:BM(1,r)}),qM(t,e+" Iterator")}});var Io=P((KG,u6)=>{g();var RM=n0();u6.exports=function(t){return Object(RM(t))}});var d6=P((HG,c6)=>{g();var TM=Fn(),OM=Io(),h6=c0()("IE_PROTO"),DM=Object.prototype;c6.exports=Object.getPrototypeOf||function(t){return t=OM(t),TM(t,h6)?t[h6]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?DM:null}});var Wc=P((GG,y6)=>{"use strict";g();var l6=Ao(),Vc=hn(),PM=Lc(),p6=mf(),v6=xf(),UM=s6(),kM=p0(),FM=d6(),Eo=Xr()("iterator"),$c=!([].keys&&"next"in[].keys()),LM="@@iterator",b6="keys",v0="values",g6=function(){return this};y6.exports=function(t,e,r,i,n,a,o){UM(r,e,i);var c=function(ge){if(!$c&&ge in R)return R[ge];switch(ge){case b6:return function(){return new r(this,ge)};case v0:return function(){return new r(this,ge)}}return function(){return new r(this,ge)}},m=e+" Iterator",M=n==v0,B=!1,R=t.prototype,F=R[Eo]||R[LM]||n&&R[n],N=F||c(n),G=n?M?c("entries"):N:void 0,Z=e=="Array"&&R.entries||F,ie,fe,ce;if(Z&&(ce=FM(Z.call(new t)),ce!==Object.prototype&&ce.next&&(kM(ce,m,!0),!l6&&typeof ce[Eo]!="function"&&p6(ce,Eo,g6))),M&&F&&F.name!==v0&&(B=!0,N=function(){return F.call(this)}),(!l6||o)&&($c||B||!R[Eo])&&p6(R,Eo,N),v6[e]=N,v6[m]=g6,n)if(ie={values:M?N:c(v0),keys:a?N:c(b6),entries:G},o)for(fe in ie)fe in R||PM(R,fe,ie[fe]);else Vc(Vc.P+Vc.F*($c||B),e,ie);return ie}});var Mo=P(()=>{"use strict";g();var NM=ab()(!0);Wc()(String,"String",function(t){this._t=String(t),this._i=0},function(){var t=this._t,e=this._i,r;return e>=t.length?{value:void 0,done:!0}:(r=NM(t,e),this._i+=r.length,{value:r,done:!1})})});var x6=P((JG,m6)=>{g();m6.exports=function(){}});var A6=P((ZG,w6)=>{g();w6.exports=function(t,e){return{value:e,done:!!t}}});var E6=P((tY,I6)=>{"use strict";g();var Jc=x6(),b0=A6(),_6=xf(),QM=Ln();I6.exports=Wc()(Array,"Array",function(t,e){this._t=QM(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,b0(1)):e=="keys"?b0(0,r):e=="values"?b0(0,t[r]):b0(0,[r,t[r]])},"values");_6.Arguments=_6.Array;Jc("keys");Jc("values");Jc("entries")});var x0=P(()=>{g();E6();var KM=sn(),jM=mf(),M6=xf(),S6=Xr()("toStringTag"),C6="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(g0=0;g0{g();B6.f=Xr()});var R6=P((sY,q6)=>{g();Mo();x0();q6.exports=w0().f("iterator")});var O6=P((hY,T6)=>{g();T6.exports={default:R6(),__esModule:!0}});var P6=P((dY,D6)=>{g();var Af=_o()("meta"),HM=bf(),Zc=Fn(),zM=un().f,GM=0,A0=Object.isExtensible||function(){return!0},YM=!yf()(function(){return A0(Object.preventExtensions({}))}),ed=function(t){zM(t,Af,{value:{i:"O"+ ++GM,w:{}}})},VM=function(t,e){if(!HM(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!Zc(t,Af)){if(!A0(t))return"F";if(!e)return"E";ed(t)}return t[Af].i},$M=function(t,e){if(!Zc(t,Af)){if(!A0(t))return!0;if(!e)return!1;ed(t)}return t[Af].w},WM=function(t){return YM&&JM.NEED&&A0(t)&&!Zc(t,Af)&&ed(t),t},JM=D6.exports={KEY:Af,NEED:!1,fastKey:VM,getWeak:$M,onFreeze:WM}});var _0=P((pY,k6)=>{g();var XM=sn(),U6=Rr(),ZM=Ao(),eS=w0(),tS=un().f;k6.exports=function(t){var e=U6.Symbol||(U6.Symbol=ZM?{}:XM.Symbol||{});t.charAt(0)!="_"&&!(t in e)&&tS(e,t,{value:eS.f(t)})}});var I0=P(F6=>{g();F6.f=Object.getOwnPropertySymbols});var ga=P(L6=>{g();L6.f={}.propertyIsEnumerable});var Q6=P((xY,N6)=>{g();var rS=wf(),iS=I0(),nS=ga();N6.exports=function(t){var e=rS(t),r=iS.f;if(r)for(var i=r(t),n=nS.f,a=0,o;i.length>a;)n.call(t,o=i[a++])&&e.push(o);return e}});var j6=P((AY,K6)=>{g();var fS=u0();K6.exports=Array.isArray||function(e){return fS(e)=="Array"}});var td=P(H6=>{g();var aS=Kc(),oS=d0().concat("length","prototype");H6.f=Object.getOwnPropertyNames||function(e){return aS(e,oS)}});var V6=P((MY,Y6)=>{g();var sS=Ln(),z6=td().f,uS={}.toString,G6=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],hS=function(t){try{return z6(t)}catch{return G6.slice()}};Y6.exports.f=function(e){return G6&&uS.call(e)=="[object Window]"?hS(e):z6(sS(e))}});var J6=P(W6=>{g();var cS=ga(),dS=ba(),lS=Ln(),pS=a0(),vS=Fn(),bS=kc(),$6=Object.getOwnPropertyDescriptor;W6.f=kn()?$6:function(e,r){if(e=lS(e),r=pS(r,!0),bS)try{return $6(e,r)}catch{}if(vS(e,r))return dS(!cS.f.call(e,r),e[r])}});var d3=P(()=>{"use strict";g();var S0=sn(),hr=Fn(),od=kn(),jr=hn(),X6=Lc(),gS=P6().KEY,r3=yf(),ld=h0(),pd=p0(),yS=_o(),Bo=Xr(),mS=w0(),xS=_0(),wS=Q6(),AS=j6(),sd=gf(),_S=bf(),C0=Ln(),vd=a0(),ud=ba(),Co=zc(),i3=V6(),n3=J6(),f3=un(),IS=wf(),a3=n3.f,_f=f3.f,o3=i3.f,Pr=S0.Symbol,M0=S0.JSON,E0=M0&&M0.stringify,Nn="prototype",Dr=Bo("_hidden"),Z6=Bo("toPrimitive"),ES={}.propertyIsEnumerable,So=ld("symbol-registry"),cn=ld("symbols"),qo=ld("op-symbols"),Zr=Object[Nn],ya=typeof Pr=="function",rd=S0.QObject,hd=!rd||!rd[Nn]||!rd[Nn].findChild,cd=od&&r3(function(){return Co(_f({},"a",{get:function(){return _f(this,"a",{value:7}).a}})).a!=7})?function(t,e,r){var i=a3(Zr,e);i&&delete Zr[e],_f(t,e,r),i&&t!==Zr&&_f(Zr,e,i)}:_f,e3=function(t){var e=cn[t]=Co(Pr[Nn]);return e._k=t,e},dd=ya&&typeof Pr.iterator=="symbol"?function(t){return typeof t=="symbol"}:function(t){return t instanceof Pr},B0=function(e,r,i){return e===Zr&&B0(qo,r,i),sd(e),r=vd(r,!0),sd(i),hr(cn,r)?(i.enumerable?(hr(e,Dr)&&e[Dr][r]&&(e[Dr][r]=!1),i=Co(i,{enumerable:ud(0,!1)})):(hr(e,Dr)||_f(e,Dr,ud(1,{})),e[Dr][r]=!0),cd(e,r,i)):_f(e,r,i)},s3=function(e,r){sd(e);for(var i=wS(r=C0(r)),n=0,a=i.length,o;a>n;)B0(e,o=i[n++],r[o]);return e},MS=function(e,r){return r===void 0?Co(e):s3(Co(e),r)},t3=function(e){var r=ES.call(this,e=vd(e,!0));return this===Zr&&hr(cn,e)&&!hr(qo,e)?!1:r||!hr(this,e)||!hr(cn,e)||hr(this,Dr)&&this[Dr][e]?r:!0},u3=function(e,r){if(e=C0(e),r=vd(r,!0),!(e===Zr&&hr(cn,r)&&!hr(qo,r))){var i=a3(e,r);return i&&hr(cn,r)&&!(hr(e,Dr)&&e[Dr][r])&&(i.enumerable=!0),i}},h3=function(e){for(var r=o3(C0(e)),i=[],n=0,a;r.length>n;)!hr(cn,a=r[n++])&&a!=Dr&&a!=gS&&i.push(a);return i},c3=function(e){for(var r=e===Zr,i=o3(r?qo:C0(e)),n=[],a=0,o;i.length>a;)hr(cn,o=i[a++])&&(r?hr(Zr,o):!0)&&n.push(cn[o]);return n};ya||(Pr=function(){if(this instanceof Pr)throw TypeError("Symbol is not a constructor!");var e=yS(arguments.length>0?arguments[0]:void 0),r=function(i){this===Zr&&r.call(qo,i),hr(this,Dr)&&hr(this[Dr],e)&&(this[Dr][e]=!1),cd(this,e,ud(1,i))};return od&&hd&&cd(Zr,e,{configurable:!0,set:r}),e3(e)},X6(Pr[Nn],"toString",function(){return this._k}),n3.f=u3,f3.f=B0,td().f=i3.f=h3,ga().f=t3,I0().f=c3,od&&!Ao()&&X6(Zr,"propertyIsEnumerable",t3,!0),mS.f=function(t){return e3(Bo(t))});jr(jr.G+jr.W+jr.F*!ya,{Symbol:Pr});for(id="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nd=0;id.length>nd;)Bo(id[nd++]);var id,nd;for(fd=IS(Bo.store),ad=0;fd.length>ad;)xS(fd[ad++]);var fd,ad;jr(jr.S+jr.F*!ya,"Symbol",{for:function(t){return hr(So,t+="")?So[t]:So[t]=Pr(t)},keyFor:function(e){if(!dd(e))throw TypeError(e+" is not a symbol!");for(var r in So)if(So[r]===e)return r},useSetter:function(){hd=!0},useSimple:function(){hd=!1}});jr(jr.S+jr.F*!ya,"Object",{create:MS,defineProperty:B0,defineProperties:s3,getOwnPropertyDescriptor:u3,getOwnPropertyNames:h3,getOwnPropertySymbols:c3});M0&&jr(jr.S+jr.F*(!ya||r3(function(){var t=Pr();return E0([t])!="[null]"||E0({a:t})!="{}"||E0(Object(t))!="{}"})),"JSON",{stringify:function(e){for(var r=[e],i=1,n,a;arguments.length>i;)r.push(arguments[i++]);if(a=n=r[1],!(!_S(n)&&e===void 0||dd(e)))return AS(n)||(n=function(o,c){if(typeof a=="function"&&(c=a.call(this,o,c)),!dd(c))return c}),r[1]=n,E0.apply(M0,r)}});Pr[Nn][Z6]||mf()(Pr[Nn],Z6,Pr[Nn].valueOf);pd(Pr,"Symbol");pd(Math,"Math",!0);pd(S0.JSON,"JSON",!0)});var l3=P(()=>{g()});var p3=P(()=>{g();_0()("asyncIterator")});var v3=P(()=>{g();_0()("observable")});var g3=P((KY,b3)=>{g();d3();l3();p3();v3();b3.exports=Rr().Symbol});var bd=P((HY,y3)=>{g();y3.exports={default:g3(),__esModule:!0}});var w3=P(yd=>{"use strict";g();yd.__esModule=!0;var SS=O6(),m3=x3(SS),CS=bd(),Qn=x3(CS),gd=typeof Qn.default=="function"&&typeof m3.default=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Qn.default=="function"&&t.constructor===Qn.default&&t!==Qn.default.prototype?"symbol":typeof t};function x3(t){return t&&t.__esModule?t:{default:t}}yd.default=typeof Qn.default=="function"&&gd(m3.default)==="symbol"?function(t){return typeof t>"u"?"undefined":gd(t)}:function(t){return t&&typeof Qn.default=="function"&&t.constructor===Qn.default&&t!==Qn.default.prototype?"symbol":typeof t>"u"?"undefined":gd(t)}});var I3=P((VY,_3)=>{g();var A3=gf();_3.exports=function(t,e,r,i){try{return i?e(A3(r)[0],r[1]):e(r)}catch(a){var n=t.return;throw n!==void 0&&A3(n.call(t)),a}}});var M3=P((WY,E3)=>{g();var BS=xf(),qS=Xr()("iterator"),RS=Array.prototype;E3.exports=function(t){return t!==void 0&&(BS.Array===t||RS[qS]===t)}});var C3=P((XY,S3)=>{"use strict";g();var TS=un(),OS=ba();S3.exports=function(t,e,r){e in t?TS.f(t,e,OS(0,r)):t[e]=r}});var xd=P((eV,B3)=>{g();var md=u0(),DS=Xr()("toStringTag"),PS=md(function(){return arguments}())=="Arguments",US=function(t,e){try{return t[e]}catch{}};B3.exports=function(t){var e,r,i;return t===void 0?"Undefined":t===null?"Null":typeof(r=US(e=Object(t),DS))=="string"?r:PS?md(e):(i=md(e))=="Object"&&typeof e.callee=="function"?"Arguments":i}});var wd=P((rV,q3)=>{g();var kS=xd(),FS=Xr()("iterator"),LS=xf();q3.exports=Rr().getIteratorMethod=function(t){if(t!=null)return t[FS]||t["@@iterator"]||LS[kS(t)]}});var O3=P((nV,T3)=>{g();var _d=Xr()("iterator"),R3=!1;try{Ad=[7][_d](),Ad.return=function(){R3=!0},Array.from(Ad,function(){throw 2})}catch{}var Ad;T3.exports=function(t,e){if(!e&&!R3)return!1;var r=!1;try{var i=[7],n=i[_d]();n.next=function(){return{done:r=!0}},i[_d]=function(){return n},t(i)}catch{}return r}});var P3=P(()=>{"use strict";g();var NS=Dc(),Id=hn(),QS=Io(),KS=I3(),jS=M3(),HS=Qc(),D3=C3(),zS=wd();Id(Id.S+Id.F*!O3()(function(t){Array.from(t)}),"Array",{from:function(e){var r=QS(e),i=typeof this=="function"?this:Array,n=arguments.length,a=n>1?arguments[1]:void 0,o=a!==void 0,c=0,m=zS(r),M,B,R,F;if(o&&(a=NS(a,n>2?arguments[2]:void 0,2)),m!=null&&!(i==Array&&jS(m)))for(F=m.call(r),B=new i;!(R=F.next()).done;c++)D3(B,c,o?KS(F,a,[R.value,c],!0):R.value);else for(M=HS(r.length),B=new i(M);M>c;c++)D3(B,c,o?a(r[c],c):r[c]);return B.length=c,B}})});var k3=P((uV,U3)=>{g();Mo();P3();U3.exports=Rr().Array.from});var Ed=P((cV,F3)=>{g();F3.exports={default:k3(),__esModule:!0}});var Sd=P(Md=>{"use strict";g();Md.__esModule=!0;var GS=Ed(),YS=VS(GS);function VS(t){return t&&t.__esModule?t:{default:t}}Md.default=function(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e{"use strict";g();Object.defineProperty(Kn,"__esModule",{value:!0});Kn.flip=$S;Kn.constant=WS;Kn.on=JS;Kn.compose=XS;Kn.pipe=ZS;Kn.curry=eC;function $S(t){return function(e,r){return t(r,e)}}function WS(t){return function(){return t}}function JS(t,e){return function(r,i){return t(e(r),e(i))}}function XS(){for(var t=this,e=arguments.length,r=Array(e),i=0;i-1;c--)o=r[c].call(t,o);return o}}function ZS(){for(var t=this,e=arguments.length,r=Array(e),i=0;i=e?t.apply(this,i):L3(t,e,i)}}function eC(t){return L3(t,t.length,[])}});var j3=P((gV,K3)=>{"use strict";g();var Q3=wf(),tC=I0(),rC=ga(),iC=Io(),nC=Nc(),q0=Object.assign;K3.exports=!q0||yf()(function(){var t={},e={},r=Symbol(),i="abcdefghijklmnopqrst";return t[r]=7,i.split("").forEach(function(n){e[n]=n}),q0({},t)[r]!=7||Object.keys(q0({},e)).join("")!=i})?function(e,r){for(var i=iC(e),n=arguments.length,a=1,o=tC.f,c=rC.f;n>a;)for(var m=nC(arguments[a++]),M=o?Q3(m).concat(o(m)):Q3(m),B=M.length,R=0,F;B>R;)c.call(m,F=M[R++])&&(i[F]=m[F]);return i}:q0});var H3=P(()=>{g();var Cd=hn();Cd(Cd.S+Cd.F,"Object",{assign:j3()})});var G3=P((AV,z3)=>{g();H3();z3.exports=Rr().Object.assign});var V3=P((IV,Y3)=>{g();Y3.exports={default:G3(),__esModule:!0}});var qd=P(Bd=>{"use strict";g();Bd.__esModule=!0;var fC=V3(),aC=oC(fC);function oC(t){return t&&t.__esModule?t:{default:t}}Bd.default=aC.default||function(t){for(var e=1;e{g();var Rd=hn(),sC=Rr(),uC=yf();$3.exports=function(t,e){var r=(sC.Object||{})[t]||Object[t],i={};i[t]=e(r),Rd(Rd.S+Rd.F*uC(function(){r(1)}),"Object",i)}});var J3=P(()=>{g();var hC=Io(),cC=wf();W3()("keys",function(){return function(e){return cC(hC(e))}})});var Z3=P((OV,X3)=>{g();J3();X3.exports=Rr().Object.keys});var Td=P((PV,eg)=>{g();eg.exports={default:Z3(),__esModule:!0}});var rg=P((kV,tg)=>{g();var dC=bf(),lC=Math.floor;tg.exports=function(e){return!dC(e)&&isFinite(e)&&lC(e)===e}});var ng=P(()=>{g();var ig=hn();ig(ig.S,"Number",{isInteger:rg()})});var ag=P((KV,fg)=>{g();ng();fg.exports=Rr().Number.isInteger});var sg=P((HV,og)=>{g();og.exports={default:ag(),__esModule:!0}});var Dd=P(Od=>{"use strict";g();Od.__esModule=!0;Od.default=function(t,e){var r={};for(var i in t)e.indexOf(i)>=0||!Object.prototype.hasOwnProperty.call(t,i)||(r[i]=t[i]);return r}});var Pd=P(vr=>{"use strict";g();Object.defineProperty(vr,"__esModule",{value:!0});function If(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var Ur=If(Sd()),ir=If(Oc()),yi=N3(),pC=If(qd()),vC=If(Ed()),dg=If(Td()),bC=If(sg()),gC=If(Dd()),yC=void 0,mC=function(t,e){return ir(this,yC),[].concat(Ur(e),Ur(t))}.bind(void 0),xC=yi.curry(mC),wC=void 0,AC=function(t){return ir(this,wC),Array.isArray(t)?t:[t]}.bind(void 0),_C=void 0,IC=function(t,e){return ir(this,_C),e===t.length-1}.bind(void 0),lg=yi.curry(IC),EC=void 0,MC=function(t,e){return ir(this,EC),lg(t,e)?0:e+1}.bind(void 0),SC=yi.curry(MC),pg=void 0,CC=function(t){return ir(this,pg),Math.max.apply(Math,Ur(dg(t)))+1}.bind(void 0),BC=function(t){return ir(this,pg),vC("length"in t?t:pC({},t,{length:CC(t)}))}.bind(void 0),qC=void 0,RC=function(t,e,r){return ir(this,qC),[].concat(Ur(r.slice(0,t)),Ur(e),Ur(r.slice(t+1)))}.bind(void 0),TC=yi.curry(RC),vg=void 0,OC=function(t,e){return ir(this,vg),bC(t)&&t>=e}.bind(void 0),bg=function(t){return ir(this,vg),OC(Number(t),0)}.bind(void 0),DC=void 0,PC=function(t){var e=t.length,r=gC(t,["length"]);return ir(this,DC),dg(r).every(bg)}.bind(void 0),UC=void 0,kC=function(t,e){return ir(this,UC),[].concat(Ur(t),Ur(e))}.bind(void 0),FC=yi.curry(kC),ug=void 0,LC=function(t,e,r,i){return ir(this,ug),i.reduce(function(n,a,o){return ir(this,ug),t(a,o,n)?e(n,a,o):n}.bind(this),r)}.bind(void 0),NC=yi.curry(LC),hg=void 0,QC=function(t,e,r,i){ir(this,hg);var n=r;return i.every(function(a,o){ir(this,hg);var c=t(a,o,n);return c&&(n=e(n,a,o)),c}.bind(this)),n}.bind(void 0),KC=yi.curry(QC),jC=void 0,HC=function(t,e,r){return ir(this,jC),[].concat(Ur(r.slice(0,t)),Ur(r.slice(t+e)))}.bind(void 0),zC=yi.curry(HC),cg=void 0,GC=function(t,e){return ir(this,cg),[].concat(Ur(Array(t))).map(function(){return ir(this,cg),e}.bind(this))}.bind(void 0),YC=yi.curry(GC),VC=void 0,$C=function(t,e,r){return ir(this,VC),[].concat(Ur(r.slice(0,t)),Ur(e),Ur(r.slice(t+e.length)))}.bind(void 0),WC=yi.curry($C),JC=void 0,XC=function(t,e){return ir(this,JC),e<0?t.length-e:e}.bind(void 0),ZC=yi.curry(XC);vr.append=xC;vr.convertIfNot=AC;vr.cycleNext=SC;vr.fromObject=BC;vr.insert=TC;vr.isKey=bg;vr.isLastIndex=lg;vr.isPossibleFromObject=PC;vr.prepend=FC;vr.reduceIf=NC;vr.reduceWhile=KC;vr.remove=zC;vr.repeat=YC;vr.replace=WC;vr.resolveIndex=ZC});var yg=P((WV,gg)=>{"use strict";g();gg.exports=function t(e,r){if(e===r)return!0;var i=Array.isArray(e),n=Array.isArray(r),a;if(i&&n){if(e.length!=r.length)return!1;for(a=0;a{g();var Ud=hn();Ud(Ud.S+Ud.F*!kn(),"Object",{defineProperty:un().f})});var wg=P((t$,xg)=>{g();mg();var eB=Rr().Object;xg.exports=function(e,r,i){return eB.defineProperty(e,r,i)}});var _g=P((i$,Ag)=>{g();Ag.exports={default:wg(),__esModule:!0}});var Ig=P(kd=>{"use strict";g();kd.__esModule=!0;var tB=_g(),rB=iB(tB);function iB(t){return t&&t.__esModule?t:{default:t}}kd.default=function(t,e,r){return e in t?(0,rB.default)(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}});var Mg=P((o$,Eg)=>{g();var nB=xd(),fB=Xr()("iterator"),aB=xf();Eg.exports=Rr().isIterable=function(t){var e=Object(t);return e[fB]!==void 0||"@@iterator"in e||aB.hasOwnProperty(nB(e))}});var Cg=P((u$,Sg)=>{g();x0();Mo();Sg.exports=Mg()});var qg=P((c$,Bg)=>{g();Bg.exports={default:Cg(),__esModule:!0}});var Tg=P((l$,Rg)=>{g();var oB=gf(),sB=wd();Rg.exports=Rr().getIterator=function(t){var e=sB(t);if(typeof e!="function")throw TypeError(t+" is not iterable!");return oB(e.call(t))}});var Dg=P((v$,Og)=>{g();x0();Mo();Og.exports=Tg()});var Ug=P((g$,Pg)=>{g();Pg.exports={default:Dg(),__esModule:!0}});var Fg=P(Fd=>{"use strict";g();Fd.__esModule=!0;var uB=qg(),hB=kg(uB),cB=Ug(),dB=kg(cB);function kg(t){return t&&t.__esModule?t:{default:t}}Fd.default=function(){function t(e,r){var i=[],n=!0,a=!1,o=void 0;try{for(var c=(0,dB.default)(e),m;!(n=(m=c.next()).done)&&(i.push(m.value),!(r&&i.length===r));n=!0);}catch(M){a=!0,o=M}finally{try{!n&&c.return&&c.return()}finally{if(a)throw o}}return i}return function(e,r){if(Array.isArray(e))return e;if((0,hB.default)(Object(e)))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var Ng=P((w$,Lg)=>{g();var lB=wf(),pB=Ln(),vB=ga().f;Lg.exports=function(t){return function(e){for(var r=pB(e),i=lB(r),n=i.length,a=0,o=[],c;n>a;)vB.call(r,c=i[a++])&&o.push(t?[c,r[c]]:r[c]);return o}}});var Kg=P(()=>{g();var Qg=hn(),bB=Ng()(!0);Qg(Qg.S,"Object",{entries:function(e){return bB(e)}})});var Hg=P((M$,jg)=>{g();Kg();jg.exports=Rr().Object.entries});var Gg=P((C$,zg)=>{g();zg.exports={default:Hg(),__esModule:!0}});var uy=P(ar=>{"use strict";g();function xi(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Object.defineProperty(ar,"__esModule",{value:!0});var xt=xi(Oc()),ei=rb(),$g=xi(w3()),Nd=Pd(),gB=xi(Td()),Wg=xi(Sd()),yB=xi(yg()),mB=xi(Ig()),Ro=xi(qd()),xB=xi(Fg()),wB=xi(Gg()),AB=xi(Dd()),_B=xi(bd()),IB=void 0,EB=function(t,e){return xt(this,IB),e[t]}.bind(void 0),Ef=ei.curry(EB),Jg=void 0,MB=function(t){return xt(this,Jg),t!==null&&(t===void 0?"undefined":$g(t))==="object"}.bind(void 0),Xg=function(t){return xt(this,Jg),Array.isArray(t)||MB(t)}.bind(void 0),To=void 0,SB=function(t,e,r){return xt(this,To),Nd.isLastIndex(e,t)?r:Zg(t+1,e,r)}.bind(void 0),CB=function(t,e,r){return xt(this,To),"Expected to find a composite at ["+String(e.join(", "))+"]["+String(t)+"], but instead got: "+(r===void 0?"undefined":$g(r))}.bind(void 0),BB=function(t,e,r){if(xt(this,To),Xg(r))return r;throw new Error(CB(t,e,r))}.bind(void 0),Zg=function(t,e,r){return xt(this,To),r===void 0?void 0:SB(t,e,Ef(e[t],BB(t,e,r)))}.bind(void 0),qB=function(t,e){return xt(this,To),t.length===0?void 0:Zg(0,t,e)}.bind(void 0),ey=ei.curry(qB),RB=void 0,R0=function(t){return xt(this,RB),Array.isArray(t)?[].concat(Wg(t.keys())):gB(t)}.bind(void 0),TB=void 0,OB=function(t,e,r){return xt(this,TB),yB(ey(t,r),e)}.bind(void 0),DB=ei.curry(OB),PB=void 0,UB=function(t,e){return xt(this,PB),Object.prototype.hasOwnProperty.call(e,t)}.bind(void 0),Qd=ei.curry(UB),Yg=void 0,kB=function(t,e){xt(this,Yg);var r=R0(t);return r.length===R0(e).length&&r.every(function(i){return xt(this,Yg),Qd(i,e)&&Ef(i,t)===Ef(i,e)}.bind(this))}.bind(void 0),ty=ei.curry(kB),FB=void 0,ry=function(t){return xt(this,FB),R0(t).length===0}.bind(void 0),Ld=void 0,LB=function(t,e){return xt(this,Ld),wB(e).reduce(function(r,i){var n=xB(i,2),a=n[0],o=n[1];return xt(this,Ld),Ro({},r,mB({},a,t(o,a,e)))}.bind(this),{})}.bind(void 0),NB=function(t,e){return xt(this,Ld),Array.isArray(e)?e.map(t):LB(t,e)}.bind(void 0),QB=ei.curry(NB),iy=void 0,KB=function(t,e){e[t];var r=AB(e,[t]);return xt(this,iy),r}.bind(void 0),jB=function(t,e){return xt(this,iy),Array.isArray(e)?Nd.remove(t,1,e):KB(t,e)}.bind(void 0),ny=ei.curry(jB),HB=void 0,T0=function(t){return xt(this,HB),Array.isArray(t)?[].concat(Wg(t)):Ro({},t)}.bind(void 0),mi=void 0,zB=function(t){xt(this,mi);var e=T0(t);return{origin:e,current:e,previous:void 0}}.bind(void 0),fy=function(t,e,r){return xt(this,mi),r[t]=e,Ef(t,r)}.bind(void 0),GB=function(t,e,r,i){return xt(this,mi),Ro({},i,{current:fy(t[e],r,i.current),previous:i.current})}.bind(void 0),YB=function(t,e,r){xt(this,mi);var i=ny(t[e],r.current);return e===0?Ro({},r,{current:i,origin:i}):Ro({},r,{previous:fy(t[e-1],i,r.previous)})}.bind(void 0),ay=_B("composite.updateIn.removeAction"),VB=function(t,e,r,i){return xt(this,mi),r===ay?YB(t,e,i):GB(t,e,r,i)}.bind(void 0),$B=function(t){return xt(this,mi),typeof t=="number"?[]:{}}.bind(void 0),WB=function(t,e,r){return xt(this,mi),Qd(t,r)?T0(Ef(t,r)):$B(e)}.bind(void 0),JB=function(t,e,r,i){return xt(this,mi),Nd.isLastIndex(t,r)?e(Ef(t[r],i)):WB(t[r],t[r+1],i)}.bind(void 0),XB=function(t,e){return xt(this,mi),function(r,i,n){return xt(this,mi),VB(t,n,JB(t,e,n,r.current),r)}.bind(this)}.bind(void 0),ZB=function(t,e,r){return xt(this,mi),t.length===0?r:t.reduce(XB(t,e),zB(r)).origin}.bind(void 0),Oo=ei.curry(ZB);Oo.remove=ay;var oy=void 0,eq=function(){return xt(this,oy),Oo.remove}.bind(void 0),tq=function(t,e){return xt(this,oy),Oo(t,eq,e)}.bind(void 0),rq=ei.curry(tq),iq=void 0,nq=function(t,e,r){xt(this,iq);var i=T0(r);return i[t]=e,i}.bind(void 0),fq=ei.curry(nq),Vg=void 0,aq=function(t,e,r){return xt(this,Vg),Oo(t,function(){return xt(this,Vg),e}.bind(this),r)}.bind(void 0),oq=ei.curry(aq),sy=void 0,sq=function(t,e){return xt(this,sy),Boolean(Number(t)^Number(e))}.bind(void 0),uq=function(t,e){return xt(this,sy),t===e||!sq(Array.isArray(t),Array.isArray(e))&&ty(t,e)}.bind(void 0),hq=ei.curry(uq),cq=void 0,dq=function(t){return xt(this,cq),ry(t)?void 0:t}.bind(void 0);ar.get=Ef,ar.getIn=ey,ar.getKeys=R0,ar.hasIn=DB,ar.hasKey=Qd,ar.haveSameProps=ty,ar.is=Xg,ar.isEmpty=ry,ar.map=QB,ar.remove=ny,ar.removeIn=rq,ar.set=fq,ar.setIn=oq,ar.shallowCopy=T0,ar.shallowEqual=hq,ar.toUndefinedIfEmpty=dq,ar.updateIn=Oo});var cy=P((T$,hy)=>{g();hy.exports=function(t,e){return{value:e,done:!!t}}});var O0=P((D$,dy)=>{g();dy.exports={}});var D0=P((U$,ly)=>{g();var lq=xc(),pq=pa();ly.exports=function(t){return lq(pq(t))}});var vy=P((F$,py)=>{g();var vq=t0(),bq=Math.max,gq=Math.min;py.exports=function(t,e){return t=vq(t),t<0?bq(t+e,0):gq(t,e)}});var P0=P((N$,by)=>{g();var yq=D0(),mq=r0(),xq=vy();by.exports=function(t){return function(e,r,i){var n=yq(e),a=mq(n.length),o=xq(i,a),c;if(t&&r!=r){for(;a>o;)if(c=n[o++],c!=c)return!0}else for(;a>o;o++)if((t||o in n)&&n[o]===r)return t||o||0;return!t&&-1}}});var U0=P((K$,yy)=>{g();var gy=_c()("keys"),wq=Xs();yy.exports=function(t){return gy[t]||(gy[t]=wq(t))}});var wy=P((H$,xy)=>{g();var my=yo(),Aq=D0(),_q=P0()(!1),Iq=U0()("IE_PROTO");xy.exports=function(t,e){var r=Aq(t),i=0,n=[],a;for(a in r)a!=Iq&&my(r,a)&&n.push(a);for(;e.length>i;)my(r,a=e[i++])&&(~_q(n,a)||n.push(a));return n}});var Kd=P((G$,Ay)=>{g();Ay.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var jd=P((V$,_y)=>{g();var Eq=wy(),Mq=Kd();_y.exports=Object.keys||function(e){return Eq(e,Mq)}});var Ey=P((W$,Iy)=>{g();var Sq=go(),Cq=ca(),Bq=jd();Iy.exports=da()?Object.defineProperties:function(e,r){Cq(e);for(var i=Bq(r),n=i.length,a=0,o;n>a;)Sq.f(e,o=i[a++],r[o]);return e}});var Cy=P((X$,Sy)=>{g();var My=Dn().document;Sy.exports=My&&My.documentElement});var Ry=P((eW,qy)=>{g();var qq=ca(),Rq=Ey(),By=Kd(),Tq=U0()("IE_PROTO"),Hd=function(){},zd="prototype",k0=function(){var t=dc()("iframe"),e=By.length,r="<",i=">",n;for(t.style.display="none",Cy().appendChild(t),t.src="javascript:",n=t.contentWindow.document,n.open(),n.write(r+"script"+i+"document.F=Object"+r+"/script"+i),n.close(),k0=n.F;e--;)delete k0[zd][By[e]];return k0()};qy.exports=Object.create||function(e,r){var i;return e!==null?(Hd[zd]=qq(e),i=new Hd,Hd[zd]=null,i[Tq]=e):i=k0(),r===void 0?i:Rq(i,r)}});var Gd=P((rW,Oy)=>{g();var Oq=go().f,Dq=yo(),Ty=gi()("toStringTag");Oy.exports=function(t,e,r){t&&!Dq(t=r?t:t.prototype,Ty)&&Oq(t,Ty,{configurable:!0,value:e})}});var Uy=P((nW,Py)=>{"use strict";g();var Pq=Ry(),Uq=lc(),kq=Gd(),Dy={};Pn()(Dy,gi()("iterator"),function(){return this});Py.exports=function(t,e,r){t.prototype=Pq(Dy,{next:Uq(1,r)}),kq(t,e+" Iterator")}});var Ly=P((aW,Fy)=>{g();var Fq=yo(),Lq=wc(),ky=U0()("IE_PROTO"),Nq=Object.prototype;Fy.exports=Object.getPrototypeOf||function(t){return t=Lq(t),Fq(t,ky)?t[ky]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?Nq:null}});var Gy=P((sW,zy)=>{"use strict";g();var Ny=Ac(),Yd=Jr(),Qq=mo(),Qy=Pn(),Ky=O0(),Kq=Uy(),jq=Gd(),Hq=Ly(),Do=gi()("iterator"),Vd=!([].keys&&"next"in[].keys()),zq="@@iterator",jy="keys",F0="values",Hy=function(){return this};zy.exports=function(t,e,r,i,n,a,o){Kq(r,e,i);var c=function(ge){if(!Vd&&ge in R)return R[ge];switch(ge){case jy:return function(){return new r(this,ge)};case F0:return function(){return new r(this,ge)}}return function(){return new r(this,ge)}},m=e+" Iterator",M=n==F0,B=!1,R=t.prototype,F=R[Do]||R[zq]||n&&R[n],N=F||c(n),G=n?M?c("entries"):N:void 0,Z=e=="Array"&&R.entries||F,ie,fe,ce;if(Z&&(ce=Hq(Z.call(new t)),ce!==Object.prototype&&ce.next&&(jq(ce,m,!0),!Ny&&typeof ce[Do]!="function"&&Qy(ce,Do,Hy))),M&&F&&F.name!==F0&&(B=!0,N=function(){return F.call(this)}),(!Ny||o)&&(Vd||B||!R[Do])&&Qy(R,Do,N),Ky[e]=N,Ky[m]=Hy,n)if(ie={values:M?N:c(F0),keys:a?N:c(jy),entries:G},o)for(fe in ie)fe in R||Qq(R,fe,ie[fe]);else Yd(Yd.P+Yd.F*(Vd||B),e,ie);return ie}});var $y=P((hW,Vy)=>{"use strict";g();var $d=wo(),L0=cy(),Yy=O0(),Gq=D0();Vy.exports=Gy()(Array,"Array",function(t,e){this._t=Gq(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,L0(1)):e=="keys"?L0(0,r):e=="values"?L0(0,t[r]):L0(0,[r,t[r]])},"values");Yy.Arguments=Yy.Array;$d("keys");$d("values");$d("entries")});var f8=P(()=>{g();var Wy=$y(),Yq=jd(),Vq=mo(),$q=Dn(),Jy=Pn(),i8=O0(),n8=gi(),Xy=n8("iterator"),Zy=n8("toStringTag"),e8=i8.Array,t8={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(Wd=Yq(t8),N0=0;N0{"use strict";g();var Wq=bo();a8.exports=function(t,e){return!!t&&Wq(function(){e?t.call(null,function(){},1):t.call(null)})}});var o8=P(()=>{"use strict";g();var Xd=Jr(),Jq=va()(0),Xq=ko()([].forEach,!0);Xd(Xd.P+Xd.F*!Xq,"Array",{forEach:function(e){return Jq(this,e,arguments[1])}})});var u8=P((xW,s8)=>{g();function Zq(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{g();function eR(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}h8.exports=eR});var l8=P((IW,d8)=>{g();function tR(){throw new TypeError("Invalid attempt to spread non-iterable instance")}d8.exports=tR});var v8=P((MW,p8)=>{g();var rR=u8(),iR=c8(),nR=l8();function fR(t){return rR(t)||iR(t)||nR()}p8.exports=fR});var b8=P(()=>{"use strict";g();var Zd=Jr(),aR=va()(1);Zd(Zd.P+Zd.F*!ko()([].map,!0),"Array",{map:function(e){return aR(this,e,arguments[1])}})});var y8=P((RW,g8)=>{g();var oR=t0(),sR=pa();g8.exports=function(t){return function(e,r){var i=String(sR(e)),n=oR(r),a=i.length,o,c;return n<0||n>=a?t?"":void 0:(o=i.charCodeAt(n),o<55296||o>56319||n+1===a||(c=i.charCodeAt(n+1))<56320||c>57343?t?i.charAt(n):o:t?i.slice(n,n+2):(o-55296<<10)+(c-56320)+65536)}}});var x8=P((OW,m8)=>{"use strict";g();var uR=y8()(!0);m8.exports=function(t,e,r){return e+(r?uR(t,e).length:1)}});var A8=P((PW,w8)=>{g();var el=xo(),hR=gi()("toStringTag"),cR=el(function(){return arguments}())=="Arguments",dR=function(t,e){try{return t[e]}catch{}};w8.exports=function(t){var e,r,i;return t===void 0?"Undefined":t===null?"Null":typeof(r=dR(e=Object(t),hR))=="string"?r:cR?el(e):(i=el(e))=="Object"&&typeof e.callee=="function"?"Arguments":i}});var I8=P((kW,_8)=>{"use strict";g();var lR=A8(),pR=RegExp.prototype.exec;_8.exports=function(t,e){var r=t.exec;if(typeof r=="function"){var i=r.call(t,e);if(typeof i!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if(lR(t)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return pR.call(t,e)}});var M8=P((LW,E8)=>{"use strict";g();var vR=ca();E8.exports=function(){var t=vR(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}});var il=P((QW,C8)=>{"use strict";g();var bR=M8(),Q0=RegExp.prototype.exec,gR=String.prototype.replace,S8=Q0,K0="lastIndex",tl=function(){var t=/a/,e=/b*/g;return Q0.call(t,"a"),Q0.call(e,"a"),t[K0]!==0||e[K0]!==0}(),rl=/()??/.exec("")[1]!==void 0,yR=tl||rl;yR&&(S8=function(e){var r=this,i,n,a,o;return rl&&(n=new RegExp("^"+r.source+"$(?!\\s)",bR.call(r))),tl&&(i=r[K0]),a=Q0.call(r,e),tl&&a&&(r[K0]=r.global?a.index+a[0].length:i),rl&&a&&a.length>1&&gR.call(a[0],n,function(){for(o=1;o{"use strict";g();var B8=il();Jr()({target:"RegExp",proto:!0,forced:B8!==/./.exec},{exec:B8})});var O8=P((GW,T8)=>{"use strict";g();q8();var mR=mo(),xR=Pn(),nl=bo(),wR=pa(),R8=gi(),AR=il(),_R=R8("species"),IR=!nl(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$")!=="7"}),ER=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return r.length===2&&r[0]==="a"&&r[1]==="b"}();T8.exports=function(t,e,r){var i=R8(t),n=!nl(function(){var B={};return B[i]=function(){return 7},""[t](B)!=7}),a=n?!nl(function(){var B=!1,R=/a/;return R.exec=function(){return B=!0,null},t==="split"&&(R.constructor={},R.constructor[_R]=function(){return R}),R[i](""),!B}):void 0;if(!n||!a||t==="replace"&&!IR||t==="split"&&!ER){var o=/./[i],c=r(wR,i,""[t],function(R,F,N,G,Z){return F.exec===AR?n&&!Z?{done:!0,value:o.call(F,N,G)}:{done:!0,value:R.call(N,F,G)}:{done:!1}}),m=c[0],M=c[1];mR(String.prototype,t,m),xR(RegExp.prototype,i,e==2?function(B,R){return M.call(B,this,R)}:function(B){return M.call(B,this)})}}});var P8=P(()=>{"use strict";g();var MR=ca(),SR=r0(),CR=x8(),D8=I8();O8()("match",1,function(t,e,r,i){return[function(a){var o=t(this),c=a?.[e];return c!==void 0?c.call(a,o):new RegExp(a)[e](String(o))},function(n){var a=i(r,n,this);if(a.done)return a.value;var o=MR(n),c=String(this);if(!o.global)return D8(o,c);var m=o.unicode;o.lastIndex=0;for(var M=[],B=0,R;(R=D8(o,c))!==null;){var F=String(R[0]);M[B]=F,F===""&&(o.lastIndex=CR(c,SR(o.lastIndex),m)),B++}return B===0?null:M}]})});var U8=P(()=>{"use strict";g();var fl=Jr(),BR=va()(3);fl(fl.P+fl.F*!ko()([].some,!0),"Array",{some:function(e){return BR(this,e,arguments[1])}})});var F8=P((eJ,k8)=>{g();k8.exports=function(t,e,r){var i=r===void 0;switch(e.length){case 0:return i?t():t.call(r);case 1:return i?t(e[0]):t.call(r,e[0]);case 2:return i?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}});var Q8=P((rJ,N8)=>{"use strict";g();var qR=gc(),RR=vf(),TR=F8(),L8=[].slice,al={},OR=function(t,e,r){if(!(e in al)){for(var i=[],n=0;n{g();var K8=Jr();K8(K8.P,"Function",{bind:Q8()})});var sl=P((oJ,j8)=>{g();function DR(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}j8.exports=DR});var G8=P(Mf=>{"use strict";g();Object.defineProperty(Mf,"__esModule",{value:!0});function PR(t){return t&&typeof t=="object"&&"default"in t?t.default:t}b8();P8();U8();ol();var Qi=PR(sl()),ul=void 0,UR=function(e){var r=this;return Qi(this,ul),e.map(function(i){var n=i.column,a=i.line;return Qi(this,r),"".concat(a,":").concat(n)}.bind(this)).join("; ")}.bind(void 0),kR=function(e){var r=e.message,i=e.locations;return Qi(this,ul),r+(i?" (".concat(UR(i),")"):"")}.bind(void 0),FR=function(e){return Qi(this,ul),e.map(kR).join(` -`)}.bind(void 0),H8=void 0,LR=/^\s*(query|mutation|subscription|\{)/,NR=function(e){return Qi(this,H8),e==="{"?"query":e}.bind(void 0),QR=function(e){Qi(this,H8);var r=e.match(LR);if(!r)throw new TypeError(`Invalid operation: -`.concat(e));return NR(r[1])}.bind(void 0),z8=void 0,KR=function(e){return Qi(this,z8),e.kind==="OperationDefinition"&&e.operation==="subscription"}.bind(void 0),jR=function(e){return Qi(this,z8),e.definitions.some(KR)}.bind(void 0),HR=void 0,zR=function(e){var r=e.query,i=e.variables;return Qi(this,HR),i?{operation:r,variables:i}:{operation:r}}.bind(void 0),GR=void 0,YR=function(e){var r=e.operation,i=e.variables;return Qi(this,GR),i?{query:r,variables:i}:{query:r}}.bind(void 0);Mf.errorsToString=FR;Mf.getOperationType=QR;Mf.hasSubscription=jR;Mf.requestFromCompat=zR;Mf.requestToCompat=YR});var W8=P(ml=>{"use strict";g();Object.defineProperty(ml,"__esModule",{value:!0});var ll=function(){function t(e,r){for(var i=0;i1,o=!1,c=arguments[1],m=c;return new n(function(M){return i.subscribe({next:function(B){var R=!o;if(o=!0,!R||a)try{m=r(m,B)}catch(F){return M.error(F)}else m=B},error:function(B){M.error(B)},complete:function(){if(!o&&!a)return M.error(new TypeError("Cannot reduce an empty sequence"));M.next(m),M.complete()}})})}},{key:"concat",value:function(){for(var r=this,i=arguments.length,n=Array(i),a=0;a=0&&o.splice(R,1),m()}});o.push(B)},error:function(M){a.error(M)},complete:function(){m()}});function m(){c.closed&&o.length===0&&a.complete()}return function(){o.forEach(function(M){return M.unsubscribe()}),c.unsubscribe()}})}},{key:cl,value:function(){return this}}],[{key:"from",value:function(r){var i=typeof this=="function"?this:t;if(r==null)throw new TypeError(r+" is not an object");var n=H0(r,cl);if(n){var a=n.call(r);if(Object(a)!==a)throw new TypeError(a+" is not an object");return $R(a)&&a.constructor===i?a:new i(function(o){return a.subscribe(o)})}if(bl("iterator")&&(n=H0(r,VR),n))return new i(function(o){j0(function(){if(!o.closed){var c=!0,m=!1,M=void 0;try{for(var B=n.call(r)[Symbol.iterator](),R;!(c=(R=B.next()).done);c=!0){var F=R.value;if(o.next(F),o.closed)return}}catch(N){m=!0,M=N}finally{try{!c&&B.return&&B.return()}finally{if(m)throw M}}o.complete()}})});if(Array.isArray(r))return new i(function(o){j0(function(){if(!o.closed){for(var c=0;c{g();J8.exports=W8().Observable});var e4=P(()=>{"use strict";g();var Z8=Jr(),ZR=P0()(!0);Z8(Z8.P,"Array",{includes:function(e){return ZR(this,e,arguments.length>1?arguments[1]:void 0)}});wo()("includes")});var r4=P((yJ,t4)=>{g();var eT=vf(),tT=xo(),rT=gi()("match");t4.exports=function(t){var e;return eT(t)&&((e=t[rT])!==void 0?!!e:tT(t)=="RegExp")}});var n4=P((xJ,i4)=>{g();var iT=r4(),nT=pa();i4.exports=function(t,e,r){if(iT(e))throw TypeError("String#"+r+" doesn't accept regex!");return String(nT(t))}});var a4=P((AJ,f4)=>{g();var fT=gi()("match");f4.exports=function(t){var e=/./;try{"/./"[t](e)}catch{try{return e[fT]=!1,!"/./"[t](e)}catch{}}return!0}});var s4=P(()=>{"use strict";g();var xl=Jr(),aT=n4(),o4="includes";xl(xl.P+xl.F*a4()(o4),"String",{includes:function(e){return!!~aT(this,e,o4).indexOf(e,arguments.length>1?arguments[1]:void 0)}})});var h4=P((SJ,u4)=>{g();function oT(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}u4.exports=oT});var d4=P((BJ,c4)=>{g();var sT=h4();function uT(t){for(var e=1;e{g();function hT(t,e){if(t==null)return{};var r={},i=Object.keys(t),n,a;for(a=0;a=0)&&(r[n]=t[n]);return r}l4.exports=hT});var b4=P((OJ,v4)=>{g();var cT=p4();function dT(t,e){if(t==null)return{};var r=cT(t,e),i,n;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&(!Object.prototype.propertyIsEnumerable.call(t,i)||(r[i]=t[i]))}return r}v4.exports=dT});var y4=P(()=>{"use strict";g();var wl=Jr(),lT=P0()(!1),Al=[].indexOf,g4=!!Al&&1/[1].indexOf(1,-0)<0;wl(wl.P+wl.F*(g4||!ko()(Al)),"Array",{indexOf:function(e){return g4?Al.apply(this,arguments)||0:lT(this,e,arguments[1])}})});var J4=P(vn=>{"use strict";g();Object.defineProperty(vn,"__esModule",{value:!0});function No(t){return t&&typeof t=="object"&&"default"in t?t.default:t}$2();J2();eb();var _l=uy();hc();f8();o8();var Lo=No(v8()),Il=G8(),pT=No(X8());e4();s4();var wi=No(d4()),z0=No(b4());y4();var G0=Pd();ol();var ue=No(sl()),vT=void 0,El=function(e){var r=e.activeObservers,i=e.canceledObservers,n=z0(e,["activeObservers","canceledObservers"]);return ue(this,vT),wi({},n,{isActive:!1,activeObservers:[],canceledObservers:Lo(r).concat(Lo(i))})}.bind(void 0),Ml=void 0,bT=function(e,r){var i=this;return ue(this,Ml),function(n){return ue(this,i),n[e]&&n[e](r)}.bind(this)}.bind(void 0),gT=function(e){var r=e.name;return ue(this,Ml),"on".concat(r)}.bind(void 0),Sl=function(e,r){return ue(this,Ml),e.forEach(bT(gT(r),r.payload))}.bind(void 0),yT=void 0,A4=function(e,r){return ue(this,yT),Sl(e.canceledObservers,r),e}.bind(void 0),Qo={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},Ko=void 0,mT=function(e){return ue(this,Ko),{payload:e,name:Qo.start}}.bind(void 0),xT=function(e){return ue(this,Ko),{payload:e,name:Qo.result}}.bind(void 0),Y0=function(e){return ue(this,Ko),{payload:e,name:Qo.error}}.bind(void 0),wT=function(){return ue(this,Ko),{name:Qo.cancel,payload:void 0}}.bind(void 0),AT=function(e){return ue(this,Ko),{payload:e,name:Qo.abort}}.bind(void 0),_4=void 0,_T=function(e){return ue(this,_4),wi({},e,{canceledObservers:[]})}.bind(void 0),jo=function(e){return ue(this,_4),e.canceledObservers.length>0?_T(A4(e,wT())):e}.bind(void 0),IT=void 0,I4=function(e,r,i){return ue(this,IT),e.findIndex(_l.hasIn([r],i))}.bind(void 0),ET=void 0,Cl=function(e){var r=this;return ue(this,ET),function(i){return ue(this,r),G0.replace(I4(i,"request",e.request),[e],i)}.bind(this)}.bind(void 0),MT=void 0,Ho=function(e){var r=this;return ue(this,MT),function(i){return ue(this,r),G0.remove(I4(i,"request",e.request),1,i)}.bind(this)}.bind(void 0),ST=void 0,dn=function(e,r){return ue(this,ST),e.notifiers=r(e.notifiers),e}.bind(void 0),CT=void 0,ln=function(e,r){return ue(this,CT),dn(e,Cl(r)),r}.bind(void 0),Ai={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},E4=void 0,BT=function(e){var r=e.activeObservers,i=e.canceledObservers;return ue(this,E4),Lo(r).concat(Lo(i))}.bind(void 0),M4=function(e,r){return ue(this,E4),Sl(BT(e),r),e}.bind(void 0),qT=void 0,Bl=function(e,r,i){return ue(this,qT),dn(e,Ho(M4(r,AT(i))))}.bind(void 0),RT=void 0,V0=function(e,r,i){return ue(this,RT),e.find(_l.hasIn([r],i))}.bind(void 0),TT=void 0,$0=function(e,r){return ue(this,TT),Sl(e.activeObservers,r),e}.bind(void 0),OT=void 0,S4=function(e,r){return ue(this,OT),$0(e,xT(r))}.bind(void 0),DT=void 0,C4=function(e){return ue(this,DT),$0(e,mT(e))}.bind(void 0),PT=void 0,B4=function(e){return ue(this,PT),jo(wi({},e,{isActive:!0,requestStatus:Ai.pending,subscriptionId:void 0}))}.bind(void 0),UT=void 0,q4=function(e,r){return ue(this,UT),e.receive("ok",r.onSucceed).receive("error",r.onError).receive("timeout",r.onTimeout)}.bind(void 0),ql=void 0,kT=function(e,r){var i=this;return ue(this,ql),function(n){var a=this;return ue(this,i),function(){ue(this,a);var o=V0(e.notifiers,"request",r);if(o){for(var c=arguments.length,m=new Array(c),M=0;M0}.bind(void 0),yO=function(e){var r=this;return ue(this,Ki),function(){ue(this,r),gO(e)&&K4(e)}.bind(this)}.bind(void 0),mO="__absinthe__:control",xO=function(e){ue(this,Ki);var r={phoenixSocket:e,channel:e.channel(mO),channelJoinCreated:!1,notifiers:[]};return e.onOpen(yO(r)),e.onClose(bO(r)),e.onMessage(dO(r)),r}.bind(void 0),wO=void 0,AO=function(e,r){var i=e.activeObservers,n=z0(e,["activeObservers"]);return ue(this,wO),wi({},n,{activeObservers:Lo(i).concat([r]),isActive:!0})}.bind(void 0),_O=void 0,z4=function(e,r,i){return ue(this,_O),ln(e,AO(r,i))}.bind(void 0),G4=void 0,IO=function(e,r){return ue(this,G4),{operationType:r,request:e,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:Ai.pending,subscriptionId:void 0}}.bind(void 0),EO=function(e){return ue(this,G4),IO(e,Il.getOperationType(e.operation))}.bind(void 0),MO=void 0,SO=function(e){return ue(this,MO),e.isActive?e:wi({},e,{isActive:!0})}.bind(void 0),Cf=void 0,CO=function(e){ue(this,Cf),e.phoenixSocket.isConnected()?K4(e):e.phoenixSocket.connect()}.bind(void 0),BO=function(e,r){ue(this,Cf);var i=EO(r);return dn(e,G0.append([i])),e.channelJoinCreated?Q4(e,i):CO(e),i}.bind(void 0),w4=function(e,r){return ue(this,Cf),ln(e,SO(r))}.bind(void 0),qO=function(e,r){return ue(this,Cf),r.requestStatus===Ai.sending?w4(e,jo(r)):w4(e,r)}.bind(void 0),RO=function(e,r){return ue(this,Cf),r.isActive?r:qO(e,r)}.bind(void 0),TO=function(e,r){ue(this,Cf);var i=V0(e.notifiers,"request",r);return i&&RO(e,i)}.bind(void 0),OO=function(e,r){return ue(this,Cf),TO(e,r)||BO(e,r)}.bind(void 0),X0=void 0,DO=function(e,r,i,n){var a=this,o=r.request;return ue(this,X0),function(){ue(this,a);var c=V0(e.notifiers,"request",o);n(e,c,c?i:void 0)}.bind(this)}.bind(void 0),PO=function(e,r){var i=this,n=e.operationType;return ue(this,X0),function(a){ue(this,i),r.next(a),n!=="subscription"&&r.complete()}.bind(this)}.bind(void 0),UO=function(e,r,i){return ue(this,X0),wi({},r,{onAbort:i.error.bind(i),onResult:PO(e,i)})}.bind(void 0),kO=function(e,r){var i=this,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=n.unsubscribe,o=z0(n,["unsubscribe"]);return ue(this,X0),new pT(function(c){ue(this,i);var m=UO(r,o,c);return z4(e,r,m),a&&DO(e,r,m,a)}.bind(this))}.bind(void 0),Y4=void 0,FO=function(e,r){return ue(this,Y4),G0.remove(e.indexOf(r),1,e)}.bind(void 0),LO=function(e,r){var i=e.activeObservers,n=z0(e,["activeObservers"]);return ue(this,Y4),wi({},n,{activeObservers:FO(i,r)})}.bind(void 0),V4=void 0,NO=function(e,r){if(ue(this,V4),e.activeObservers.includes(r))return e;throw new Error("Observer is not attached to notifier")}.bind(void 0),$4=function(e,r,i){return ue(this,V4),dn(e,Cl(LO(NO(r,i),i)))}.bind(void 0),W4=void 0,QO=function(e,r,i){return ue(this,W4),r.activeObservers.length===1?N4(e,r):$4(e,r,i)}.bind(void 0),KO=function(e,r,i){return ue(this,W4),r.isActive?QO(e,r,i):e}.bind(void 0);vn.cancel=N4;vn.create=xO;vn.observe=z4;vn.send=OO;vn.toObservable=kO;vn.unobserve=$4;vn.unobserveOrCancel=KO});var Rl=P((NJ,Go)=>{g();var{Socket:jO}=hc(),HO=t2(),zo=J4();Go.exports.absintheCreate=function(t){let e=new jO(t,{transport:HO});return zo.create(e)};Go.exports.absintheSend=function(t,e){return zo.send(t,{operation:e})};Go.exports.absintheObserve=function(t,e,r){return new Promise((i,n)=>{zo.observe(t,e,{onStart:function(){i(e)},onError:function(a){zo.cancel(t,e),n(a)},onResult:function(a){r(a)}})})};Go.exports.absintheCancel=function(t,e){zo.cancel(t,e)}});var vt=P((Ol,c5)=>{g();var eu=fn(),Hi=eu.Buffer;function h5(t,e){for(var r in t)e[r]=t[r]}Hi.from&&Hi.alloc&&Hi.allocUnsafe&&Hi.allocUnsafeSlow?c5.exports=eu:(h5(eu,Ol),Ol.Buffer=Bf);function Bf(t,e,r){return Hi(t,e,r)}Bf.prototype=Object.create(Hi.prototype);h5(Hi,Bf);Bf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return Hi(t,e,r)};Bf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=Hi(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};Bf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Hi(t)};Bf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return eu.SlowBuffer(t)}});var qf=P((GJ,Pl)=>{"use strict";g();var Dl=65536,VO=4294967295;function $O(){throw new Error(`Secure random number generation is not supported by this browser. -Use Chrome, Firefox or Internet Explorer 11`)}var WO=vt().Buffer,tu=global.crypto||global.msCrypto;tu&&tu.getRandomValues?Pl.exports=JO:Pl.exports=$O;function JO(t,e){if(t>VO)throw new RangeError("requested too many random bytes");var r=WO.allocUnsafe(t);if(t>0)if(t>Dl)for(var i=0;i{g();typeof Object.create=="function"?Ul.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Ul.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var nu=P((WJ,kl)=>{"use strict";g();var wa=typeof Reflect=="object"?Reflect:null,d5=wa&&typeof wa.apply=="function"?wa.apply:function(e,r,i){return Function.prototype.apply.call(e,r,i)},ru;wa&&typeof wa.ownKeys=="function"?ru=wa.ownKeys:Object.getOwnPropertySymbols?ru=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:ru=function(e){return Object.getOwnPropertyNames(e)};function XO(t){console&&console.warn&&console.warn(t)}var p5=Number.isNaN||function(e){return e!==e};function Ht(){Ht.init.call(this)}kl.exports=Ht;kl.exports.once=rD;Ht.EventEmitter=Ht;Ht.prototype._events=void 0;Ht.prototype._eventsCount=0;Ht.prototype._maxListeners=void 0;var l5=10;function iu(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(Ht,"defaultMaxListeners",{enumerable:!0,get:function(){return l5},set:function(t){if(typeof t!="number"||t<0||p5(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");l5=t}});Ht.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ht.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||p5(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function v5(t){return t._maxListeners===void 0?Ht.defaultMaxListeners:t._maxListeners}Ht.prototype.getMaxListeners=function(){return v5(this)};Ht.prototype.emit=function(e){for(var r=[],i=1;i0&&(o=r[0]),o instanceof Error)throw o;var c=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw c.context=o,c}var m=a[e];if(m===void 0)return!1;if(typeof m=="function")d5(m,this,r);else for(var M=m.length,B=x5(m,M),i=0;i0&&o.length>n&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=o.length,XO(c)}return t}Ht.prototype.addListener=function(e,r){return b5(this,e,r,!1)};Ht.prototype.on=Ht.prototype.addListener;Ht.prototype.prependListener=function(e,r){return b5(this,e,r,!0)};function ZO(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function g5(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=ZO.bind(i);return n.listener=r,i.wrapFn=n,n}Ht.prototype.once=function(e,r){return iu(r),this.on(e,g5(this,e,r)),this};Ht.prototype.prependOnceListener=function(e,r){return iu(r),this.prependListener(e,g5(this,e,r)),this};Ht.prototype.removeListener=function(e,r){var i,n,a,o,c;if(iu(r),n=this._events,n===void 0)return this;if(i=n[e],i===void 0)return this;if(i===r||i.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||r));else if(typeof i!="function"){for(a=-1,o=i.length-1;o>=0;o--)if(i[o]===r||i[o].listener===r){c=i[o].listener,a=o;break}if(a<0)return this;a===0?i.shift():eD(i,a),i.length===1&&(n[e]=i[0]),n.removeListener!==void 0&&this.emit("removeListener",e,c||r)}return this};Ht.prototype.off=Ht.prototype.removeListener;Ht.prototype.removeAllListeners=function(e){var r,i,n;if(i=this._events,i===void 0)return this;if(i.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):i[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete i[e]),this;if(arguments.length===0){var a=Object.keys(i),o;for(n=0;n=0;n--)this.removeListener(e,r[n]);return this};function y5(t,e,r){var i=t._events;if(i===void 0)return[];var n=i[e];return n===void 0?[]:typeof n=="function"?r?[n.listener||n]:[n]:r?tD(n):x5(n,n.length)}Ht.prototype.listeners=function(e){return y5(this,e,!0)};Ht.prototype.rawListeners=function(e){return y5(this,e,!1)};Ht.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):m5.call(t,e)};Ht.prototype.listenerCount=m5;function m5(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ht.prototype.eventNames=function(){return this._eventsCount>0?ru(this._events):[]};function x5(t,e){for(var r=new Array(e),i=0;i{g();A5.exports=nu().EventEmitter});var Ll=P(()=>{g()});var M5=P((iX,E5)=>{"use strict";g();function _5(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function nD(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return fu.alloc(0);for(var i=fu.allocUnsafe(r>>>0),n=this.head,a=0;n;)cD(n.data,i,a),a+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(c===o.length?a+=o:a+=o.slice(0,r),r-=c,r===0){c===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(c));break}++n}return this.length-=n,a}},{key:"_getBuffer",value:function(r){var i=fu.allocUnsafe(r),n=this.head,a=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,c=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,c),r-=c,r===0){c===o.length?(++a,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(c));break}++a}return this.length-=a,i}},{key:hD,value:function(r,i){return Nl(this,nD({},i,{depth:0,customInspect:!1}))}}]),t}()});var Kl=P((fX,C5)=>{"use strict";g();function dD(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(Ql,this,t)):process.nextTick(Ql,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(a){!e&&a?r._writableState?r._writableState.errorEmitted?process.nextTick(au,r):(r._writableState.errorEmitted=!0,process.nextTick(S5,r,a)):process.nextTick(S5,r,a):e?(process.nextTick(au,r),e(a)):process.nextTick(au,r)}),this)}function S5(t,e){Ql(t,e),au(t)}function au(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function lD(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Ql(t,e){t.emit("error",e)}function pD(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}C5.exports={destroy:dD,undestroy:lD,errorOrDestroy:pD}});var Rf=P((oX,R5)=>{"use strict";g();function vD(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var q5={};function ti(t,e,r){r||(r=Error);function i(a,o,c){return typeof e=="string"?e:e(a,o,c)}var n=function(a){vD(o,a);function o(c,m,M){return a.call(this,i(c,m,M))||this}return o}(r);n.prototype.name=r.name,n.prototype.code=t,q5[t]=n}function B5(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(i){return String(i)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:r===2?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}else return"of ".concat(e," ").concat(String(t))}function bD(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function gD(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function yD(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}ti("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);ti("ERR_INVALID_ARG_TYPE",function(t,e,r){var i;typeof e=="string"&&bD(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";var n;if(gD(t," argument"))n="The ".concat(t," ").concat(i," ").concat(B5(e,"type"));else{var a=yD(t,".")?"property":"argument";n='The "'.concat(t,'" ').concat(a," ").concat(i," ").concat(B5(e,"type"))}return n+=". Received type ".concat(typeof r),n},TypeError);ti("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");ti("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});ti("ERR_STREAM_PREMATURE_CLOSE","Premature close");ti("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});ti("ERR_MULTIPLE_CALLBACK","Callback called multiple times");ti("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");ti("ERR_STREAM_WRITE_AFTER_END","write after end");ti("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);ti("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);ti("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");R5.exports.codes=q5});var jl=P((uX,T5)=>{"use strict";g();var mD=Rf().codes.ERR_INVALID_OPT_VALUE;function xD(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function wD(t,e,r,i){var n=xD(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var a=i?r:"highWaterMark";throw new mD(a,n)}return Math.floor(n)}return t.objectMode?16:16*1024}T5.exports={getHighWaterMark:wD}});var D5=P((cX,O5)=>{g();O5.exports=AD;function AD(t,e){if(Hl("noDeprecation"))return t;var r=!1;function i(){if(!r){if(Hl("throwDeprecation"))throw new Error(e);Hl("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}return i}function Hl(t){try{if(!global.localStorage)return!1}catch{return!1}var e=global.localStorage[t];return e==null?!1:String(e).toLowerCase()==="true"}});var uu=P((lX,N5)=>{"use strict";g();N5.exports=er;function U5(t){var e=this;this.next=null,this.entry=null,this.finish=function(){$D(e,t)}}var Aa;er.WritableState=Vo;var _D={deprecate:D5()},k5=Fl(),su=fn().Buffer,ID=global.Uint8Array||function(){};function ED(t){return su.from(t)}function MD(t){return su.isBuffer(t)||t instanceof ID}var Gl=Kl(),SD=jl(),CD=SD.getHighWaterMark,Gn=Rf().codes,BD=Gn.ERR_INVALID_ARG_TYPE,qD=Gn.ERR_METHOD_NOT_IMPLEMENTED,RD=Gn.ERR_MULTIPLE_CALLBACK,TD=Gn.ERR_STREAM_CANNOT_PIPE,OD=Gn.ERR_STREAM_DESTROYED,DD=Gn.ERR_STREAM_NULL_VALUES,PD=Gn.ERR_STREAM_WRITE_AFTER_END,UD=Gn.ERR_UNKNOWN_ENCODING,_a=Gl.errorOrDestroy;gt()(er,k5);function kD(){}function Vo(t,e,r){Aa=Aa||Yn(),t=t||{},typeof r!="boolean"&&(r=e instanceof Aa),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=CD(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){HD(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new U5(this)}Vo.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(Vo.prototype,"buffer",{get:_D.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var ou;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(ou=Function.prototype[Symbol.hasInstance],Object.defineProperty(er,Symbol.hasInstance,{value:function(e){return ou.call(this,e)?!0:this!==er?!1:e&&e._writableState instanceof Vo}})):ou=function(e){return e instanceof this};function er(t){Aa=Aa||Yn();var e=this instanceof Aa;if(!e&&!ou.call(er,this))return new er(t);this._writableState=new Vo(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),k5.call(this)}er.prototype.pipe=function(){_a(this,new TD)};function FD(t,e){var r=new PD;_a(t,r),process.nextTick(e,r)}function LD(t,e,r,i){var n;return r===null?n=new DD:typeof r!="string"&&!e.objectMode&&(n=new BD("chunk",["string","Buffer"],r)),n?(_a(t,n),process.nextTick(i,n),!1):!0}er.prototype.write=function(t,e,r){var i=this._writableState,n=!1,a=!i.objectMode&&MD(t);return a&&!su.isBuffer(t)&&(t=ED(t)),typeof e=="function"&&(r=e,e=null),a?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=kD),i.ending?FD(this,r):(a||LD(this,i,t,r))&&(i.pendingcb++,n=QD(this,i,a,t,e,r)),n};er.prototype.cork=function(){this._writableState.corked++};er.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&F5(this,t))};er.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new UD(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(er.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function ND(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=su.from(e,r)),e}Object.defineProperty(er.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function QD(t,e,r,i,n,a){if(!r){var o=ND(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var c=e.objectMode?1:i.length;e.length+=c;var m=e.length{"use strict";g();var WD=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};K5.exports=zi;var Q5=du(),Vl=uu();gt()(zi,Q5);for(Yl=WD(Vl.prototype),hu=0;hu{"use strict";g();var Wl=vt().Buffer,j5=Wl.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function ZD(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function eP(t){var e=ZD(t);if(typeof e!="string"&&(Wl.isEncoding===j5||!j5(t)))throw new Error("Unknown encoding: "+t);return e||t}H5.StringDecoder=$o;function $o(t){this.encoding=eP(t);var e;switch(this.encoding){case"utf16le":this.text=aP,this.end=oP,e=4;break;case"utf8":this.fillLast=iP,e=4;break;case"base64":this.text=sP,this.end=uP,e=3;break;default:this.write=hP,this.end=cP;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Wl.allocUnsafe(e)}$o.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function tP(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function rP(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function iP(t){var e=this.lastTotal-this.lastNeed,r=rP(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function nP(t,e){var r=tP(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function fP(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function aP(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function oP(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function sP(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function uP(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function hP(t){return t.toString(this.encoding)}function cP(t){return t&&t.length?this.write(t):""}});var Wo=P((mX,Y5)=>{"use strict";g();var z5=Rf().codes.ERR_STREAM_PREMATURE_CLOSE;function dP(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";g();var pu;function Vn(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var vP=Wo(),$n=Symbol("lastResolve"),Tf=Symbol("lastReject"),Jo=Symbol("error"),vu=Symbol("ended"),Of=Symbol("lastPromise"),Jl=Symbol("handlePromise"),Df=Symbol("stream");function Wn(t,e){return{value:t,done:e}}function bP(t){var e=t[$n];if(e!==null){var r=t[Df].read();r!==null&&(t[Of]=null,t[$n]=null,t[Tf]=null,e(Wn(r,!1)))}}function gP(t){process.nextTick(bP,t)}function yP(t,e){return function(r,i){t.then(function(){if(e[vu]){r(Wn(void 0,!0));return}e[Jl](r,i)},i)}}var mP=Object.getPrototypeOf(function(){}),xP=Object.setPrototypeOf((pu={get stream(){return this[Df]},next:function(){var e=this,r=this[Jo];if(r!==null)return Promise.reject(r);if(this[vu])return Promise.resolve(Wn(void 0,!0));if(this[Df].destroyed)return new Promise(function(o,c){process.nextTick(function(){e[Jo]?c(e[Jo]):o(Wn(void 0,!0))})});var i=this[Of],n;if(i)n=new Promise(yP(i,this));else{var a=this[Df].read();if(a!==null)return Promise.resolve(Wn(a,!1));n=new Promise(this[Jl])}return this[Of]=n,n}},Vn(pu,Symbol.asyncIterator,function(){return this}),Vn(pu,"return",function(){var e=this;return new Promise(function(r,i){e[Df].destroy(null,function(n){if(n){i(n);return}r(Wn(void 0,!0))})})}),pu),mP),wP=function(e){var r,i=Object.create(xP,(r={},Vn(r,Df,{value:e,writable:!0}),Vn(r,$n,{value:null,writable:!0}),Vn(r,Tf,{value:null,writable:!0}),Vn(r,Jo,{value:null,writable:!0}),Vn(r,vu,{value:e._readableState.endEmitted,writable:!0}),Vn(r,Jl,{value:function(a,o){var c=i[Df].read();c?(i[Of]=null,i[$n]=null,i[Tf]=null,a(Wn(c,!1))):(i[$n]=a,i[Tf]=o)},writable:!0}),r));return i[Of]=null,vP(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var a=i[Tf];a!==null&&(i[Of]=null,i[$n]=null,i[Tf]=null,a(n)),i[Jo]=n;return}var o=i[$n];o!==null&&(i[Of]=null,i[$n]=null,i[Tf]=null,o(Wn(void 0,!0))),i[vu]=!0}),e.on("readable",gP.bind(null,i)),i};V5.exports=wP});var J5=P((_X,W5)=>{g();W5.exports=function(){throw new Error("Readable.from is not available in the browser")}});var du=P((MX,om)=>{"use strict";g();om.exports=Lt;var Ia;Lt.ReadableState=tm;var EX=nu().EventEmitter,em=function(e,r){return e.listeners(r).length},Zo=Fl(),bu=fn().Buffer,AP=global.Uint8Array||function(){};function _P(t){return bu.from(t)}function IP(t){return bu.isBuffer(t)||t instanceof AP}var Xl=Ll(),At;Xl&&Xl.debuglog?At=Xl.debuglog("stream"):At=function(){};var EP=M5(),f1=Kl(),MP=jl(),SP=MP.getHighWaterMark,gu=Rf().codes,CP=gu.ERR_INVALID_ARG_TYPE,BP=gu.ERR_STREAM_PUSH_AFTER_EOF,qP=gu.ERR_METHOD_NOT_IMPLEMENTED,RP=gu.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Ea,Zl,e1;gt()(Lt,Zo);var Xo=f1.errorOrDestroy,t1=["error","close","destroy","pause","resume"];function TP(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function tm(t,e,r){Ia=Ia||Yn(),t=t||{},typeof r!="boolean"&&(r=e instanceof Ia),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=SP(this,t,"readableHighWaterMark",r),this.buffer=new EP,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Ea||(Ea=lu().StringDecoder),this.decoder=new Ea(t.encoding),this.encoding=t.encoding)}function Lt(t){if(Ia=Ia||Yn(),!(this instanceof Lt))return new Lt(t);var e=this instanceof Ia;this._readableState=new tm(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),Zo.call(this)}Object.defineProperty(Lt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});Lt.prototype.destroy=f1.destroy;Lt.prototype._undestroy=f1.undestroy;Lt.prototype._destroy=function(t,e){e(t)};Lt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=bu.from(t,e),e=""),i=!0),rm(this,t,e,!1,i)};Lt.prototype.unshift=function(t){return rm(this,t,null,!0,!1)};function rm(t,e,r,i,n){At("readableAddChunk",e);var a=t._readableState;if(e===null)a.reading=!1,PP(t,a);else{var o;if(n||(o=OP(a,e)),o)Xo(t,o);else if(a.objectMode||e&&e.length>0)if(typeof e!="string"&&!a.objectMode&&Object.getPrototypeOf(e)!==bu.prototype&&(e=_P(e)),i)a.endEmitted?Xo(t,new RP):r1(t,a,e,!0);else if(a.ended)Xo(t,new BP);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||e.length!==0?r1(t,a,e,!1):n1(t,a)):r1(t,a,e,!1)}else i||(a.reading=!1,n1(t,a))}return!a.ended&&(a.length=X5?t=X5:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function Z5(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=DP(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Lt.prototype.read=function(t){At("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return At("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?i1(this):yu(this),null;if(t=Z5(t,e),t===0&&e.ended)return e.length===0&&i1(this),null;var i=e.needReadable;At("need readable",i),(e.length===0||e.length-t0?n=fm(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&i1(this)),n!==null&&this.emit("data",n),n};function PP(t,e){if(At("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?yu(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,im(t)))}}function yu(t){var e=t._readableState;At("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(At("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(im,t))}function im(t){var e=t._readableState;At("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,a1(t)}function n1(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(UP,t,e))}function UP(t,e){for(;!e.reading&&!e.ended&&(e.length1&&am(i.pipes,t)!==-1)&&!M&&(At("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function F(ie){At("onerror",ie),Z(),t.removeListener("error",F),em(t,"error")===0&&Xo(t,ie)}TP(t,"error",F);function N(){t.removeListener("finish",G),Z()}t.once("close",N);function G(){At("onfinish"),t.removeListener("close",N),Z()}t.once("finish",G);function Z(){At("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(At("pipe resume"),r.resume()),t};function kP(t){return function(){var r=t._readableState;At("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&em(t,"data")&&(r.flowing=!0,a1(t))}}Lt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,At("on readable",i.length,i.reading),i.length?yu(this):i.reading||process.nextTick(FP,this)),r};Lt.prototype.addListener=Lt.prototype.on;Lt.prototype.removeListener=function(t,e){var r=Zo.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(nm,this),r};Lt.prototype.removeAllListeners=function(t){var e=Zo.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(nm,this),e};function nm(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function FP(t){At("readable nexttick read 0"),t.read(0)}Lt.prototype.resume=function(){var t=this._readableState;return t.flowing||(At("resume"),t.flowing=!t.readableListening,LP(this,t)),t.paused=!1,this};function LP(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(NP,t,e))}function NP(t,e){At("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),a1(t),e.flowing&&!e.reading&&t.read(0)}Lt.prototype.pause=function(){return At("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(At("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function a1(t){var e=t._readableState;for(At("flow",e.flowing);e.flowing&&t.read()!==null;);}Lt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(At("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(At("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var c=e.push(o);c||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(c){return function(){return t[c].apply(t,arguments)}}(n));for(var a=0;a=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function i1(t){var e=t._readableState;At("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(QP,e,t))}function QP(t,e){if(At("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(Lt.from=function(t,e){return e1===void 0&&(e1=J5()),e1(Lt,t,e)});function am(t,e){for(var r=0,i=t.length;r{"use strict";g();um.exports=gn;var mu=Rf().codes,KP=mu.ERR_METHOD_NOT_IMPLEMENTED,jP=mu.ERR_MULTIPLE_CALLBACK,HP=mu.ERR_TRANSFORM_ALREADY_TRANSFORMING,zP=mu.ERR_TRANSFORM_WITH_LENGTH_0,xu=Yn();gt()(gn,xu);function GP(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new jP);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";g();cm.exports=es;var hm=wu();gt()(es,hm);function es(t){if(!(this instanceof es))return new es(t);hm.call(this,t)}es.prototype._transform=function(t,e,r){r(null,t)}});var u1=P((TX,vm)=>{"use strict";g();var s1;function VP(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var pm=Rf().codes,$P=pm.ERR_MISSING_ARGS,WP=pm.ERR_STREAM_DESTROYED;function dm(t){if(t)throw t}function JP(t){return t.setHeader&&typeof t.abort=="function"}function XP(t,e,r,i){i=VP(i);var n=!1;t.on("close",function(){n=!0}),s1===void 0&&(s1=Wo()),s1(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var a=!1;return function(o){if(!n&&!a){if(a=!0,JP(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new WP("pipe"))}}}function lm(t){t()}function ZP(t,e){return t.pipe(e)}function eU(t){return!t.length||typeof t[t.length-1]!="function"?dm:t.pop()}function tU(){for(var t=arguments.length,e=new Array(t),r=0;r0;return XP(o,m,M,function(B){n||(n=B),B&&a.forEach(lm),!m&&(a.forEach(lm),i(n))})});return e.reduce(ZP)}vm.exports=tU});var h1=P((ri,bm)=>{g();ri=bm.exports=du();ri.Stream=ri;ri.Readable=ri;ri.Writable=uu();ri.Duplex=Yn();ri.Transform=wu();ri.PassThrough=o1();ri.finished=Wo();ri.pipeline=u1()});var c1=P((PX,ym)=>{"use strict";g();var Au=vt().Buffer,gm=h1().Transform,rU=gt();function iU(t,e){if(!Au.isBuffer(t)&&typeof t!="string")throw new TypeError(e+" must be a string or a buffer")}function Jn(t){gm.call(this),this._block=Au.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}rU(Jn,gm);Jn.prototype._transform=function(t,e,r){var i=null;try{this.update(t,e)}catch(n){i=n}r(i)};Jn.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(r){e=r}t(e)};Jn.prototype.update=function(t,e){if(iU(t,"Data"),this._finalized)throw new Error("Digest already called");Au.isBuffer(t)||(t=Au.from(t,e));for(var r=this._block,i=0;this._blockOffset+t.length-i>=this._blockSize;){for(var n=this._blockOffset;n0;++a)this._length[a]+=o,o=this._length[a]/4294967296|0,o>0&&(this._length[a]-=4294967296*o);return this};Jn.prototype._update=function(){throw new Error("_update is not implemented")};Jn.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();t!==void 0&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e};Jn.prototype._digest=function(){throw new Error("_digest is not implemented")};ym.exports=Jn});var Eu=P((kX,xm)=>{"use strict";g();var nU=gt(),mm=c1(),fU=vt().Buffer,aU=new Array(16);function _u(){mm.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}nU(_u,mm);_u.prototype._update=function(){for(var t=aU,e=0;e<16;++e)t[e]=this._block.readInt32LE(e*4);var r=this._a,i=this._b,n=this._c,a=this._d;r=_r(r,i,n,a,t[0],3614090360,7),a=_r(a,r,i,n,t[1],3905402710,12),n=_r(n,a,r,i,t[2],606105819,17),i=_r(i,n,a,r,t[3],3250441966,22),r=_r(r,i,n,a,t[4],4118548399,7),a=_r(a,r,i,n,t[5],1200080426,12),n=_r(n,a,r,i,t[6],2821735955,17),i=_r(i,n,a,r,t[7],4249261313,22),r=_r(r,i,n,a,t[8],1770035416,7),a=_r(a,r,i,n,t[9],2336552879,12),n=_r(n,a,r,i,t[10],4294925233,17),i=_r(i,n,a,r,t[11],2304563134,22),r=_r(r,i,n,a,t[12],1804603682,7),a=_r(a,r,i,n,t[13],4254626195,12),n=_r(n,a,r,i,t[14],2792965006,17),i=_r(i,n,a,r,t[15],1236535329,22),r=Ir(r,i,n,a,t[1],4129170786,5),a=Ir(a,r,i,n,t[6],3225465664,9),n=Ir(n,a,r,i,t[11],643717713,14),i=Ir(i,n,a,r,t[0],3921069994,20),r=Ir(r,i,n,a,t[5],3593408605,5),a=Ir(a,r,i,n,t[10],38016083,9),n=Ir(n,a,r,i,t[15],3634488961,14),i=Ir(i,n,a,r,t[4],3889429448,20),r=Ir(r,i,n,a,t[9],568446438,5),a=Ir(a,r,i,n,t[14],3275163606,9),n=Ir(n,a,r,i,t[3],4107603335,14),i=Ir(i,n,a,r,t[8],1163531501,20),r=Ir(r,i,n,a,t[13],2850285829,5),a=Ir(a,r,i,n,t[2],4243563512,9),n=Ir(n,a,r,i,t[7],1735328473,14),i=Ir(i,n,a,r,t[12],2368359562,20),r=Er(r,i,n,a,t[5],4294588738,4),a=Er(a,r,i,n,t[8],2272392833,11),n=Er(n,a,r,i,t[11],1839030562,16),i=Er(i,n,a,r,t[14],4259657740,23),r=Er(r,i,n,a,t[1],2763975236,4),a=Er(a,r,i,n,t[4],1272893353,11),n=Er(n,a,r,i,t[7],4139469664,16),i=Er(i,n,a,r,t[10],3200236656,23),r=Er(r,i,n,a,t[13],681279174,4),a=Er(a,r,i,n,t[0],3936430074,11),n=Er(n,a,r,i,t[3],3572445317,16),i=Er(i,n,a,r,t[6],76029189,23),r=Er(r,i,n,a,t[9],3654602809,4),a=Er(a,r,i,n,t[12],3873151461,11),n=Er(n,a,r,i,t[15],530742520,16),i=Er(i,n,a,r,t[2],3299628645,23),r=Mr(r,i,n,a,t[0],4096336452,6),a=Mr(a,r,i,n,t[7],1126891415,10),n=Mr(n,a,r,i,t[14],2878612391,15),i=Mr(i,n,a,r,t[5],4237533241,21),r=Mr(r,i,n,a,t[12],1700485571,6),a=Mr(a,r,i,n,t[3],2399980690,10),n=Mr(n,a,r,i,t[10],4293915773,15),i=Mr(i,n,a,r,t[1],2240044497,21),r=Mr(r,i,n,a,t[8],1873313359,6),a=Mr(a,r,i,n,t[15],4264355552,10),n=Mr(n,a,r,i,t[6],2734768916,15),i=Mr(i,n,a,r,t[13],1309151649,21),r=Mr(r,i,n,a,t[4],4149444226,6),a=Mr(a,r,i,n,t[11],3174756917,10),n=Mr(n,a,r,i,t[2],718787259,15),i=Mr(i,n,a,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+a|0};_u.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=fU.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t};function Iu(t,e){return t<>>32-e}function _r(t,e,r,i,n,a,o){return Iu(t+(e&r|~e&i)+n+a|0,o)+e|0}function Ir(t,e,r,i,n,a,o){return Iu(t+(e&i|r&~i)+n+a|0,o)+e|0}function Er(t,e,r,i,n,a,o){return Iu(t+(e^r^i)+n+a|0,o)+e|0}function Mr(t,e,r,i,n,a,o){return Iu(t+(r^(e|~i))+n+a|0,o)+e|0}xm.exports=_u});var Su=P((LX,Sm)=>{"use strict";g();var d1=fn().Buffer,oU=gt(),Mm=c1(),sU=new Array(16),ts=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],rs=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],is=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],ns=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],fs=[0,1518500249,1859775393,2400959708,2840853838],as=[1352829926,1548603684,1836072691,2053994217,0];function Mu(){Mm.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}oU(Mu,Mm);Mu.prototype._update=function(){for(var t=sU,e=0;e<16;++e)t[e]=this._block.readInt32LE(e*4);for(var r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=this._a|0,m=this._b|0,M=this._c|0,B=this._d|0,R=this._e|0,F=0;F<80;F+=1){var N,G;F<16?(N=wm(r,i,n,a,o,t[ts[F]],fs[0],is[F]),G=Em(c,m,M,B,R,t[rs[F]],as[0],ns[F])):F<32?(N=Am(r,i,n,a,o,t[ts[F]],fs[1],is[F]),G=Im(c,m,M,B,R,t[rs[F]],as[1],ns[F])):F<48?(N=_m(r,i,n,a,o,t[ts[F]],fs[2],is[F]),G=_m(c,m,M,B,R,t[rs[F]],as[2],ns[F])):F<64?(N=Im(r,i,n,a,o,t[ts[F]],fs[3],is[F]),G=Am(c,m,M,B,R,t[rs[F]],as[3],ns[F])):(N=Em(r,i,n,a,o,t[ts[F]],fs[4],is[F]),G=wm(c,m,M,B,R,t[rs[F]],as[4],ns[F])),r=o,o=a,a=Pf(n,10),n=i,i=N,c=R,R=B,B=Pf(M,10),M=m,m=G}var Z=this._b+n+B|0;this._b=this._c+a+R|0,this._c=this._d+o+c|0,this._d=this._e+r+m|0,this._e=this._a+i+M|0,this._a=Z};Mu.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=d1.alloc?d1.alloc(20):new d1(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t};function Pf(t,e){return t<>>32-e}function wm(t,e,r,i,n,a,o,c){return Pf(t+(e^r^i)+a+o|0,c)+n|0}function Am(t,e,r,i,n,a,o,c){return Pf(t+(e&r|~e&i)+a+o|0,c)+n|0}function _m(t,e,r,i,n,a,o,c){return Pf(t+((e|~r)^i)+a+o|0,c)+n|0}function Im(t,e,r,i,n,a,o,c){return Pf(t+(e&i|r&~i)+a+o|0,c)+n|0}function Em(t,e,r,i,n,a,o,c){return Pf(t+(e^(r|~i))+a+o|0,c)+n|0}Sm.exports=Mu});var Uf=P((QX,Bm)=>{g();var Cm=vt().Buffer;function Cu(t,e){this._block=Cm.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}Cu.prototype.update=function(t,e){typeof t=="string"&&(e=e||"utf8",t=Cm.from(t,e));for(var r=this._block,i=this._blockSize,n=t.length,a=this._len,o=0;o=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(r&4294967295)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return t?a.toString(t):a};Cu.prototype._update=function(){throw new Error("_update must be implemented by subclass")};Bm.exports=Cu});var Tm=P((jX,Rm)=>{g();var uU=gt(),qm=Uf(),hU=vt().Buffer,cU=[1518500249,1859775393,-1894007588,-899497514],dU=new Array(80);function os(){this.init(),this._w=dU,qm.call(this,64,56)}uU(os,qm);os.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function lU(t){return t<<5|t>>>27}function pU(t){return t<<30|t>>>2}function vU(t,e,r,i){return t===0?e&r|~e&i:t===2?e&r|e&i|r&i:e^r^i}os.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=0;c<16;++c)e[c]=t.readInt32BE(c*4);for(;c<80;++c)e[c]=e[c-3]^e[c-8]^e[c-14]^e[c-16];for(var m=0;m<80;++m){var M=~~(m/20),B=lU(r)+vU(M,i,n,a)+o+e[m]+cU[M]|0;o=a,a=n,n=pU(i),i=r,r=B}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0};os.prototype._hash=function(){var t=hU.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};Rm.exports=os});var Pm=P((zX,Dm)=>{g();var bU=gt(),Om=Uf(),gU=vt().Buffer,yU=[1518500249,1859775393,-1894007588,-899497514],mU=new Array(80);function ss(){this.init(),this._w=mU,Om.call(this,64,56)}bU(ss,Om);ss.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function xU(t){return t<<1|t>>>31}function wU(t){return t<<5|t>>>27}function AU(t){return t<<30|t>>>2}function _U(t,e,r,i){return t===0?e&r|~e&i:t===2?e&r|e&i|r&i:e^r^i}ss.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=0;c<16;++c)e[c]=t.readInt32BE(c*4);for(;c<80;++c)e[c]=xU(e[c-3]^e[c-8]^e[c-14]^e[c-16]);for(var m=0;m<80;++m){var M=~~(m/20),B=wU(r)+_U(M,i,n,a)+o+e[m]+yU[M]|0;o=a,a=n,n=AU(i),i=r,r=B}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0};ss.prototype._hash=function(){var t=gU.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};Dm.exports=ss});var l1=P((YX,km)=>{g();var IU=gt(),Um=Uf(),EU=vt().Buffer,MU=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],SU=new Array(64);function us(){this.init(),this._w=SU,Um.call(this,64,56)}IU(us,Um);us.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function CU(t,e,r){return r^t&(e^r)}function BU(t,e,r){return t&e|r&(t|e)}function qU(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function RU(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function TU(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function OU(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}us.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=this._f|0,m=this._g|0,M=this._h|0,B=0;B<16;++B)e[B]=t.readInt32BE(B*4);for(;B<64;++B)e[B]=OU(e[B-2])+e[B-7]+TU(e[B-15])+e[B-16]|0;for(var R=0;R<64;++R){var F=M+RU(o)+CU(o,c,m)+MU[R]+e[R]|0,N=qU(r)+BU(r,i,n)|0;M=m,m=c,c=o,o=a+F|0,a=n,n=i,i=r,r=F+N|0}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0,this._f=c+this._f|0,this._g=m+this._g|0,this._h=M+this._h|0};us.prototype._hash=function(){var t=EU.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t};km.exports=us});var Lm=P(($X,Fm)=>{g();var DU=gt(),PU=l1(),UU=Uf(),kU=vt().Buffer,FU=new Array(64);function Bu(){this.init(),this._w=FU,UU.call(this,64,56)}DU(Bu,PU);Bu.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this};Bu.prototype._hash=function(){var t=kU.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t};Fm.exports=Bu});var p1=P((JX,Gm)=>{g();var LU=gt(),zm=Uf(),NU=vt().Buffer,Nm=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],QU=new Array(160);function hs(){this.init(),this._w=QU,zm.call(this,128,112)}LU(hs,zm);hs.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function Qm(t,e,r){return r^t&(e^r)}function Km(t,e,r){return t&e|r&(t|e)}function jm(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function Hm(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function KU(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function jU(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function HU(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function zU(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function cr(t,e){return t>>>0>>0?1:0}hs.prototype._update=function(t){for(var e=this._w,r=this._ah|0,i=this._bh|0,n=this._ch|0,a=this._dh|0,o=this._eh|0,c=this._fh|0,m=this._gh|0,M=this._hh|0,B=this._al|0,R=this._bl|0,F=this._cl|0,N=this._dl|0,G=this._el|0,Z=this._fl|0,ie=this._gl|0,fe=this._hl|0,ce=0;ce<32;ce+=2)e[ce]=t.readInt32BE(ce*4),e[ce+1]=t.readInt32BE(ce*4+4);for(;ce<160;ce+=2){var ge=e[ce-30],ve=e[ce-15*2+1],Ke=KU(ge,ve),be=jU(ve,ge);ge=e[ce-2*2],ve=e[ce-2*2+1];var pe=HU(ge,ve),Ne=zU(ve,ge),k=e[ce-7*2],d=e[ce-7*2+1],b=e[ce-16*2],E=e[ce-16*2+1],p=be+d|0,f=Ke+k+cr(p,be)|0;p=p+Ne|0,f=f+pe+cr(p,Ne)|0,p=p+E|0,f=f+b+cr(p,E)|0,e[ce]=f,e[ce+1]=p}for(var s=0;s<160;s+=2){f=e[s],p=e[s+1];var v=Km(r,i,n),l=Km(B,R,F),h=jm(r,B),A=jm(B,r),q=Hm(o,G),_=Hm(G,o),u=Nm[s],I=Nm[s+1],j=Qm(o,c,m),S=Qm(G,Z,ie),L=fe+_|0,Q=M+q+cr(L,fe)|0;L=L+S|0,Q=Q+j+cr(L,S)|0,L=L+I|0,Q=Q+u+cr(L,I)|0,L=L+p|0,Q=Q+f+cr(L,p)|0;var z=A+l|0,J=h+v+cr(z,A)|0;M=m,fe=ie,m=c,ie=Z,c=o,Z=G,G=N+L|0,o=a+Q+cr(G,N)|0,a=n,N=F,n=i,F=R,i=r,R=B,B=L+z|0,r=Q+J+cr(B,L)|0}this._al=this._al+B|0,this._bl=this._bl+R|0,this._cl=this._cl+F|0,this._dl=this._dl+N|0,this._el=this._el+G|0,this._fl=this._fl+Z|0,this._gl=this._gl+ie|0,this._hl=this._hl+fe|0,this._ah=this._ah+r+cr(this._al,B)|0,this._bh=this._bh+i+cr(this._bl,R)|0,this._ch=this._ch+n+cr(this._cl,F)|0,this._dh=this._dh+a+cr(this._dl,N)|0,this._eh=this._eh+o+cr(this._el,G)|0,this._fh=this._fh+c+cr(this._fl,Z)|0,this._gh=this._gh+m+cr(this._gl,ie)|0,this._hh=this._hh+M+cr(this._hl,fe)|0};hs.prototype._hash=function(){var t=NU.allocUnsafe(64);function e(r,i,n){t.writeInt32BE(r,n),t.writeInt32BE(i,n+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t};Gm.exports=hs});var Vm=P((ZX,Ym)=>{g();var GU=gt(),YU=p1(),VU=Uf(),$U=vt().Buffer,WU=new Array(160);function qu(){this.init(),this._w=WU,VU.call(this,128,112)}GU(qu,YU);qu.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this};qu.prototype._hash=function(){var t=$U.allocUnsafe(48);function e(r,i,n){t.writeInt32BE(r,n),t.writeInt32BE(i,n+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t};Ym.exports=qu});var Ru=P((yn,$m)=>{g();var yn=$m.exports=function(e){e=e.toLowerCase();var r=yn[e];if(!r)throw new Error(e+" is not supported (we accept pull requests)");return new r};yn.sha=Tm();yn.sha1=Pm();yn.sha224=Lm();yn.sha256=l1();yn.sha384=Vm();yn.sha512=p1()});var Jm=P((rZ,Wm)=>{g();Wm.exports=ii;var v1=nu().EventEmitter,JU=gt();JU(ii,v1);ii.Readable=du();ii.Writable=uu();ii.Duplex=Yn();ii.Transform=wu();ii.PassThrough=o1();ii.finished=Wo();ii.pipeline=u1();ii.Stream=ii;function ii(){v1.call(this)}ii.prototype.pipe=function(t,e){var r=this;function i(B){t.writable&&t.write(B)===!1&&r.pause&&r.pause()}r.on("data",i);function n(){r.readable&&r.resume&&r.resume()}t.on("drain",n),!t._isStdio&&(!e||e.end!==!1)&&(r.on("end",o),r.on("close",c));var a=!1;function o(){a||(a=!0,t.end())}function c(){a||(a=!0,typeof t.destroy=="function"&&t.destroy())}function m(B){if(M(),v1.listenerCount(this,"error")===0)throw B}r.on("error",m),t.on("error",m);function M(){r.removeListener("data",i),t.removeListener("drain",n),r.removeListener("end",o),r.removeListener("close",c),r.removeListener("error",m),t.removeListener("error",m),r.removeListener("end",M),r.removeListener("close",M),t.removeListener("close",M)}return r.on("end",M),r.on("close",M),t.on("close",M),t.emit("pipe",r),t}});var mn=P((nZ,ex)=>{g();var Xm=vt().Buffer,Zm=Jm().Transform,XU=lu().StringDecoder,ZU=gt();function _i(t){Zm.call(this),this.hashMode=typeof t=="string",this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}ZU(_i,Zm);_i.prototype.update=function(t,e,r){typeof t=="string"&&(t=Xm.from(t,e));var i=this._update(t);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)};_i.prototype.setAutoPadding=function(){};_i.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")};_i.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")};_i.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")};_i.prototype._transform=function(t,e,r){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(n){i=n}finally{r(i)}};_i.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(r){e=r}t(e)};_i.prototype._finalOrDigest=function(t){var e=this.__final()||Xm.alloc(0);return t&&(e=this._toString(e,t,!0)),e};_i.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new XU(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var i=this._decoder.write(t);return r&&(i+=this._decoder.end()),i};ex.exports=_i});var Ma=P((aZ,rx)=>{"use strict";g();var ek=gt(),tk=Eu(),rk=Su(),ik=Ru(),tx=mn();function Tu(t){tx.call(this,"digest"),this._hash=t}ek(Tu,tx);Tu.prototype._update=function(t){this._hash.update(t)};Tu.prototype._final=function(){return this._hash.digest()};rx.exports=function(e){return e=e.toLowerCase(),e==="md5"?new tk:e==="rmd160"||e==="ripemd160"?new rk:new Tu(ik(e))}});var fx=P((sZ,nx)=>{"use strict";g();var nk=gt(),kf=vt().Buffer,ix=mn(),fk=kf.alloc(128),Sa=64;function Ou(t,e){ix.call(this,"digest"),typeof e=="string"&&(e=kf.from(e)),this._alg=t,this._key=e,e.length>Sa?e=t(e):e.length{g();var ak=Eu();ax.exports=function(t){return new ak().update(t).digest()}});var m1=P((dZ,sx)=>{"use strict";g();var ok=gt(),sk=fx(),ox=mn(),cs=vt().Buffer,uk=b1(),g1=Su(),y1=Ru(),hk=cs.alloc(128);function ds(t,e){ox.call(this,"digest"),typeof e=="string"&&(e=cs.from(e));var r=t==="sha512"||t==="sha384"?128:64;if(this._alg=t,this._key=e,e.length>r){var i=t==="rmd160"?new g1:y1(t);e=i.update(e).digest()}else e.length{ck.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}});var hx=P((vZ,ux)=>{g();ux.exports=x1()});var w1=P((gZ,cx)=>{g();var dk=Math.pow(2,30)-1;cx.exports=function(t,e){if(typeof t!="number")throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if(typeof e!="number")throw new TypeError("Key length not a number");if(e<0||e>dk||e!==e)throw new TypeError("Bad key length")}});var A1=P((mZ,lx)=>{g();var Du;global.process&&global.process.browser?Du="utf-8":global.process&&global.process.version?(dx=parseInt(process.version.split(".")[0].slice(1),10),Du=dx>=6?"utf-8":"binary"):Du="utf-8";var dx;lx.exports=Du});var I1=P((wZ,px)=>{g();var _1=vt().Buffer;px.exports=function(t,e,r){if(_1.isBuffer(t))return t;if(typeof t=="string")return _1.from(t,e);if(ArrayBuffer.isView(t))return _1.from(t.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}});var E1=P((_Z,yx)=>{g();var lk=b1(),pk=Su(),vk=Ru(),Ff=vt().Buffer,bk=w1(),vx=A1(),bx=I1(),gk=Ff.alloc(128),Pu={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function gx(t,e,r){var i=yk(t),n=t==="sha512"||t==="sha384"?128:64;e.length>n?e=i(e):e.length{g();var Ax=vt().Buffer,xk=w1(),mx=A1(),xx=E1(),wx=I1(),Uu,ls=global.crypto&&global.crypto.subtle,wk={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},M1=[];function Ak(t){if(global.process&&!global.process.browser||!ls||!ls.importKey||!ls.deriveBits)return Promise.resolve(!1);if(M1[t]!==void 0)return M1[t];Uu=Uu||Ax.alloc(8);var e=_x(Uu,Uu,10,128,t).then(function(){return!0}).catch(function(){return!1});return M1[t]=e,e}var Lf;function S1(){return Lf||(global.process&&global.process.nextTick?Lf=global.process.nextTick:global.queueMicrotask?Lf=global.queueMicrotask:global.setImmediate?Lf=global.setImmediate:Lf=global.setTimeout,Lf)}function _x(t,e,r,i,n){return ls.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then(function(a){return ls.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},a,i<<3)}).then(function(a){return Ax.from(a)})}function _k(t,e){t.then(function(r){S1()(function(){e(null,r)})},function(r){S1()(function(){e(r)})})}Ix.exports=function(t,e,r,i,n,a){typeof n=="function"&&(a=n,n=void 0),n=n||"sha1";var o=wk[n.toLowerCase()];if(!o||typeof global.Promise!="function"){S1()(function(){var c;try{c=xx(t,e,r,i,n)}catch(m){return a(m)}a(null,c)});return}if(xk(r,i),t=wx(t,mx,"Password"),e=wx(e,mx,"Salt"),typeof a!="function")throw new Error("No callback provided to pbkdf2");_k(Ak(o).then(function(c){return c?_x(t,e,r,i,o):xx(t,e,r,i,n)}),a)}});var B1=P(C1=>{g();C1.pbkdf2=Ex();C1.pbkdf2Sync=E1()});var q1=P(ni=>{"use strict";g();ni.readUInt32BE=function(e,r){var i=e[0+r]<<24|e[1+r]<<16|e[2+r]<<8|e[3+r];return i>>>0};ni.writeUInt32BE=function(e,r,i){e[0+i]=r>>>24,e[1+i]=r>>>16&255,e[2+i]=r>>>8&255,e[3+i]=r&255};ni.ip=function(e,r,i,n){for(var a=0,o=0,c=6;c>=0;c-=2){for(var m=0;m<=24;m+=8)a<<=1,a|=r>>>m+c&1;for(var m=0;m<=24;m+=8)a<<=1,a|=e>>>m+c&1}for(var c=6;c>=0;c-=2){for(var m=1;m<=25;m+=8)o<<=1,o|=r>>>m+c&1;for(var m=1;m<=25;m+=8)o<<=1,o|=e>>>m+c&1}i[n+0]=a>>>0,i[n+1]=o>>>0};ni.rip=function(e,r,i,n){for(var a=0,o=0,c=0;c<4;c++)for(var m=24;m>=0;m-=8)a<<=1,a|=r>>>m+c&1,a<<=1,a|=e>>>m+c&1;for(var c=4;c<8;c++)for(var m=24;m>=0;m-=8)o<<=1,o|=r>>>m+c&1,o<<=1,o|=e>>>m+c&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.pc1=function(e,r,i,n){for(var a=0,o=0,c=7;c>=5;c--){for(var m=0;m<=24;m+=8)a<<=1,a|=r>>m+c&1;for(var m=0;m<=24;m+=8)a<<=1,a|=e>>m+c&1}for(var m=0;m<=24;m+=8)a<<=1,a|=r>>m+c&1;for(var c=1;c<=3;c++){for(var m=0;m<=24;m+=8)o<<=1,o|=r>>m+c&1;for(var m=0;m<=24;m+=8)o<<=1,o|=e>>m+c&1}for(var m=0;m<=24;m+=8)o<<=1,o|=e>>m+c&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.r28shl=function(e,r){return e<>>28-r};var ku=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];ni.pc2=function(e,r,i,n){for(var a=0,o=0,c=ku.length>>>1,m=0;m>>ku[m]&1;for(var m=c;m>>ku[m]&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.expand=function(e,r,i){var n=0,a=0;n=(e&1)<<5|e>>>27;for(var o=23;o>=15;o-=4)n<<=6,n|=e>>>o&63;for(var o=11;o>=3;o-=4)a|=e>>>o&63,a<<=6;a|=(e&31)<<1|e>>>31,r[i+0]=n>>>0,r[i+1]=a>>>0};var Mx=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];ni.substitute=function(e,r){for(var i=0,n=0;n<4;n++){var a=e>>>18-n*6&63,o=Mx[n*64+a];i<<=4,i|=o}for(var n=0;n<4;n++){var a=r>>>18-n*6&63,o=Mx[4*64+n*64+a];i<<=4,i|=o}return i>>>0};var Sx=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];ni.permute=function(e){for(var r=0,i=0;i>>Sx[i]&1;return r>>>0};ni.padSplit=function(e,r,i){for(var n=e.toString(2);n.length{g();Bx.exports=Cx;function Cx(t,e){if(!t)throw new Error(e||"Assertion failed")}Cx.equal=function(e,r,i){if(e!=r)throw new Error(i||"Assertion failed: "+e+" != "+r)}});var Fu=P((OZ,qx)=>{"use strict";g();var Ik=zr();function fi(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}qx.exports=fi;fi.prototype._init=function(){};fi.prototype.update=function(e){return e.length===0?[]:this.type==="decrypt"?this._updateDecrypt(e):this._updateEncrypt(e)};fi.prototype._buffer=function(e,r){for(var i=Math.min(this.buffer.length-this.bufferOff,e.length-r),n=0;n0;n--)r+=this._buffer(e,r),i+=this._flushBuffer(a,i);return r+=this._buffer(e,r),a};fi.prototype.final=function(e){var r;e&&(r=this.update(e));var i;return this.type==="encrypt"?i=this._finalEncrypt():i=this._finalDecrypt(),r?r.concat(i):i};fi.prototype._pad=function(e,r){if(r===0)return!1;for(;r{"use strict";g();var Rx=zr(),Ek=gt(),or=q1(),Tx=Fu();function Mk(){this.tmp=new Array(2),this.keys=null}function Gi(t){Tx.call(this,t);var e=new Mk;this._desState=e,this.deriveKeys(e,t.key)}Ek(Gi,Tx);Ox.exports=Gi;Gi.create=function(e){return new Gi(e)};var Sk=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];Gi.prototype.deriveKeys=function(e,r){e.keys=new Array(16*2),Rx.equal(r.length,this.blockSize,"Invalid key length");var i=or.readUInt32BE(r,0),n=or.readUInt32BE(r,4);or.pc1(i,n,e.tmp,0),i=e.tmp[0],n=e.tmp[1];for(var a=0;a>>1];i=or.r28shl(i,o),n=or.r28shl(n,o),or.pc2(i,n,e.keys,a)}};Gi.prototype._update=function(e,r,i,n){var a=this._desState,o=or.readUInt32BE(e,r),c=or.readUInt32BE(e,r+4);or.ip(o,c,a.tmp,0),o=a.tmp[0],c=a.tmp[1],this.type==="encrypt"?this._encrypt(a,o,c,a.tmp,0):this._decrypt(a,o,c,a.tmp,0),o=a.tmp[0],c=a.tmp[1],or.writeUInt32BE(i,o,n),or.writeUInt32BE(i,c,n+4)};Gi.prototype._pad=function(e,r){for(var i=e.length-r,n=r;n>>0,o=N}or.rip(c,o,n,a)};Gi.prototype._decrypt=function(e,r,i,n,a){for(var o=i,c=r,m=e.keys.length-2;m>=0;m-=2){var M=e.keys[m],B=e.keys[m+1];or.expand(o,e.tmp,0),M^=e.tmp[0],B^=e.tmp[1];var R=or.substitute(M,B),F=or.permute(R),N=o;o=(c^F)>>>0,c=N}or.rip(o,c,n,a)}});var Px=P(Dx=>{"use strict";g();var Ck=zr(),Bk=gt(),Lu={};function qk(t){Ck.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e{"use strict";g();var Tk=zr(),Ok=gt(),Ux=Fu(),Xn=R1();function Dk(t,e){Tk.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),i=e.slice(8,16),n=e.slice(16,24);t==="encrypt"?this.ciphers=[Xn.create({type:"encrypt",key:r}),Xn.create({type:"decrypt",key:i}),Xn.create({type:"encrypt",key:n})]:this.ciphers=[Xn.create({type:"decrypt",key:n}),Xn.create({type:"encrypt",key:i}),Xn.create({type:"decrypt",key:r})]}function Nf(t){Ux.call(this,t);var e=new Dk(this.type,this.options.key);this._edeState=e}Ok(Nf,Ux);kx.exports=Nf;Nf.create=function(e){return new Nf(e)};Nf.prototype._update=function(e,r,i,n){var a=this._edeState;a.ciphers[0]._update(e,r,i,n),a.ciphers[1]._update(i,n,i,n),a.ciphers[2]._update(i,n,i,n)};Nf.prototype._pad=Xn.prototype._pad;Nf.prototype._unpad=Xn.prototype._unpad});var Lx=P(Ca=>{"use strict";g();Ca.utils=q1();Ca.Cipher=Fu();Ca.DES=R1();Ca.CBC=Px();Ca.EDE=Fx()});var Kx=P((jZ,Qx)=>{g();var Nx=mn(),xn=Lx(),Pk=gt(),Qf=vt().Buffer,ps={"des-ede3-cbc":xn.CBC.instantiate(xn.EDE),"des-ede3":xn.EDE,"des-ede-cbc":xn.CBC.instantiate(xn.EDE),"des-ede":xn.EDE,"des-cbc":xn.CBC.instantiate(xn.DES),"des-ecb":xn.DES};ps.des=ps["des-cbc"];ps.des3=ps["des-ede3-cbc"];Qx.exports=Nu;Pk(Nu,Nx);function Nu(t){Nx.call(this);var e=t.mode.toLowerCase(),r=ps[e],i;t.decrypt?i="decrypt":i="encrypt";var n=t.key;Qf.isBuffer(n)||(n=Qf.from(n)),(e==="des-ede"||e==="des-ede-cbc")&&(n=Qf.concat([n,n.slice(0,8)]));var a=t.iv;Qf.isBuffer(a)||(a=Qf.from(a)),this._des=r.create({key:n,iv:a,type:i})}Nu.prototype._update=function(t){return Qf.from(this._des.update(t))};Nu.prototype._final=function(){return Qf.from(this._des.final())}});var jx=P(T1=>{g();T1.encrypt=function(t,e){return t._cipher.encryptBlock(e)};T1.decrypt=function(t,e){return t._cipher.decryptBlock(e)}});var Ba=P((YZ,Hx)=>{g();var Uk=vt().Buffer;Hx.exports=function(e,r){for(var i=Math.max(e.length,r.length),n=Uk.allocUnsafe(i),a=0;a{g();var zx=Ba();O1.encrypt=function(t,e){var r=zx(e,t._prev);return t._prev=t._cipher.encryptBlock(r),t._prev};O1.decrypt=function(t,e){var r=t._prev;t._prev=e;var i=t._cipher.decryptBlock(e);return zx(i,r)}});var $x=P(Vx=>{g();var vs=vt().Buffer,kk=Ba();function Yx(t,e,r){var i=e.length,n=kk(e,t._cache);return t._cache=t._cache.slice(i),t._prev=vs.concat([t._prev,r?e:n]),n}Vx.encrypt=function(t,e,r){for(var i=vs.allocUnsafe(0),n;e.length;)if(t._cache.length===0&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=vs.allocUnsafe(0)),t._cache.length<=e.length)n=t._cache.length,i=vs.concat([i,Yx(t,e.slice(0,n),r)]),e=e.slice(n);else{i=vs.concat([i,Yx(t,e,r)]);break}return i}});var Jx=P(Wx=>{g();var D1=vt().Buffer;function Fk(t,e,r){var i=t._cipher.encryptBlock(t._prev),n=i[0]^e;return t._prev=D1.concat([t._prev.slice(1),D1.from([r?e:n])]),n}Wx.encrypt=function(t,e,r){for(var i=e.length,n=D1.allocUnsafe(i),a=-1;++a{g();var Qu=vt().Buffer;function Lk(t,e,r){for(var i,n=-1,a=8,o=0,c,m;++n>n%8,t._prev=Nk(t._prev,r?c:m);return o}function Nk(t,e){var r=t.length,i=-1,n=Qu.allocUnsafe(t.length);for(t=Qu.concat([t,Qu.from([e])]);++i>7;return n}Xx.encrypt=function(t,e,r){for(var i=e.length,n=Qu.allocUnsafe(i),a=-1;++a{g();var Qk=Ba();function Kk(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}ew.encrypt=function(t,e){for(;t._cache.length{g();function jk(t){for(var e=t.length,r;e--;)if(r=t.readUInt8(e),r===255)t.writeUInt8(0,e);else{r++,t.writeUInt8(r,e);break}}rw.exports=jk});var k1=P(nw=>{g();var Hk=Ba(),iw=vt().Buffer,zk=P1();function Gk(t){var e=t._cipher.encryptBlockRaw(t._prev);return zk(t._prev),e}var U1=16;nw.encrypt=function(t,e){var r=Math.ceil(e.length/U1),i=t._cache.length;t._cache=iw.concat([t._cache,iw.allocUnsafe(r*U1)]);for(var n=0;n{Yk.exports={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},aes192:{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},aes256:{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}}});var ju=P((hee,fw)=>{g();var Vk={ECB:jx(),CBC:Gx(),CFB:$x(),CFB8:Jx(),CFB1:Zx(),OFB:tw(),CTR:k1(),GCM:k1()},Ku=F1();for(L1 in Ku)Ku[L1].module=Vk[Ku[L1].mode];var L1;fw.exports=Ku});var bs=P((dee,ow)=>{g();var Hu=vt().Buffer;function Q1(t){Hu.isBuffer(t)||(t=Hu.from(t));for(var e=t.length/4|0,r=new Array(e),i=0;i>>24]^o[B>>>16&255]^c[R>>>8&255]^m[F&255]^e[fe++],G=a[B>>>24]^o[R>>>16&255]^c[F>>>8&255]^m[M&255]^e[fe++],Z=a[R>>>24]^o[F>>>16&255]^c[M>>>8&255]^m[B&255]^e[fe++],ie=a[F>>>24]^o[M>>>16&255]^c[B>>>8&255]^m[R&255]^e[fe++],M=N,B=G,R=Z,F=ie;return N=(i[M>>>24]<<24|i[B>>>16&255]<<16|i[R>>>8&255]<<8|i[F&255])^e[fe++],G=(i[B>>>24]<<24|i[R>>>16&255]<<16|i[F>>>8&255]<<8|i[M&255])^e[fe++],Z=(i[R>>>24]<<24|i[F>>>16&255]<<16|i[M>>>8&255]<<8|i[B&255])^e[fe++],ie=(i[F>>>24]<<24|i[M>>>16&255]<<16|i[B>>>8&255]<<8|i[R&255])^e[fe++],N=N>>>0,G=G>>>0,Z=Z>>>0,ie=ie>>>0,[N,G,Z,ie]}var $k=[0,1,2,4,8,16,32,64,128,27,54],nr=function(){for(var t=new Array(256),e=0;e<256;e++)e<128?t[e]=e<<1:t[e]=e<<1^283;for(var r=[],i=[],n=[[],[],[],[]],a=[[],[],[],[]],o=0,c=0,m=0;m<256;++m){var M=c^c<<1^c<<2^c<<3^c<<4;M=M>>>8^M&255^99,r[o]=M,i[M]=o;var B=t[o],R=t[B],F=t[R],N=t[M]*257^M*16843008;n[0][o]=N<<24|N>>>8,n[1][o]=N<<16|N>>>16,n[2][o]=N<<8|N>>>24,n[3][o]=N,N=F*16843009^R*65537^B*257^o*16843008,a[0][M]=N<<24|N>>>8,a[1][M]=N<<16|N>>>16,a[2][M]=N<<8|N>>>24,a[3][M]=N,o===0?o=c=1:(o=B^t[t[t[F^B]]],c^=t[t[c]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function ai(t){this._key=Q1(t),this._reset()}ai.blockSize=4*4;ai.keySize=256/8;ai.prototype.blockSize=ai.blockSize;ai.prototype.keySize=ai.keySize;ai.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,i=(r+1)*4,n=[],a=0;a>>24,o=nr.SBOX[o>>>24]<<24|nr.SBOX[o>>>16&255]<<16|nr.SBOX[o>>>8&255]<<8|nr.SBOX[o&255],o^=$k[a/e|0]<<24):e>6&&a%e===4&&(o=nr.SBOX[o>>>24]<<24|nr.SBOX[o>>>16&255]<<16|nr.SBOX[o>>>8&255]<<8|nr.SBOX[o&255]),n[a]=n[a-e]^o}for(var c=[],m=0;m>>24]]^nr.INV_SUB_MIX[1][nr.SBOX[B>>>16&255]]^nr.INV_SUB_MIX[2][nr.SBOX[B>>>8&255]]^nr.INV_SUB_MIX[3][nr.SBOX[B&255]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=c};ai.prototype.encryptBlockRaw=function(t){return t=Q1(t),aw(t,this._keySchedule,nr.SUB_MIX,nr.SBOX,this._nRounds)};ai.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=Hu.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r};ai.prototype.decryptBlock=function(t){t=Q1(t);var e=t[1];t[1]=t[3],t[3]=e;var r=aw(t,this._invKeySchedule,nr.INV_SUB_MIX,nr.INV_SBOX,this._nRounds),i=Hu.allocUnsafe(16);return i.writeUInt32BE(r[0],0),i.writeUInt32BE(r[3],4),i.writeUInt32BE(r[2],8),i.writeUInt32BE(r[1],12),i};ai.prototype.scrub=function(){N1(this._keySchedule),N1(this._invKeySchedule),N1(this._key)};ow.exports.AES=ai});var hw=P((pee,uw)=>{g();var qa=vt().Buffer,Wk=qa.alloc(16,0);function Jk(t){return[t.readUInt32BE(0),t.readUInt32BE(4),t.readUInt32BE(8),t.readUInt32BE(12)]}function sw(t){var e=qa.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function gs(t){this.h=t,this.state=qa.alloc(16,0),this.cache=qa.allocUnsafe(0)}gs.prototype.ghash=function(t){for(var e=-1;++e0;r--)t[r]=t[r]>>>1|(t[r-1]&1)<<31;t[0]=t[0]>>>1,n&&(t[0]=t[0]^225<<24)}this.state=sw(e)};gs.prototype.update=function(t){this.cache=qa.concat([this.cache,t]);for(var e;this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)};gs.prototype.final=function(t,e){return this.cache.length&&this.ghash(qa.concat([this.cache,Wk],16)),this.ghash(sw([0,t,0,e])),this.state};uw.exports=gs});var K1=P((bee,lw)=>{g();var Xk=bs(),kr=vt().Buffer,cw=mn(),Zk=gt(),dw=hw(),eF=Ba(),tF=P1();function rF(t,e){var r=0;t.length!==e.length&&r++;for(var i=Math.min(t.length,e.length),n=0;n{g();var nF=bs(),j1=vt().Buffer,pw=mn(),fF=gt();function zu(t,e,r,i){pw.call(this),this._cipher=new nF.AES(e),this._prev=j1.from(r),this._cache=j1.allocUnsafe(0),this._secCache=j1.allocUnsafe(0),this._decrypt=i,this._mode=t}fF(zu,pw);zu.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)};zu.prototype._final=function(){this._cipher.scrub()};vw.exports=zu});var ys=P((xee,bw)=>{g();var jf=vt().Buffer,aF=Eu();function oF(t,e,r,i){if(jf.isBuffer(t)||(t=jf.from(t,"binary")),e&&(jf.isBuffer(e)||(e=jf.from(e,"binary")),e.length!==8))throw new RangeError("salt should be Buffer with 8 byte length");for(var n=r/8,a=jf.alloc(n),o=jf.alloc(i||0),c=jf.alloc(0);n>0||i>0;){var m=new aF;m.update(c),m.update(t),e&&m.update(e),c=m.digest();var M=0;if(n>0){var B=a.length-n;M=Math.min(n,c.length),c.copy(a,B,0,M),n-=M}if(M0){var R=o.length-i,F=Math.min(i,c.length-M);c.copy(o,R,M,M+F),i-=F}}return c.fill(0),{key:a,iv:o}}bw.exports=oF});var xw=P(z1=>{g();var gw=ju(),sF=K1(),wn=vt().Buffer,uF=H1(),yw=mn(),hF=bs(),cF=ys(),dF=gt();function ms(t,e,r){yw.call(this),this._cache=new Gu,this._cipher=new hF.AES(e),this._prev=wn.from(r),this._mode=t,this._autopadding=!0}dF(ms,yw);ms.prototype._update=function(t){this._cache.add(t);for(var e,r,i=[];e=this._cache.get();)r=this._mode.encrypt(this,e),i.push(r);return wn.concat(i)};var lF=wn.alloc(16,16);ms.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(lF))throw this._cipher.scrub(),new Error("data not multiple of block length")};ms.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this};function Gu(){this.cache=wn.allocUnsafe(0)}Gu.prototype.add=function(t){this.cache=wn.concat([this.cache,t])};Gu.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null};Gu.prototype.flush=function(){for(var t=16-this.cache.length,e=wn.allocUnsafe(t),r=-1;++r{g();var vF=K1(),Ra=vt().Buffer,ww=ju(),bF=H1(),Aw=mn(),gF=bs(),yF=ys(),mF=gt();function xs(t,e,r){Aw.call(this),this._cache=new Yu,this._last=void 0,this._cipher=new gF.AES(e),this._prev=Ra.from(r),this._mode=t,this._autopadding=!0}mF(xs,Aw);xs.prototype._update=function(t){this._cache.add(t);for(var e,r,i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return Ra.concat(i)};xs.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return xF(this._mode.decrypt(this,t));if(t)throw new Error("data not multiple of block length")};xs.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this};function Yu(){this.cache=Ra.allocUnsafe(0)}Yu.prototype.add=function(t){this.cache=Ra.concat([this.cache,t])};Yu.prototype.get=function(t){var e;if(t){if(this.cache.length>16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null};Yu.prototype.flush=function(){if(this.cache.length)return this.cache};function xF(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");for(var r=-1;++r{g();var Ew=xw(),Mw=Iw(),AF=F1();function _F(){return Object.keys(AF)}Ii.createCipher=Ii.Cipher=Ew.createCipher;Ii.createCipheriv=Ii.Cipheriv=Ew.createCipheriv;Ii.createDecipher=Ii.Decipher=Mw.createDecipher;Ii.createDecipheriv=Ii.Decipheriv=Mw.createDecipheriv;Ii.listCiphers=Ii.getCiphers=_F});var Sw=P(An=>{g();An["des-ecb"]={key:8,iv:0};An["des-cbc"]=An.des={key:8,iv:8};An["des-ede3-cbc"]=An.des3={key:24,iv:8};An["des-ede3"]={key:24,iv:0};An["des-ede-cbc"]={key:16,iv:8};An["des-ede"]={key:16,iv:0}});var Tw=P(Ei=>{g();var Cw=Kx(),Y1=Vu(),Zn=ju(),_n=Sw(),Bw=ys();function IF(t,e){t=t.toLowerCase();var r,i;if(Zn[t])r=Zn[t].key,i=Zn[t].iv;else if(_n[t])r=_n[t].key*8,i=_n[t].iv;else throw new TypeError("invalid suite type");var n=Bw(e,!1,r,i);return qw(t,n.key,n.iv)}function EF(t,e){t=t.toLowerCase();var r,i;if(Zn[t])r=Zn[t].key,i=Zn[t].iv;else if(_n[t])r=_n[t].key*8,i=_n[t].iv;else throw new TypeError("invalid suite type");var n=Bw(e,!1,r,i);return Rw(t,n.key,n.iv)}function qw(t,e,r){if(t=t.toLowerCase(),Zn[t])return Y1.createCipheriv(t,e,r);if(_n[t])return new Cw({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function Rw(t,e,r){if(t=t.toLowerCase(),Zn[t])return Y1.createDecipheriv(t,e,r);if(_n[t])return new Cw({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}function MF(){return Object.keys(_n).concat(Y1.getCiphers())}Ei.createCipher=Ei.Cipher=IF;Ei.createCipheriv=Ei.Cipheriv=qw;Ei.createDecipher=Ei.Decipher=EF;Ei.createDecipheriv=Ei.Decipheriv=Rw;Ei.listCiphers=Ei.getCiphers=MF});var $u=P(()=>{g()});var sr=P((Ow,V1)=>{g();(function(t,e){"use strict";function r(k,d){if(!k)throw new Error(d||"Assertion failed")}function i(k,d){k.super_=d;var b=function(){};b.prototype=d.prototype,k.prototype=new b,k.prototype.constructor=k}function n(k,d,b){if(n.isBN(k))return k;this.negative=0,this.words=null,this.length=0,this.red=null,k!==null&&((d==="le"||d==="be")&&(b=d,d=10),this._init(k||0,d||10,b||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{a=$u().Buffer}catch{}n.isBN=function(d){return d instanceof n?!0:d!==null&&typeof d=="object"&&d.constructor.wordSize===n.wordSize&&Array.isArray(d.words)},n.max=function(d,b){return d.cmp(b)>0?d:b},n.min=function(d,b){return d.cmp(b)<0?d:b},n.prototype._init=function(d,b,E){if(typeof d=="number")return this._initNumber(d,b,E);if(typeof d=="object")return this._initArray(d,b,E);b==="hex"&&(b=16),r(b===(b|0)&&b>=2&&b<=36),d=d.toString().replace(/\s+/g,"");var p=0;d[0]==="-"&&p++,b===16?this._parseHex(d,p):this._parseBase(d,b,p),d[0]==="-"&&(this.negative=1),this.strip(),E==="le"&&this._initArray(this.toArray(),b,E)},n.prototype._initNumber=function(d,b,E){d<0&&(this.negative=1,d=-d),d<67108864?(this.words=[d&67108863],this.length=1):d<4503599627370496?(this.words=[d&67108863,d/67108864&67108863],this.length=2):(r(d<9007199254740992),this.words=[d&67108863,d/67108864&67108863,1],this.length=3),E==="le"&&this._initArray(this.toArray(),b,E)},n.prototype._initArray=function(d,b,E){if(r(typeof d.length=="number"),d.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(d.length/3),this.words=new Array(this.length);for(var p=0;p=0;p-=3)s=d[p]|d[p-1]<<8|d[p-2]<<16,this.words[f]|=s<>>26-v&67108863,v+=24,v>=26&&(v-=26,f++);else if(E==="le")for(p=0,f=0;p>>26-v&67108863,v+=24,v>=26&&(v-=26,f++);return this.strip()};function o(k,d,b){for(var E=0,p=Math.min(k.length,b),f=d;f=49&&s<=54?E|=s-49+10:s>=17&&s<=22?E|=s-17+10:E|=s&15}return E}n.prototype._parseHex=function(d,b){this.length=Math.ceil((d.length-b)/6),this.words=new Array(this.length);for(var E=0;E=b;E-=6)f=o(d,E,E+6),this.words[p]|=f<>>26-s&4194303,s+=24,s>=26&&(s-=26,p++);E+6!==b&&(f=o(d,b,E+6),this.words[p]|=f<>>26-s&4194303),this.strip()};function c(k,d,b,E){for(var p=0,f=Math.min(k.length,b),s=d;s=49?p+=v-49+10:v>=17?p+=v-17+10:p+=v}return p}n.prototype._parseBase=function(d,b,E){this.words=[0],this.length=1;for(var p=0,f=1;f<=67108863;f*=b)p++;p--,f=f/b|0;for(var s=d.length-E,v=s%p,l=Math.min(s,s-v)+E,h=0,A=E;A1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var m=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],B=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(d,b){d=d||10,b=b|0||1;var E;if(d===16||d==="hex"){E="";for(var p=0,f=0,s=0;s>>24-p&16777215,f!==0||s!==this.length-1?E=m[6-l.length]+l+E:E=l+E,p+=2,p>=26&&(p-=26,s--)}for(f!==0&&(E=f.toString(16)+E);E.length%b!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}if(d===(d|0)&&d>=2&&d<=36){var h=M[d],A=B[d];E="";var q=this.clone();for(q.negative=0;!q.isZero();){var _=q.modn(A).toString(d);q=q.idivn(A),q.isZero()?E=_+E:E=m[h-_.length]+_+E}for(this.isZero()&&(E="0"+E);E.length%b!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var d=this.words[0];return this.length===2?d+=this.words[1]*67108864:this.length===3&&this.words[2]===1?d+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-d:d},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(d,b){return r(typeof a<"u"),this.toArrayLike(a,d,b)},n.prototype.toArray=function(d,b){return this.toArrayLike(Array,d,b)},n.prototype.toArrayLike=function(d,b,E){var p=this.byteLength(),f=E||Math.max(1,p);r(p<=f,"byte array longer than desired length"),r(f>0,"Requested array length <= 0"),this.strip();var s=b==="le",v=new d(f),l,h,A=this.clone();if(s){for(h=0;!A.isZero();h++)l=A.andln(255),A.iushrn(8),v[h]=l;for(;h=4096&&(E+=13,b>>>=13),b>=64&&(E+=7,b>>>=7),b>=8&&(E+=4,b>>>=4),b>=2&&(E+=2,b>>>=2),E+b},n.prototype._zeroBits=function(d){if(d===0)return 26;var b=d,E=0;return(b&8191)===0&&(E+=13,b>>>=13),(b&127)===0&&(E+=7,b>>>=7),(b&15)===0&&(E+=4,b>>>=4),(b&3)===0&&(E+=2,b>>>=2),(b&1)===0&&E++,E},n.prototype.bitLength=function(){var d=this.words[this.length-1],b=this._countBits(d);return(this.length-1)*26+b};function R(k){for(var d=new Array(k.bitLength()),b=0;b>>p}return d}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var d=0,b=0;bd.length?this.clone().ior(d):d.clone().ior(this)},n.prototype.uor=function(d){return this.length>d.length?this.clone().iuor(d):d.clone().iuor(this)},n.prototype.iuand=function(d){var b;this.length>d.length?b=d:b=this;for(var E=0;Ed.length?this.clone().iand(d):d.clone().iand(this)},n.prototype.uand=function(d){return this.length>d.length?this.clone().iuand(d):d.clone().iuand(this)},n.prototype.iuxor=function(d){var b,E;this.length>d.length?(b=this,E=d):(b=d,E=this);for(var p=0;pd.length?this.clone().ixor(d):d.clone().ixor(this)},n.prototype.uxor=function(d){return this.length>d.length?this.clone().iuxor(d):d.clone().iuxor(this)},n.prototype.inotn=function(d){r(typeof d=="number"&&d>=0);var b=Math.ceil(d/26)|0,E=d%26;this._expand(b),E>0&&b--;for(var p=0;p0&&(this.words[p]=~this.words[p]&67108863>>26-E),this.strip()},n.prototype.notn=function(d){return this.clone().inotn(d)},n.prototype.setn=function(d,b){r(typeof d=="number"&&d>=0);var E=d/26|0,p=d%26;return this._expand(E+1),b?this.words[E]=this.words[E]|1<d.length?(E=this,p=d):(E=d,p=this);for(var f=0,s=0;s>>26;for(;f!==0&&s>>26;if(this.length=E.length,f!==0)this.words[this.length]=f,this.length++;else if(E!==this)for(;sd.length?this.clone().iadd(d):d.clone().iadd(this)},n.prototype.isub=function(d){if(d.negative!==0){d.negative=0;var b=this.iadd(d);return d.negative=1,b._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(d),this.negative=1,this._normSign();var E=this.cmp(d);if(E===0)return this.negative=0,this.length=1,this.words[0]=0,this;var p,f;E>0?(p=this,f=d):(p=d,f=this);for(var s=0,v=0;v>26,this.words[v]=b&67108863;for(;s!==0&&v>26,this.words[v]=b&67108863;if(s===0&&v>>26,q=l&67108863,_=Math.min(h,d.length-1),u=Math.max(0,h-k.length+1);u<=_;u++){var I=h-u|0;p=k.words[I]|0,f=d.words[u]|0,s=p*f+q,A+=s/67108864|0,q=s&67108863}b.words[h]=q|0,l=A|0}return l!==0?b.words[h]=l|0:b.length--,b.strip()}var N=function(d,b,E){var p=d.words,f=b.words,s=E.words,v=0,l,h,A,q=p[0]|0,_=q&8191,u=q>>>13,I=p[1]|0,j=I&8191,S=I>>>13,L=p[2]|0,Q=L&8191,z=L>>>13,J=p[3]|0,he=J&8191,W=J>>>13,te=p[4]|0,Qe=te&8191,ne=te>>>13,ye=p[5]|0,Rt=ye&8191,Pe=ye>>>13,We=p[6]|0,It=We&8191,Ue=We>>>13,tt=p[7]|0,St=tt&8191,Re=tt>>>13,rt=p[8]|0,Et=rt&8191,Oe=rt>>>13,it=p[9]|0,Tt=it&8191,ke=it>>>13,nt=f[0]|0,Ct=nt&8191,Te=nt>>>13,Ze=f[1]|0,wt=Ze&8191,Be=Ze>>>13,et=f[2]|0,_t=et&8191,qe=et>>>13,ft=f[3]|0,Ot=ft&8191,Fe=ft>>>13,ut=f[4]|0,lt=ut&8191,Se=ut>>>13,Xe=f[5]|0,Bt=Xe&8191,De=Xe>>>13,at=f[6]|0,Ut=at&8191,_e=at>>>13,ot=f[7]|0,C=ot&8191,T=ot>>>13,O=f[8]|0,w=O&8191,D=O>>>13,H=f[9]|0,Y=H&8191,V=H>>>13;E.negative=d.negative^b.negative,E.length=19,l=Math.imul(_,Ct),h=Math.imul(_,Te),h=h+Math.imul(u,Ct)|0,A=Math.imul(u,Te);var ee=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ee>>>26)|0,ee&=67108863,l=Math.imul(j,Ct),h=Math.imul(j,Te),h=h+Math.imul(S,Ct)|0,A=Math.imul(S,Te),l=l+Math.imul(_,wt)|0,h=h+Math.imul(_,Be)|0,h=h+Math.imul(u,wt)|0,A=A+Math.imul(u,Be)|0;var Ee=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(Q,Ct),h=Math.imul(Q,Te),h=h+Math.imul(z,Ct)|0,A=Math.imul(z,Te),l=l+Math.imul(j,wt)|0,h=h+Math.imul(j,Be)|0,h=h+Math.imul(S,wt)|0,A=A+Math.imul(S,Be)|0,l=l+Math.imul(_,_t)|0,h=h+Math.imul(_,qe)|0,h=h+Math.imul(u,_t)|0,A=A+Math.imul(u,qe)|0;var ae=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(he,Ct),h=Math.imul(he,Te),h=h+Math.imul(W,Ct)|0,A=Math.imul(W,Te),l=l+Math.imul(Q,wt)|0,h=h+Math.imul(Q,Be)|0,h=h+Math.imul(z,wt)|0,A=A+Math.imul(z,Be)|0,l=l+Math.imul(j,_t)|0,h=h+Math.imul(j,qe)|0,h=h+Math.imul(S,_t)|0,A=A+Math.imul(S,qe)|0,l=l+Math.imul(_,Ot)|0,h=h+Math.imul(_,Fe)|0,h=h+Math.imul(u,Ot)|0,A=A+Math.imul(u,Fe)|0;var xe=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(xe>>>26)|0,xe&=67108863,l=Math.imul(Qe,Ct),h=Math.imul(Qe,Te),h=h+Math.imul(ne,Ct)|0,A=Math.imul(ne,Te),l=l+Math.imul(he,wt)|0,h=h+Math.imul(he,Be)|0,h=h+Math.imul(W,wt)|0,A=A+Math.imul(W,Be)|0,l=l+Math.imul(Q,_t)|0,h=h+Math.imul(Q,qe)|0,h=h+Math.imul(z,_t)|0,A=A+Math.imul(z,qe)|0,l=l+Math.imul(j,Ot)|0,h=h+Math.imul(j,Fe)|0,h=h+Math.imul(S,Ot)|0,A=A+Math.imul(S,Fe)|0,l=l+Math.imul(_,lt)|0,h=h+Math.imul(_,Se)|0,h=h+Math.imul(u,lt)|0,A=A+Math.imul(u,Se)|0;var we=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(we>>>26)|0,we&=67108863,l=Math.imul(Rt,Ct),h=Math.imul(Rt,Te),h=h+Math.imul(Pe,Ct)|0,A=Math.imul(Pe,Te),l=l+Math.imul(Qe,wt)|0,h=h+Math.imul(Qe,Be)|0,h=h+Math.imul(ne,wt)|0,A=A+Math.imul(ne,Be)|0,l=l+Math.imul(he,_t)|0,h=h+Math.imul(he,qe)|0,h=h+Math.imul(W,_t)|0,A=A+Math.imul(W,qe)|0,l=l+Math.imul(Q,Ot)|0,h=h+Math.imul(Q,Fe)|0,h=h+Math.imul(z,Ot)|0,A=A+Math.imul(z,Fe)|0,l=l+Math.imul(j,lt)|0,h=h+Math.imul(j,Se)|0,h=h+Math.imul(S,lt)|0,A=A+Math.imul(S,Se)|0,l=l+Math.imul(_,Bt)|0,h=h+Math.imul(_,De)|0,h=h+Math.imul(u,Bt)|0,A=A+Math.imul(u,De)|0;var je=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(je>>>26)|0,je&=67108863,l=Math.imul(It,Ct),h=Math.imul(It,Te),h=h+Math.imul(Ue,Ct)|0,A=Math.imul(Ue,Te),l=l+Math.imul(Rt,wt)|0,h=h+Math.imul(Rt,Be)|0,h=h+Math.imul(Pe,wt)|0,A=A+Math.imul(Pe,Be)|0,l=l+Math.imul(Qe,_t)|0,h=h+Math.imul(Qe,qe)|0,h=h+Math.imul(ne,_t)|0,A=A+Math.imul(ne,qe)|0,l=l+Math.imul(he,Ot)|0,h=h+Math.imul(he,Fe)|0,h=h+Math.imul(W,Ot)|0,A=A+Math.imul(W,Fe)|0,l=l+Math.imul(Q,lt)|0,h=h+Math.imul(Q,Se)|0,h=h+Math.imul(z,lt)|0,A=A+Math.imul(z,Se)|0,l=l+Math.imul(j,Bt)|0,h=h+Math.imul(j,De)|0,h=h+Math.imul(S,Bt)|0,A=A+Math.imul(S,De)|0,l=l+Math.imul(_,Ut)|0,h=h+Math.imul(_,_e)|0,h=h+Math.imul(u,Ut)|0,A=A+Math.imul(u,_e)|0;var ze=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ze>>>26)|0,ze&=67108863,l=Math.imul(St,Ct),h=Math.imul(St,Te),h=h+Math.imul(Re,Ct)|0,A=Math.imul(Re,Te),l=l+Math.imul(It,wt)|0,h=h+Math.imul(It,Be)|0,h=h+Math.imul(Ue,wt)|0,A=A+Math.imul(Ue,Be)|0,l=l+Math.imul(Rt,_t)|0,h=h+Math.imul(Rt,qe)|0,h=h+Math.imul(Pe,_t)|0,A=A+Math.imul(Pe,qe)|0,l=l+Math.imul(Qe,Ot)|0,h=h+Math.imul(Qe,Fe)|0,h=h+Math.imul(ne,Ot)|0,A=A+Math.imul(ne,Fe)|0,l=l+Math.imul(he,lt)|0,h=h+Math.imul(he,Se)|0,h=h+Math.imul(W,lt)|0,A=A+Math.imul(W,Se)|0,l=l+Math.imul(Q,Bt)|0,h=h+Math.imul(Q,De)|0,h=h+Math.imul(z,Bt)|0,A=A+Math.imul(z,De)|0,l=l+Math.imul(j,Ut)|0,h=h+Math.imul(j,_e)|0,h=h+Math.imul(S,Ut)|0,A=A+Math.imul(S,_e)|0,l=l+Math.imul(_,C)|0,h=h+Math.imul(_,T)|0,h=h+Math.imul(u,C)|0,A=A+Math.imul(u,T)|0;var Ye=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,l=Math.imul(Et,Ct),h=Math.imul(Et,Te),h=h+Math.imul(Oe,Ct)|0,A=Math.imul(Oe,Te),l=l+Math.imul(St,wt)|0,h=h+Math.imul(St,Be)|0,h=h+Math.imul(Re,wt)|0,A=A+Math.imul(Re,Be)|0,l=l+Math.imul(It,_t)|0,h=h+Math.imul(It,qe)|0,h=h+Math.imul(Ue,_t)|0,A=A+Math.imul(Ue,qe)|0,l=l+Math.imul(Rt,Ot)|0,h=h+Math.imul(Rt,Fe)|0,h=h+Math.imul(Pe,Ot)|0,A=A+Math.imul(Pe,Fe)|0,l=l+Math.imul(Qe,lt)|0,h=h+Math.imul(Qe,Se)|0,h=h+Math.imul(ne,lt)|0,A=A+Math.imul(ne,Se)|0,l=l+Math.imul(he,Bt)|0,h=h+Math.imul(he,De)|0,h=h+Math.imul(W,Bt)|0,A=A+Math.imul(W,De)|0,l=l+Math.imul(Q,Ut)|0,h=h+Math.imul(Q,_e)|0,h=h+Math.imul(z,Ut)|0,A=A+Math.imul(z,_e)|0,l=l+Math.imul(j,C)|0,h=h+Math.imul(j,T)|0,h=h+Math.imul(S,C)|0,A=A+Math.imul(S,T)|0,l=l+Math.imul(_,w)|0,h=h+Math.imul(_,D)|0,h=h+Math.imul(u,w)|0,A=A+Math.imul(u,D)|0;var Ge=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,l=Math.imul(Tt,Ct),h=Math.imul(Tt,Te),h=h+Math.imul(ke,Ct)|0,A=Math.imul(ke,Te),l=l+Math.imul(Et,wt)|0,h=h+Math.imul(Et,Be)|0,h=h+Math.imul(Oe,wt)|0,A=A+Math.imul(Oe,Be)|0,l=l+Math.imul(St,_t)|0,h=h+Math.imul(St,qe)|0,h=h+Math.imul(Re,_t)|0,A=A+Math.imul(Re,qe)|0,l=l+Math.imul(It,Ot)|0,h=h+Math.imul(It,Fe)|0,h=h+Math.imul(Ue,Ot)|0,A=A+Math.imul(Ue,Fe)|0,l=l+Math.imul(Rt,lt)|0,h=h+Math.imul(Rt,Se)|0,h=h+Math.imul(Pe,lt)|0,A=A+Math.imul(Pe,Se)|0,l=l+Math.imul(Qe,Bt)|0,h=h+Math.imul(Qe,De)|0,h=h+Math.imul(ne,Bt)|0,A=A+Math.imul(ne,De)|0,l=l+Math.imul(he,Ut)|0,h=h+Math.imul(he,_e)|0,h=h+Math.imul(W,Ut)|0,A=A+Math.imul(W,_e)|0,l=l+Math.imul(Q,C)|0,h=h+Math.imul(Q,T)|0,h=h+Math.imul(z,C)|0,A=A+Math.imul(z,T)|0,l=l+Math.imul(j,w)|0,h=h+Math.imul(j,D)|0,h=h+Math.imul(S,w)|0,A=A+Math.imul(S,D)|0,l=l+Math.imul(_,Y)|0,h=h+Math.imul(_,V)|0,h=h+Math.imul(u,Y)|0,A=A+Math.imul(u,V)|0;var Ve=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,l=Math.imul(Tt,wt),h=Math.imul(Tt,Be),h=h+Math.imul(ke,wt)|0,A=Math.imul(ke,Be),l=l+Math.imul(Et,_t)|0,h=h+Math.imul(Et,qe)|0,h=h+Math.imul(Oe,_t)|0,A=A+Math.imul(Oe,qe)|0,l=l+Math.imul(St,Ot)|0,h=h+Math.imul(St,Fe)|0,h=h+Math.imul(Re,Ot)|0,A=A+Math.imul(Re,Fe)|0,l=l+Math.imul(It,lt)|0,h=h+Math.imul(It,Se)|0,h=h+Math.imul(Ue,lt)|0,A=A+Math.imul(Ue,Se)|0,l=l+Math.imul(Rt,Bt)|0,h=h+Math.imul(Rt,De)|0,h=h+Math.imul(Pe,Bt)|0,A=A+Math.imul(Pe,De)|0,l=l+Math.imul(Qe,Ut)|0,h=h+Math.imul(Qe,_e)|0,h=h+Math.imul(ne,Ut)|0,A=A+Math.imul(ne,_e)|0,l=l+Math.imul(he,C)|0,h=h+Math.imul(he,T)|0,h=h+Math.imul(W,C)|0,A=A+Math.imul(W,T)|0,l=l+Math.imul(Q,w)|0,h=h+Math.imul(Q,D)|0,h=h+Math.imul(z,w)|0,A=A+Math.imul(z,D)|0,l=l+Math.imul(j,Y)|0,h=h+Math.imul(j,V)|0,h=h+Math.imul(S,Y)|0,A=A+Math.imul(S,V)|0;var Je=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Je>>>26)|0,Je&=67108863,l=Math.imul(Tt,_t),h=Math.imul(Tt,qe),h=h+Math.imul(ke,_t)|0,A=Math.imul(ke,qe),l=l+Math.imul(Et,Ot)|0,h=h+Math.imul(Et,Fe)|0,h=h+Math.imul(Oe,Ot)|0,A=A+Math.imul(Oe,Fe)|0,l=l+Math.imul(St,lt)|0,h=h+Math.imul(St,Se)|0,h=h+Math.imul(Re,lt)|0,A=A+Math.imul(Re,Se)|0,l=l+Math.imul(It,Bt)|0,h=h+Math.imul(It,De)|0,h=h+Math.imul(Ue,Bt)|0,A=A+Math.imul(Ue,De)|0,l=l+Math.imul(Rt,Ut)|0,h=h+Math.imul(Rt,_e)|0,h=h+Math.imul(Pe,Ut)|0,A=A+Math.imul(Pe,_e)|0,l=l+Math.imul(Qe,C)|0,h=h+Math.imul(Qe,T)|0,h=h+Math.imul(ne,C)|0,A=A+Math.imul(ne,T)|0,l=l+Math.imul(he,w)|0,h=h+Math.imul(he,D)|0,h=h+Math.imul(W,w)|0,A=A+Math.imul(W,D)|0,l=l+Math.imul(Q,Y)|0,h=h+Math.imul(Q,V)|0,h=h+Math.imul(z,Y)|0,A=A+Math.imul(z,V)|0;var $e=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+($e>>>26)|0,$e&=67108863,l=Math.imul(Tt,Ot),h=Math.imul(Tt,Fe),h=h+Math.imul(ke,Ot)|0,A=Math.imul(ke,Fe),l=l+Math.imul(Et,lt)|0,h=h+Math.imul(Et,Se)|0,h=h+Math.imul(Oe,lt)|0,A=A+Math.imul(Oe,Se)|0,l=l+Math.imul(St,Bt)|0,h=h+Math.imul(St,De)|0,h=h+Math.imul(Re,Bt)|0,A=A+Math.imul(Re,De)|0,l=l+Math.imul(It,Ut)|0,h=h+Math.imul(It,_e)|0,h=h+Math.imul(Ue,Ut)|0,A=A+Math.imul(Ue,_e)|0,l=l+Math.imul(Rt,C)|0,h=h+Math.imul(Rt,T)|0,h=h+Math.imul(Pe,C)|0,A=A+Math.imul(Pe,T)|0,l=l+Math.imul(Qe,w)|0,h=h+Math.imul(Qe,D)|0,h=h+Math.imul(ne,w)|0,A=A+Math.imul(ne,D)|0,l=l+Math.imul(he,Y)|0,h=h+Math.imul(he,V)|0,h=h+Math.imul(W,Y)|0,A=A+Math.imul(W,V)|0;var Ie=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul(Tt,lt),h=Math.imul(Tt,Se),h=h+Math.imul(ke,lt)|0,A=Math.imul(ke,Se),l=l+Math.imul(Et,Bt)|0,h=h+Math.imul(Et,De)|0,h=h+Math.imul(Oe,Bt)|0,A=A+Math.imul(Oe,De)|0,l=l+Math.imul(St,Ut)|0,h=h+Math.imul(St,_e)|0,h=h+Math.imul(Re,Ut)|0,A=A+Math.imul(Re,_e)|0,l=l+Math.imul(It,C)|0,h=h+Math.imul(It,T)|0,h=h+Math.imul(Ue,C)|0,A=A+Math.imul(Ue,T)|0,l=l+Math.imul(Rt,w)|0,h=h+Math.imul(Rt,D)|0,h=h+Math.imul(Pe,w)|0,A=A+Math.imul(Pe,D)|0,l=l+Math.imul(Qe,Y)|0,h=h+Math.imul(Qe,V)|0,h=h+Math.imul(ne,Y)|0,A=A+Math.imul(ne,V)|0;var Le=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Le>>>26)|0,Le&=67108863,l=Math.imul(Tt,Bt),h=Math.imul(Tt,De),h=h+Math.imul(ke,Bt)|0,A=Math.imul(ke,De),l=l+Math.imul(Et,Ut)|0,h=h+Math.imul(Et,_e)|0,h=h+Math.imul(Oe,Ut)|0,A=A+Math.imul(Oe,_e)|0,l=l+Math.imul(St,C)|0,h=h+Math.imul(St,T)|0,h=h+Math.imul(Re,C)|0,A=A+Math.imul(Re,T)|0,l=l+Math.imul(It,w)|0,h=h+Math.imul(It,D)|0,h=h+Math.imul(Ue,w)|0,A=A+Math.imul(Ue,D)|0,l=l+Math.imul(Rt,Y)|0,h=h+Math.imul(Rt,V)|0,h=h+Math.imul(Pe,Y)|0,A=A+Math.imul(Pe,V)|0;var Ae=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,l=Math.imul(Tt,Ut),h=Math.imul(Tt,_e),h=h+Math.imul(ke,Ut)|0,A=Math.imul(ke,_e),l=l+Math.imul(Et,C)|0,h=h+Math.imul(Et,T)|0,h=h+Math.imul(Oe,C)|0,A=A+Math.imul(Oe,T)|0,l=l+Math.imul(St,w)|0,h=h+Math.imul(St,D)|0,h=h+Math.imul(Re,w)|0,A=A+Math.imul(Re,D)|0,l=l+Math.imul(It,Y)|0,h=h+Math.imul(It,V)|0,h=h+Math.imul(Ue,Y)|0,A=A+Math.imul(Ue,V)|0;var Me=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(Tt,C),h=Math.imul(Tt,T),h=h+Math.imul(ke,C)|0,A=Math.imul(ke,T),l=l+Math.imul(Et,w)|0,h=h+Math.imul(Et,D)|0,h=h+Math.imul(Oe,w)|0,A=A+Math.imul(Oe,D)|0,l=l+Math.imul(St,Y)|0,h=h+Math.imul(St,V)|0,h=h+Math.imul(Re,Y)|0,A=A+Math.imul(Re,V)|0;var Ce=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,l=Math.imul(Tt,w),h=Math.imul(Tt,D),h=h+Math.imul(ke,w)|0,A=Math.imul(ke,D),l=l+Math.imul(Et,Y)|0,h=h+Math.imul(Et,V)|0,h=h+Math.imul(Oe,Y)|0,A=A+Math.imul(Oe,V)|0;var me=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(me>>>26)|0,me&=67108863,l=Math.imul(Tt,Y),h=Math.imul(Tt,V),h=h+Math.imul(ke,Y)|0,A=Math.imul(ke,V);var $=(v+l|0)+((h&8191)<<13)|0;return v=(A+(h>>>13)|0)+($>>>26)|0,$&=67108863,s[0]=ee,s[1]=Ee,s[2]=ae,s[3]=xe,s[4]=we,s[5]=je,s[6]=ze,s[7]=Ye,s[8]=Ge,s[9]=Ve,s[10]=Je,s[11]=$e,s[12]=Ie,s[13]=Le,s[14]=Ae,s[15]=Me,s[16]=Ce,s[17]=me,s[18]=$,v!==0&&(s[19]=v,E.length++),E};Math.imul||(N=F);function G(k,d,b){b.negative=d.negative^k.negative,b.length=k.length+d.length;for(var E=0,p=0,f=0;f>>26)|0,p+=s>>>26,s&=67108863}b.words[f]=v,E=s,s=p}return E!==0?b.words[f]=E:b.length--,b.strip()}function Z(k,d,b){var E=new ie;return E.mulp(k,d,b)}n.prototype.mulTo=function(d,b){var E,p=this.length+d.length;return this.length===10&&d.length===10?E=N(this,d,b):p<63?E=F(this,d,b):p<1024?E=G(this,d,b):E=Z(this,d,b),E};function ie(k,d){this.x=k,this.y=d}ie.prototype.makeRBT=function(d){for(var b=new Array(d),E=n.prototype._countBits(d)-1,p=0;p>=1;return p},ie.prototype.permute=function(d,b,E,p,f,s){for(var v=0;v>>1)f++;return 1<>>13,E[2*s+1]=f&8191,f=f>>>13;for(s=2*b;s>=26,b+=p/67108864|0,b+=f>>>26,this.words[E]=f&67108863}return b!==0&&(this.words[E]=b,this.length++),this},n.prototype.muln=function(d){return this.clone().imuln(d)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(d){var b=R(d);if(b.length===0)return new n(1);for(var E=this,p=0;p=0);var b=d%26,E=(d-b)/26,p=67108863>>>26-b<<26-b,f;if(b!==0){var s=0;for(f=0;f>>26-b}s&&(this.words[f]=s,this.length++)}if(E!==0){for(f=this.length-1;f>=0;f--)this.words[f+E]=this.words[f];for(f=0;f=0);var p;b?p=(b-b%26)/26:p=0;var f=d%26,s=Math.min((d-f)/26,this.length),v=67108863^67108863>>>f<s)for(this.length-=s,h=0;h=0&&(A!==0||h>=p);h--){var q=this.words[h]|0;this.words[h]=A<<26-f|q>>>f,A=q&v}return l&&A!==0&&(l.words[l.length++]=A),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(d,b,E){return r(this.negative===0),this.iushrn(d,b,E)},n.prototype.shln=function(d){return this.clone().ishln(d)},n.prototype.ushln=function(d){return this.clone().iushln(d)},n.prototype.shrn=function(d){return this.clone().ishrn(d)},n.prototype.ushrn=function(d){return this.clone().iushrn(d)},n.prototype.testn=function(d){r(typeof d=="number"&&d>=0);var b=d%26,E=(d-b)/26,p=1<=0);var b=d%26,E=(d-b)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=E)return this;if(b!==0&&E++,this.length=Math.min(E,this.length),b!==0){var p=67108863^67108863>>>b<=67108864;b++)this.words[b]-=67108864,b===this.length-1?this.words[b+1]=1:this.words[b+1]++;return this.length=Math.max(this.length,b+1),this},n.prototype.isubn=function(d){if(r(typeof d=="number"),r(d<67108864),d<0)return this.iaddn(-d);if(this.negative!==0)return this.negative=0,this.iaddn(d),this.negative=1,this;if(this.words[0]-=d,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var b=0;b>26)-(l/67108864|0),this.words[f+E]=s&67108863}for(;f>26,this.words[f+E]=s&67108863;if(v===0)return this.strip();for(r(v===-1),v=0,f=0;f>26,this.words[f]=s&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(d,b){var E=this.length-d.length,p=this.clone(),f=d,s=f.words[f.length-1]|0,v=this._countBits(s);E=26-v,E!==0&&(f=f.ushln(E),p.iushln(E),s=f.words[f.length-1]|0);var l=p.length-f.length,h;if(b!=="mod"){h=new n(null),h.length=l+1,h.words=new Array(h.length);for(var A=0;A=0;_--){var u=(p.words[f.length+_]|0)*67108864+(p.words[f.length+_-1]|0);for(u=Math.min(u/s|0,67108863),p._ishlnsubmul(f,u,_);p.negative!==0;)u--,p.negative=0,p._ishlnsubmul(f,1,_),p.isZero()||(p.negative^=1);h&&(h.words[_]=u)}return h&&h.strip(),p.strip(),b!=="div"&&E!==0&&p.iushrn(E),{div:h||null,mod:p}},n.prototype.divmod=function(d,b,E){if(r(!d.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var p,f,s;return this.negative!==0&&d.negative===0?(s=this.neg().divmod(d,b),b!=="mod"&&(p=s.div.neg()),b!=="div"&&(f=s.mod.neg(),E&&f.negative!==0&&f.iadd(d)),{div:p,mod:f}):this.negative===0&&d.negative!==0?(s=this.divmod(d.neg(),b),b!=="mod"&&(p=s.div.neg()),{div:p,mod:s.mod}):(this.negative&d.negative)!==0?(s=this.neg().divmod(d.neg(),b),b!=="div"&&(f=s.mod.neg(),E&&f.negative!==0&&f.isub(d)),{div:s.div,mod:f}):d.length>this.length||this.cmp(d)<0?{div:new n(0),mod:this}:d.length===1?b==="div"?{div:this.divn(d.words[0]),mod:null}:b==="mod"?{div:null,mod:new n(this.modn(d.words[0]))}:{div:this.divn(d.words[0]),mod:new n(this.modn(d.words[0]))}:this._wordDiv(d,b)},n.prototype.div=function(d){return this.divmod(d,"div",!1).div},n.prototype.mod=function(d){return this.divmod(d,"mod",!1).mod},n.prototype.umod=function(d){return this.divmod(d,"mod",!0).mod},n.prototype.divRound=function(d){var b=this.divmod(d);if(b.mod.isZero())return b.div;var E=b.div.negative!==0?b.mod.isub(d):b.mod,p=d.ushrn(1),f=d.andln(1),s=E.cmp(p);return s<0||f===1&&s===0?b.div:b.div.negative!==0?b.div.isubn(1):b.div.iaddn(1)},n.prototype.modn=function(d){r(d<=67108863);for(var b=(1<<26)%d,E=0,p=this.length-1;p>=0;p--)E=(b*E+(this.words[p]|0))%d;return E},n.prototype.idivn=function(d){r(d<=67108863);for(var b=0,E=this.length-1;E>=0;E--){var p=(this.words[E]|0)+b*67108864;this.words[E]=p/d|0,b=p%d}return this.strip()},n.prototype.divn=function(d){return this.clone().idivn(d)},n.prototype.egcd=function(d){r(d.negative===0),r(!d.isZero());var b=this,E=d.clone();b.negative!==0?b=b.umod(d):b=b.clone();for(var p=new n(1),f=new n(0),s=new n(0),v=new n(1),l=0;b.isEven()&&E.isEven();)b.iushrn(1),E.iushrn(1),++l;for(var h=E.clone(),A=b.clone();!b.isZero();){for(var q=0,_=1;(b.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(b.iushrn(q);q-- >0;)(p.isOdd()||f.isOdd())&&(p.iadd(h),f.isub(A)),p.iushrn(1),f.iushrn(1);for(var u=0,I=1;(E.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(E.iushrn(u);u-- >0;)(s.isOdd()||v.isOdd())&&(s.iadd(h),v.isub(A)),s.iushrn(1),v.iushrn(1);b.cmp(E)>=0?(b.isub(E),p.isub(s),f.isub(v)):(E.isub(b),s.isub(p),v.isub(f))}return{a:s,b:v,gcd:E.iushln(l)}},n.prototype._invmp=function(d){r(d.negative===0),r(!d.isZero());var b=this,E=d.clone();b.negative!==0?b=b.umod(d):b=b.clone();for(var p=new n(1),f=new n(0),s=E.clone();b.cmpn(1)>0&&E.cmpn(1)>0;){for(var v=0,l=1;(b.words[0]&l)===0&&v<26;++v,l<<=1);if(v>0)for(b.iushrn(v);v-- >0;)p.isOdd()&&p.iadd(s),p.iushrn(1);for(var h=0,A=1;(E.words[0]&A)===0&&h<26;++h,A<<=1);if(h>0)for(E.iushrn(h);h-- >0;)f.isOdd()&&f.iadd(s),f.iushrn(1);b.cmp(E)>=0?(b.isub(E),p.isub(f)):(E.isub(b),f.isub(p))}var q;return b.cmpn(1)===0?q=p:q=f,q.cmpn(0)<0&&q.iadd(d),q},n.prototype.gcd=function(d){if(this.isZero())return d.abs();if(d.isZero())return this.abs();var b=this.clone(),E=d.clone();b.negative=0,E.negative=0;for(var p=0;b.isEven()&&E.isEven();p++)b.iushrn(1),E.iushrn(1);do{for(;b.isEven();)b.iushrn(1);for(;E.isEven();)E.iushrn(1);var f=b.cmp(E);if(f<0){var s=b;b=E,E=s}else if(f===0||E.cmpn(1)===0)break;b.isub(E)}while(!0);return E.iushln(p)},n.prototype.invm=function(d){return this.egcd(d).a.umod(d)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(d){return this.words[0]&d},n.prototype.bincn=function(d){r(typeof d=="number");var b=d%26,E=(d-b)/26,p=1<>>26,v&=67108863,this.words[s]=v}return f!==0&&(this.words[s]=f,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(d){var b=d<0;if(this.negative!==0&&!b)return-1;if(this.negative===0&&b)return 1;this.strip();var E;if(this.length>1)E=1;else{b&&(d=-d),r(d<=67108863,"Number is too big");var p=this.words[0]|0;E=p===d?0:pd.length)return 1;if(this.length=0;E--){var p=this.words[E]|0,f=d.words[E]|0;if(p!==f){pf&&(b=1);break}}return b},n.prototype.gtn=function(d){return this.cmpn(d)===1},n.prototype.gt=function(d){return this.cmp(d)===1},n.prototype.gten=function(d){return this.cmpn(d)>=0},n.prototype.gte=function(d){return this.cmp(d)>=0},n.prototype.ltn=function(d){return this.cmpn(d)===-1},n.prototype.lt=function(d){return this.cmp(d)===-1},n.prototype.lten=function(d){return this.cmpn(d)<=0},n.prototype.lte=function(d){return this.cmp(d)<=0},n.prototype.eqn=function(d){return this.cmpn(d)===0},n.prototype.eq=function(d){return this.cmp(d)===0},n.red=function(d){return new pe(d)},n.prototype.toRed=function(d){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),d.convertTo(this)._forceRed(d)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(d){return this.red=d,this},n.prototype.forceRed=function(d){return r(!this.red,"Already a number in reduction context"),this._forceRed(d)},n.prototype.redAdd=function(d){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,d)},n.prototype.redIAdd=function(d){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,d)},n.prototype.redSub=function(d){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,d)},n.prototype.redISub=function(d){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,d)},n.prototype.redShl=function(d){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,d)},n.prototype.redMul=function(d){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,d),this.red.mul(this,d)},n.prototype.redIMul=function(d){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,d),this.red.imul(this,d)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(d){return r(this.red&&!d.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,d)};var fe={k256:null,p224:null,p192:null,p25519:null};function ce(k,d){this.name=k,this.p=new n(d,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ce.prototype._tmp=function(){var d=new n(null);return d.words=new Array(Math.ceil(this.n/13)),d},ce.prototype.ireduce=function(d){var b=d,E;do this.split(b,this.tmp),b=this.imulK(b),b=b.iadd(this.tmp),E=b.bitLength();while(E>this.n);var p=E0?b.isub(this.p):b.strip!==void 0?b.strip():b._strip(),b},ce.prototype.split=function(d,b){d.iushrn(this.n,0,b)},ce.prototype.imulK=function(d){return d.imul(this.k)};function ge(){ce.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(ge,ce),ge.prototype.split=function(d,b){for(var E=4194303,p=Math.min(d.length,9),f=0;f>>22,s=v}s>>>=22,d.words[f-10]=s,s===0&&d.length>10?d.length-=10:d.length-=9},ge.prototype.imulK=function(d){d.words[d.length]=0,d.words[d.length+1]=0,d.length+=2;for(var b=0,E=0;E>>=26,d.words[E]=f,b=p}return b!==0&&(d.words[d.length++]=b),d},n._prime=function(d){if(fe[d])return fe[d];var b;if(d==="k256")b=new ge;else if(d==="p224")b=new ve;else if(d==="p192")b=new Ke;else if(d==="p25519")b=new be;else throw new Error("Unknown prime "+d);return fe[d]=b,b};function pe(k){if(typeof k=="string"){var d=n._prime(k);this.m=d.p,this.prime=d}else r(k.gtn(1),"modulus must be greater than 1"),this.m=k,this.prime=null}pe.prototype._verify1=function(d){r(d.negative===0,"red works only with positives"),r(d.red,"red works only with red numbers")},pe.prototype._verify2=function(d,b){r((d.negative|b.negative)===0,"red works only with positives"),r(d.red&&d.red===b.red,"red works only with red numbers")},pe.prototype.imod=function(d){return this.prime?this.prime.ireduce(d)._forceRed(this):d.umod(this.m)._forceRed(this)},pe.prototype.neg=function(d){return d.isZero()?d.clone():this.m.sub(d)._forceRed(this)},pe.prototype.add=function(d,b){this._verify2(d,b);var E=d.add(b);return E.cmp(this.m)>=0&&E.isub(this.m),E._forceRed(this)},pe.prototype.iadd=function(d,b){this._verify2(d,b);var E=d.iadd(b);return E.cmp(this.m)>=0&&E.isub(this.m),E},pe.prototype.sub=function(d,b){this._verify2(d,b);var E=d.sub(b);return E.cmpn(0)<0&&E.iadd(this.m),E._forceRed(this)},pe.prototype.isub=function(d,b){this._verify2(d,b);var E=d.isub(b);return E.cmpn(0)<0&&E.iadd(this.m),E},pe.prototype.shl=function(d,b){return this._verify1(d),this.imod(d.ushln(b))},pe.prototype.imul=function(d,b){return this._verify2(d,b),this.imod(d.imul(b))},pe.prototype.mul=function(d,b){return this._verify2(d,b),this.imod(d.mul(b))},pe.prototype.isqr=function(d){return this.imul(d,d.clone())},pe.prototype.sqr=function(d){return this.mul(d,d)},pe.prototype.sqrt=function(d){if(d.isZero())return d.clone();var b=this.m.andln(3);if(r(b%2===1),b===3){var E=this.m.add(new n(1)).iushrn(2);return this.pow(d,E)}for(var p=this.m.subn(1),f=0;!p.isZero()&&p.andln(1)===0;)f++,p.iushrn(1);r(!p.isZero());var s=new n(1).toRed(this),v=s.redNeg(),l=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new n(2*h*h).toRed(this);this.pow(h,l).cmp(v)!==0;)h.redIAdd(v);for(var A=this.pow(h,p),q=this.pow(d,p.addn(1).iushrn(1)),_=this.pow(d,p),u=f;_.cmp(s)!==0;){for(var I=_,j=0;I.cmp(s)!==0;j++)I=I.redSqr();r(j=0;f--){for(var A=b.words[f],q=h-1;q>=0;q--){var _=A>>q&1;if(s!==p[0]&&(s=this.sqr(s)),_===0&&v===0){l=0;continue}v<<=1,v|=_,l++,!(l!==E&&(f!==0||q!==0))&&(s=this.mul(s,p[v]),l=0,v=0)}h=26}return s},pe.prototype.convertTo=function(d){var b=d.umod(this.m);return b===d?b.clone():b},pe.prototype.convertFrom=function(d){var b=d.clone();return b.red=null,b},n.mont=function(d){return new Ne(d)};function Ne(k){pe.call(this,k),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(Ne,pe),Ne.prototype.convertTo=function(d){return this.imod(d.ushln(this.shift))},Ne.prototype.convertFrom=function(d){var b=this.imod(d.mul(this.rinv));return b.red=null,b},Ne.prototype.imul=function(d,b){if(d.isZero()||b.isZero())return d.words[0]=0,d.length=1,d;var E=d.imul(b),p=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),f=E.isub(p).iushrn(this.shift),s=f;return f.cmp(this.m)>=0?s=f.isub(this.m):f.cmpn(0)<0&&(s=f.iadd(this.m)),s._forceRed(this)},Ne.prototype.mul=function(d,b){if(d.isZero()||b.isZero())return new n(0)._forceRed(this);var E=d.mul(b),p=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),f=E.isub(p).iushrn(this.shift),s=f;return f.cmp(this.m)>=0?s=f.isub(this.m):f.cmpn(0)<0&&(s=f.iadd(this.m)),s._forceRed(this)},Ne.prototype.invm=function(d){var b=this.imod(d._invmp(this.m).mul(this.r2));return b._forceRed(this)}})(typeof V1>"u"||V1,Ow)});var $1=P(()=>{g()});var Wu=P((Lee,X1)=>{g();var W1;X1.exports=function(e){return W1||(W1=new ef(null)),W1.generate(e)};function ef(t){this.rand=t}X1.exports.Rand=ef;ef.prototype.generate=function(e){return this._rand(e)};ef.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),i=0;i{g();var Hf=sr(),SF=Wu();function zf(t){this.rand=t||new SF.Rand}Dw.exports=zf;zf.create=function(e){return new zf(e)};zf.prototype._randbelow=function(e){var r=e.bitLength(),i=Math.ceil(r/8);do var n=new Hf(this.rand.generate(i));while(n.cmp(e)>=0);return n};zf.prototype._randrange=function(e,r){var i=r.sub(e);return e.add(this._randbelow(i))};zf.prototype.test=function(e,r,i){var n=e.bitLength(),a=Hf.mont(e),o=new Hf(1).toRed(a);r||(r=Math.max(1,n/48|0));for(var c=e.subn(1),m=0;!c.testn(m);m++);for(var M=e.shrn(m),B=c.toRed(a),R=!0;r>0;r--){var F=this._randrange(new Hf(2),c);i&&i(F);var N=F.toRed(a).redPow(M);if(!(N.cmp(o)===0||N.cmp(B)===0)){for(var G=1;G0;r--){var B=this._randrange(new Hf(2),o),R=e.gcd(B);if(R.cmpn(1)!==0)return R;var F=B.toRed(n).redPow(m);if(!(F.cmp(a)===0||F.cmp(M)===0)){for(var N=1;N{g();var CF=qf();kw.exports=np;np.simpleSieve=rp;np.fermatTest=ip;var br=sr(),BF=new br(24),qF=Z1(),Pw=new qF,RF=new br(1),tp=new br(2),TF=new br(5),jee=new br(16),Hee=new br(8),OF=new br(10),DF=new br(3),zee=new br(7),PF=new br(11),Uw=new br(4),Gee=new br(12),ep=null;function UF(){if(ep!==null)return ep;var t=1048576,e=[];e[0]=2;for(var r=1,i=3;it;)r.ishrn(1);if(r.isEven()&&r.iadd(RF),r.testn(1)||r.iadd(tp),e.cmp(tp)){if(!e.cmp(TF))for(;r.mod(OF).cmp(DF);)r.iadd(Uw)}else for(;r.mod(BF).cmp(PF);)r.iadd(Uw);if(i=r.shrn(1),rp(i)&&rp(r)&&ip(i)&&ip(r)&&Pw.test(i)&&Pw.test(r))return r}}});var Fw=P(($ee,kF)=>{kF.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}});var Kw=P((Wee,Qw)=>{g();var oi=sr(),FF=Z1(),Lw=new FF,LF=new oi(24),NF=new oi(11),QF=new oi(10),KF=new oi(3),jF=new oi(7),Nw=fp(),HF=qf();Qw.exports=In;function zF(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this._pub=new oi(t),this}function GF(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this._priv=new oi(t),this}var Ju={};function YF(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in Ju)return Ju[i];var n=0;if(t.isEven()||!Nw.simpleSieve||!Nw.fermatTest(t)||!Lw.test(t))return n+=1,r==="02"||r==="05"?n+=8:n+=4,Ju[i]=n,n;Lw.test(t.shrn(1))||(n+=2);var a;switch(r){case"02":t.mod(LF).cmp(NF)&&(n+=8);break;case"05":a=t.mod(QF),a.cmp(KF)&&a.cmp(jF)&&(n+=8);break;default:n+=4}return Ju[i]=n,n}function In(t,e,r){this.setGenerator(e),this.__prime=new oi(t),this._prime=oi.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=zF,this.setPrivateKey=GF):this._primeCode=8}Object.defineProperty(In.prototype,"verifyError",{enumerable:!0,get:function(){return typeof this._primeCode!="number"&&(this._primeCode=YF(this.__prime,this.__gen)),this._primeCode}});In.prototype.generateKeys=function(){return this._priv||(this._priv=new oi(HF(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()};In.prototype.computeSecret=function(t){t=new oi(t),t=t.toRed(this._prime);var e=t.redPow(this._priv).fromRed(),r=new U(e.toArray()),i=this.getPrime();if(r.length{g();var VF=fp(),jw=Fw(),ap=Kw();function $F(t){var e=new U(jw[t].prime,"hex"),r=new U(jw[t].gen,"hex");return new ap(e,r)}var WF={binary:!0,hex:!0,base64:!0};function Hw(t,e,r,i){return U.isBuffer(e)||WF[e]===void 0?Hw(t,"binary",e,r):(e=e||"binary",i=i||"binary",r=r||new U([2]),U.isBuffer(r)||(r=new U(r,i)),typeof t=="number"?new ap(VF(t,r),r,!0):(U.isBuffer(t)||(t=new U(t,e)),new ap(t,r,!0)))}Ta.DiffieHellmanGroup=Ta.createDiffieHellmanGroup=Ta.getDiffieHellman=$F;Ta.createDiffieHellman=Ta.DiffieHellman=Hw});var Yw=P((Gw,op)=>{g();(function(t,e){"use strict";function r(p,f){if(!p)throw new Error(f||"Assertion failed")}function i(p,f){p.super_=f;var s=function(){};s.prototype=f.prototype,p.prototype=new s,p.prototype.constructor=p}function n(p,f,s){if(n.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((f==="le"||f==="be")&&(s=f,f=10),this._init(p||0,f||10,s||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=$u().Buffer}catch{}n.isBN=function(f){return f instanceof n?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===n.wordSize&&Array.isArray(f.words)},n.max=function(f,s){return f.cmp(s)>0?f:s},n.min=function(f,s){return f.cmp(s)<0?f:s},n.prototype._init=function(f,s,v){if(typeof f=="number")return this._initNumber(f,s,v);if(typeof f=="object")return this._initArray(f,s,v);s==="hex"&&(s=16),r(s===(s|0)&&s>=2&&s<=36),f=f.toString().replace(/\s+/g,"");var l=0;f[0]==="-"&&(l++,this.negative=1),l=0;l-=3)A=f[l]|f[l-1]<<8|f[l-2]<<16,this.words[h]|=A<>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);else if(v==="le")for(l=0,h=0;l>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);return this._strip()};function o(p,f){var s=p.charCodeAt(f);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;r(!1,"Invalid character in "+p)}function c(p,f,s){var v=o(p,s);return s-1>=f&&(v|=o(p,s-1)<<4),v}n.prototype._parseHex=function(f,s,v){this.length=Math.ceil((f.length-s)/6),this.words=new Array(this.length);for(var l=0;l=s;l-=2)q=c(f,s,l)<=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8;else{var _=f.length-s;for(l=_%2===0?s+1:s;l=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8}this._strip()};function m(p,f,s,v){for(var l=0,h=0,A=Math.min(p.length,s),q=f;q=49?h=_-49+10:_>=17?h=_-17+10:h=_,r(_>=0&&h1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=B}catch{n.prototype.inspect=B}else n.prototype.inspect=B;function B(){return(this.red?""}var R=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],F=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(f,s){f=f||10,s=s|0||1;var v;if(f===16||f==="hex"){v="";for(var l=0,h=0,A=0;A>>24-l&16777215,h!==0||A!==this.length-1?v=R[6-_.length]+_+v:v=_+v,l+=2,l>=26&&(l-=26,A--)}for(h!==0&&(v=h.toString(16)+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}if(f===(f|0)&&f>=2&&f<=36){var u=F[f],I=N[f];v="";var j=this.clone();for(j.negative=0;!j.isZero();){var S=j.modrn(I).toString(f);j=j.idivn(I),j.isZero()?v=S+v:v=R[u-S.length]+S+v}for(this.isZero()&&(v="0"+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},n.prototype.toJSON=function(){return this.toString(16,2)},a&&(n.prototype.toBuffer=function(f,s){return this.toArrayLike(a,f,s)}),n.prototype.toArray=function(f,s){return this.toArrayLike(Array,f,s)};var G=function(f,s){return f.allocUnsafe?f.allocUnsafe(s):new f(s)};n.prototype.toArrayLike=function(f,s,v){this._strip();var l=this.byteLength(),h=v||Math.max(1,l);r(l<=h,"byte array longer than desired length"),r(h>0,"Requested array length <= 0");var A=G(f,h),q=s==="le"?"LE":"BE";return this["_toArrayLike"+q](A,l),A},n.prototype._toArrayLikeLE=function(f,s){for(var v=0,l=0,h=0,A=0;h>8&255),v>16&255),A===6?(v>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v=0&&(f[v--]=q>>8&255),v>=0&&(f[v--]=q>>16&255),A===6?(v>=0&&(f[v--]=q>>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v>=0)for(f[v--]=l;v>=0;)f[v--]=0},Math.clz32?n.prototype._countBits=function(f){return 32-Math.clz32(f)}:n.prototype._countBits=function(f){var s=f,v=0;return s>=4096&&(v+=13,s>>>=13),s>=64&&(v+=7,s>>>=7),s>=8&&(v+=4,s>>>=4),s>=2&&(v+=2,s>>>=2),v+s},n.prototype._zeroBits=function(f){if(f===0)return 26;var s=f,v=0;return(s&8191)===0&&(v+=13,s>>>=13),(s&127)===0&&(v+=7,s>>>=7),(s&15)===0&&(v+=4,s>>>=4),(s&3)===0&&(v+=2,s>>>=2),(s&1)===0&&v++,v},n.prototype.bitLength=function(){var f=this.words[this.length-1],s=this._countBits(f);return(this.length-1)*26+s};function Z(p){for(var f=new Array(p.bitLength()),s=0;s>>l&1}return f}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,s=0;sf.length?this.clone().ior(f):f.clone().ior(this)},n.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},n.prototype.iuand=function(f){var s;this.length>f.length?s=f:s=this;for(var v=0;vf.length?this.clone().iand(f):f.clone().iand(this)},n.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},n.prototype.iuxor=function(f){var s,v;this.length>f.length?(s=this,v=f):(s=f,v=this);for(var l=0;lf.length?this.clone().ixor(f):f.clone().ixor(this)},n.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},n.prototype.inotn=function(f){r(typeof f=="number"&&f>=0);var s=Math.ceil(f/26)|0,v=f%26;this._expand(s),v>0&&s--;for(var l=0;l0&&(this.words[l]=~this.words[l]&67108863>>26-v),this._strip()},n.prototype.notn=function(f){return this.clone().inotn(f)},n.prototype.setn=function(f,s){r(typeof f=="number"&&f>=0);var v=f/26|0,l=f%26;return this._expand(v+1),s?this.words[v]=this.words[v]|1<f.length?(v=this,l=f):(v=f,l=this);for(var h=0,A=0;A>>26;for(;h!==0&&A>>26;if(this.length=v.length,h!==0)this.words[this.length]=h,this.length++;else if(v!==this)for(;Af.length?this.clone().iadd(f):f.clone().iadd(this)},n.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var s=this.iadd(f);return f.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var v=this.cmp(f);if(v===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,h;v>0?(l=this,h=f):(l=f,h=this);for(var A=0,q=0;q>26,this.words[q]=s&67108863;for(;A!==0&&q>26,this.words[q]=s&67108863;if(A===0&&q>>26,j=_&67108863,S=Math.min(u,f.length-1),L=Math.max(0,u-p.length+1);L<=S;L++){var Q=u-L|0;l=p.words[Q]|0,h=f.words[L]|0,A=l*h+j,I+=A/67108864|0,j=A&67108863}s.words[u]=j|0,_=I|0}return _!==0?s.words[u]=_|0:s.length--,s._strip()}var fe=function(f,s,v){var l=f.words,h=s.words,A=v.words,q=0,_,u,I,j=l[0]|0,S=j&8191,L=j>>>13,Q=l[1]|0,z=Q&8191,J=Q>>>13,he=l[2]|0,W=he&8191,te=he>>>13,Qe=l[3]|0,ne=Qe&8191,ye=Qe>>>13,Rt=l[4]|0,Pe=Rt&8191,We=Rt>>>13,It=l[5]|0,Ue=It&8191,tt=It>>>13,St=l[6]|0,Re=St&8191,rt=St>>>13,Et=l[7]|0,Oe=Et&8191,it=Et>>>13,Tt=l[8]|0,ke=Tt&8191,nt=Tt>>>13,Ct=l[9]|0,Te=Ct&8191,Ze=Ct>>>13,wt=h[0]|0,Be=wt&8191,et=wt>>>13,_t=h[1]|0,qe=_t&8191,ft=_t>>>13,Ot=h[2]|0,Fe=Ot&8191,ut=Ot>>>13,lt=h[3]|0,Se=lt&8191,Xe=lt>>>13,Bt=h[4]|0,De=Bt&8191,at=Bt>>>13,Ut=h[5]|0,_e=Ut&8191,ot=Ut>>>13,C=h[6]|0,T=C&8191,O=C>>>13,w=h[7]|0,D=w&8191,H=w>>>13,Y=h[8]|0,V=Y&8191,ee=Y>>>13,Ee=h[9]|0,ae=Ee&8191,xe=Ee>>>13;v.negative=f.negative^s.negative,v.length=19,_=Math.imul(S,Be),u=Math.imul(S,et),u=u+Math.imul(L,Be)|0,I=Math.imul(L,et);var we=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(we>>>26)|0,we&=67108863,_=Math.imul(z,Be),u=Math.imul(z,et),u=u+Math.imul(J,Be)|0,I=Math.imul(J,et),_=_+Math.imul(S,qe)|0,u=u+Math.imul(S,ft)|0,u=u+Math.imul(L,qe)|0,I=I+Math.imul(L,ft)|0;var je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(je>>>26)|0,je&=67108863,_=Math.imul(W,Be),u=Math.imul(W,et),u=u+Math.imul(te,Be)|0,I=Math.imul(te,et),_=_+Math.imul(z,qe)|0,u=u+Math.imul(z,ft)|0,u=u+Math.imul(J,qe)|0,I=I+Math.imul(J,ft)|0,_=_+Math.imul(S,Fe)|0,u=u+Math.imul(S,ut)|0,u=u+Math.imul(L,Fe)|0,I=I+Math.imul(L,ut)|0;var ze=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(ze>>>26)|0,ze&=67108863,_=Math.imul(ne,Be),u=Math.imul(ne,et),u=u+Math.imul(ye,Be)|0,I=Math.imul(ye,et),_=_+Math.imul(W,qe)|0,u=u+Math.imul(W,ft)|0,u=u+Math.imul(te,qe)|0,I=I+Math.imul(te,ft)|0,_=_+Math.imul(z,Fe)|0,u=u+Math.imul(z,ut)|0,u=u+Math.imul(J,Fe)|0,I=I+Math.imul(J,ut)|0,_=_+Math.imul(S,Se)|0,u=u+Math.imul(S,Xe)|0,u=u+Math.imul(L,Se)|0,I=I+Math.imul(L,Xe)|0;var Ye=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,_=Math.imul(Pe,Be),u=Math.imul(Pe,et),u=u+Math.imul(We,Be)|0,I=Math.imul(We,et),_=_+Math.imul(ne,qe)|0,u=u+Math.imul(ne,ft)|0,u=u+Math.imul(ye,qe)|0,I=I+Math.imul(ye,ft)|0,_=_+Math.imul(W,Fe)|0,u=u+Math.imul(W,ut)|0,u=u+Math.imul(te,Fe)|0,I=I+Math.imul(te,ut)|0,_=_+Math.imul(z,Se)|0,u=u+Math.imul(z,Xe)|0,u=u+Math.imul(J,Se)|0,I=I+Math.imul(J,Xe)|0,_=_+Math.imul(S,De)|0,u=u+Math.imul(S,at)|0,u=u+Math.imul(L,De)|0,I=I+Math.imul(L,at)|0;var Ge=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,_=Math.imul(Ue,Be),u=Math.imul(Ue,et),u=u+Math.imul(tt,Be)|0,I=Math.imul(tt,et),_=_+Math.imul(Pe,qe)|0,u=u+Math.imul(Pe,ft)|0,u=u+Math.imul(We,qe)|0,I=I+Math.imul(We,ft)|0,_=_+Math.imul(ne,Fe)|0,u=u+Math.imul(ne,ut)|0,u=u+Math.imul(ye,Fe)|0,I=I+Math.imul(ye,ut)|0,_=_+Math.imul(W,Se)|0,u=u+Math.imul(W,Xe)|0,u=u+Math.imul(te,Se)|0,I=I+Math.imul(te,Xe)|0,_=_+Math.imul(z,De)|0,u=u+Math.imul(z,at)|0,u=u+Math.imul(J,De)|0,I=I+Math.imul(J,at)|0,_=_+Math.imul(S,_e)|0,u=u+Math.imul(S,ot)|0,u=u+Math.imul(L,_e)|0,I=I+Math.imul(L,ot)|0;var Ve=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,_=Math.imul(Re,Be),u=Math.imul(Re,et),u=u+Math.imul(rt,Be)|0,I=Math.imul(rt,et),_=_+Math.imul(Ue,qe)|0,u=u+Math.imul(Ue,ft)|0,u=u+Math.imul(tt,qe)|0,I=I+Math.imul(tt,ft)|0,_=_+Math.imul(Pe,Fe)|0,u=u+Math.imul(Pe,ut)|0,u=u+Math.imul(We,Fe)|0,I=I+Math.imul(We,ut)|0,_=_+Math.imul(ne,Se)|0,u=u+Math.imul(ne,Xe)|0,u=u+Math.imul(ye,Se)|0,I=I+Math.imul(ye,Xe)|0,_=_+Math.imul(W,De)|0,u=u+Math.imul(W,at)|0,u=u+Math.imul(te,De)|0,I=I+Math.imul(te,at)|0,_=_+Math.imul(z,_e)|0,u=u+Math.imul(z,ot)|0,u=u+Math.imul(J,_e)|0,I=I+Math.imul(J,ot)|0,_=_+Math.imul(S,T)|0,u=u+Math.imul(S,O)|0,u=u+Math.imul(L,T)|0,I=I+Math.imul(L,O)|0;var Je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Je>>>26)|0,Je&=67108863,_=Math.imul(Oe,Be),u=Math.imul(Oe,et),u=u+Math.imul(it,Be)|0,I=Math.imul(it,et),_=_+Math.imul(Re,qe)|0,u=u+Math.imul(Re,ft)|0,u=u+Math.imul(rt,qe)|0,I=I+Math.imul(rt,ft)|0,_=_+Math.imul(Ue,Fe)|0,u=u+Math.imul(Ue,ut)|0,u=u+Math.imul(tt,Fe)|0,I=I+Math.imul(tt,ut)|0,_=_+Math.imul(Pe,Se)|0,u=u+Math.imul(Pe,Xe)|0,u=u+Math.imul(We,Se)|0,I=I+Math.imul(We,Xe)|0,_=_+Math.imul(ne,De)|0,u=u+Math.imul(ne,at)|0,u=u+Math.imul(ye,De)|0,I=I+Math.imul(ye,at)|0,_=_+Math.imul(W,_e)|0,u=u+Math.imul(W,ot)|0,u=u+Math.imul(te,_e)|0,I=I+Math.imul(te,ot)|0,_=_+Math.imul(z,T)|0,u=u+Math.imul(z,O)|0,u=u+Math.imul(J,T)|0,I=I+Math.imul(J,O)|0,_=_+Math.imul(S,D)|0,u=u+Math.imul(S,H)|0,u=u+Math.imul(L,D)|0,I=I+Math.imul(L,H)|0;var $e=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($e>>>26)|0,$e&=67108863,_=Math.imul(ke,Be),u=Math.imul(ke,et),u=u+Math.imul(nt,Be)|0,I=Math.imul(nt,et),_=_+Math.imul(Oe,qe)|0,u=u+Math.imul(Oe,ft)|0,u=u+Math.imul(it,qe)|0,I=I+Math.imul(it,ft)|0,_=_+Math.imul(Re,Fe)|0,u=u+Math.imul(Re,ut)|0,u=u+Math.imul(rt,Fe)|0,I=I+Math.imul(rt,ut)|0,_=_+Math.imul(Ue,Se)|0,u=u+Math.imul(Ue,Xe)|0,u=u+Math.imul(tt,Se)|0,I=I+Math.imul(tt,Xe)|0,_=_+Math.imul(Pe,De)|0,u=u+Math.imul(Pe,at)|0,u=u+Math.imul(We,De)|0,I=I+Math.imul(We,at)|0,_=_+Math.imul(ne,_e)|0,u=u+Math.imul(ne,ot)|0,u=u+Math.imul(ye,_e)|0,I=I+Math.imul(ye,ot)|0,_=_+Math.imul(W,T)|0,u=u+Math.imul(W,O)|0,u=u+Math.imul(te,T)|0,I=I+Math.imul(te,O)|0,_=_+Math.imul(z,D)|0,u=u+Math.imul(z,H)|0,u=u+Math.imul(J,D)|0,I=I+Math.imul(J,H)|0,_=_+Math.imul(S,V)|0,u=u+Math.imul(S,ee)|0,u=u+Math.imul(L,V)|0,I=I+Math.imul(L,ee)|0;var Ie=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,_=Math.imul(Te,Be),u=Math.imul(Te,et),u=u+Math.imul(Ze,Be)|0,I=Math.imul(Ze,et),_=_+Math.imul(ke,qe)|0,u=u+Math.imul(ke,ft)|0,u=u+Math.imul(nt,qe)|0,I=I+Math.imul(nt,ft)|0,_=_+Math.imul(Oe,Fe)|0,u=u+Math.imul(Oe,ut)|0,u=u+Math.imul(it,Fe)|0,I=I+Math.imul(it,ut)|0,_=_+Math.imul(Re,Se)|0,u=u+Math.imul(Re,Xe)|0,u=u+Math.imul(rt,Se)|0,I=I+Math.imul(rt,Xe)|0,_=_+Math.imul(Ue,De)|0,u=u+Math.imul(Ue,at)|0,u=u+Math.imul(tt,De)|0,I=I+Math.imul(tt,at)|0,_=_+Math.imul(Pe,_e)|0,u=u+Math.imul(Pe,ot)|0,u=u+Math.imul(We,_e)|0,I=I+Math.imul(We,ot)|0,_=_+Math.imul(ne,T)|0,u=u+Math.imul(ne,O)|0,u=u+Math.imul(ye,T)|0,I=I+Math.imul(ye,O)|0,_=_+Math.imul(W,D)|0,u=u+Math.imul(W,H)|0,u=u+Math.imul(te,D)|0,I=I+Math.imul(te,H)|0,_=_+Math.imul(z,V)|0,u=u+Math.imul(z,ee)|0,u=u+Math.imul(J,V)|0,I=I+Math.imul(J,ee)|0,_=_+Math.imul(S,ae)|0,u=u+Math.imul(S,xe)|0,u=u+Math.imul(L,ae)|0,I=I+Math.imul(L,xe)|0;var Le=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Le>>>26)|0,Le&=67108863,_=Math.imul(Te,qe),u=Math.imul(Te,ft),u=u+Math.imul(Ze,qe)|0,I=Math.imul(Ze,ft),_=_+Math.imul(ke,Fe)|0,u=u+Math.imul(ke,ut)|0,u=u+Math.imul(nt,Fe)|0,I=I+Math.imul(nt,ut)|0,_=_+Math.imul(Oe,Se)|0,u=u+Math.imul(Oe,Xe)|0,u=u+Math.imul(it,Se)|0,I=I+Math.imul(it,Xe)|0,_=_+Math.imul(Re,De)|0,u=u+Math.imul(Re,at)|0,u=u+Math.imul(rt,De)|0,I=I+Math.imul(rt,at)|0,_=_+Math.imul(Ue,_e)|0,u=u+Math.imul(Ue,ot)|0,u=u+Math.imul(tt,_e)|0,I=I+Math.imul(tt,ot)|0,_=_+Math.imul(Pe,T)|0,u=u+Math.imul(Pe,O)|0,u=u+Math.imul(We,T)|0,I=I+Math.imul(We,O)|0,_=_+Math.imul(ne,D)|0,u=u+Math.imul(ne,H)|0,u=u+Math.imul(ye,D)|0,I=I+Math.imul(ye,H)|0,_=_+Math.imul(W,V)|0,u=u+Math.imul(W,ee)|0,u=u+Math.imul(te,V)|0,I=I+Math.imul(te,ee)|0,_=_+Math.imul(z,ae)|0,u=u+Math.imul(z,xe)|0,u=u+Math.imul(J,ae)|0,I=I+Math.imul(J,xe)|0;var Ae=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,_=Math.imul(Te,Fe),u=Math.imul(Te,ut),u=u+Math.imul(Ze,Fe)|0,I=Math.imul(Ze,ut),_=_+Math.imul(ke,Se)|0,u=u+Math.imul(ke,Xe)|0,u=u+Math.imul(nt,Se)|0,I=I+Math.imul(nt,Xe)|0,_=_+Math.imul(Oe,De)|0,u=u+Math.imul(Oe,at)|0,u=u+Math.imul(it,De)|0,I=I+Math.imul(it,at)|0,_=_+Math.imul(Re,_e)|0,u=u+Math.imul(Re,ot)|0,u=u+Math.imul(rt,_e)|0,I=I+Math.imul(rt,ot)|0,_=_+Math.imul(Ue,T)|0,u=u+Math.imul(Ue,O)|0,u=u+Math.imul(tt,T)|0,I=I+Math.imul(tt,O)|0,_=_+Math.imul(Pe,D)|0,u=u+Math.imul(Pe,H)|0,u=u+Math.imul(We,D)|0,I=I+Math.imul(We,H)|0,_=_+Math.imul(ne,V)|0,u=u+Math.imul(ne,ee)|0,u=u+Math.imul(ye,V)|0,I=I+Math.imul(ye,ee)|0,_=_+Math.imul(W,ae)|0,u=u+Math.imul(W,xe)|0,u=u+Math.imul(te,ae)|0,I=I+Math.imul(te,xe)|0;var Me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,_=Math.imul(Te,Se),u=Math.imul(Te,Xe),u=u+Math.imul(Ze,Se)|0,I=Math.imul(Ze,Xe),_=_+Math.imul(ke,De)|0,u=u+Math.imul(ke,at)|0,u=u+Math.imul(nt,De)|0,I=I+Math.imul(nt,at)|0,_=_+Math.imul(Oe,_e)|0,u=u+Math.imul(Oe,ot)|0,u=u+Math.imul(it,_e)|0,I=I+Math.imul(it,ot)|0,_=_+Math.imul(Re,T)|0,u=u+Math.imul(Re,O)|0,u=u+Math.imul(rt,T)|0,I=I+Math.imul(rt,O)|0,_=_+Math.imul(Ue,D)|0,u=u+Math.imul(Ue,H)|0,u=u+Math.imul(tt,D)|0,I=I+Math.imul(tt,H)|0,_=_+Math.imul(Pe,V)|0,u=u+Math.imul(Pe,ee)|0,u=u+Math.imul(We,V)|0,I=I+Math.imul(We,ee)|0,_=_+Math.imul(ne,ae)|0,u=u+Math.imul(ne,xe)|0,u=u+Math.imul(ye,ae)|0,I=I+Math.imul(ye,xe)|0;var Ce=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,_=Math.imul(Te,De),u=Math.imul(Te,at),u=u+Math.imul(Ze,De)|0,I=Math.imul(Ze,at),_=_+Math.imul(ke,_e)|0,u=u+Math.imul(ke,ot)|0,u=u+Math.imul(nt,_e)|0,I=I+Math.imul(nt,ot)|0,_=_+Math.imul(Oe,T)|0,u=u+Math.imul(Oe,O)|0,u=u+Math.imul(it,T)|0,I=I+Math.imul(it,O)|0,_=_+Math.imul(Re,D)|0,u=u+Math.imul(Re,H)|0,u=u+Math.imul(rt,D)|0,I=I+Math.imul(rt,H)|0,_=_+Math.imul(Ue,V)|0,u=u+Math.imul(Ue,ee)|0,u=u+Math.imul(tt,V)|0,I=I+Math.imul(tt,ee)|0,_=_+Math.imul(Pe,ae)|0,u=u+Math.imul(Pe,xe)|0,u=u+Math.imul(We,ae)|0,I=I+Math.imul(We,xe)|0;var me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(me>>>26)|0,me&=67108863,_=Math.imul(Te,_e),u=Math.imul(Te,ot),u=u+Math.imul(Ze,_e)|0,I=Math.imul(Ze,ot),_=_+Math.imul(ke,T)|0,u=u+Math.imul(ke,O)|0,u=u+Math.imul(nt,T)|0,I=I+Math.imul(nt,O)|0,_=_+Math.imul(Oe,D)|0,u=u+Math.imul(Oe,H)|0,u=u+Math.imul(it,D)|0,I=I+Math.imul(it,H)|0,_=_+Math.imul(Re,V)|0,u=u+Math.imul(Re,ee)|0,u=u+Math.imul(rt,V)|0,I=I+Math.imul(rt,ee)|0,_=_+Math.imul(Ue,ae)|0,u=u+Math.imul(Ue,xe)|0,u=u+Math.imul(tt,ae)|0,I=I+Math.imul(tt,xe)|0;var $=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($>>>26)|0,$&=67108863,_=Math.imul(Te,T),u=Math.imul(Te,O),u=u+Math.imul(Ze,T)|0,I=Math.imul(Ze,O),_=_+Math.imul(ke,D)|0,u=u+Math.imul(ke,H)|0,u=u+Math.imul(nt,D)|0,I=I+Math.imul(nt,H)|0,_=_+Math.imul(Oe,V)|0,u=u+Math.imul(Oe,ee)|0,u=u+Math.imul(it,V)|0,I=I+Math.imul(it,ee)|0,_=_+Math.imul(Re,ae)|0,u=u+Math.imul(Re,xe)|0,u=u+Math.imul(rt,ae)|0,I=I+Math.imul(rt,xe)|0;var X=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(X>>>26)|0,X&=67108863,_=Math.imul(Te,D),u=Math.imul(Te,H),u=u+Math.imul(Ze,D)|0,I=Math.imul(Ze,H),_=_+Math.imul(ke,V)|0,u=u+Math.imul(ke,ee)|0,u=u+Math.imul(nt,V)|0,I=I+Math.imul(nt,ee)|0,_=_+Math.imul(Oe,ae)|0,u=u+Math.imul(Oe,xe)|0,u=u+Math.imul(it,ae)|0,I=I+Math.imul(it,xe)|0;var de=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(de>>>26)|0,de&=67108863,_=Math.imul(Te,V),u=Math.imul(Te,ee),u=u+Math.imul(Ze,V)|0,I=Math.imul(Ze,ee),_=_+Math.imul(ke,ae)|0,u=u+Math.imul(ke,xe)|0,u=u+Math.imul(nt,ae)|0,I=I+Math.imul(nt,xe)|0;var oe=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(oe>>>26)|0,oe&=67108863,_=Math.imul(Te,ae),u=Math.imul(Te,xe),u=u+Math.imul(Ze,ae)|0,I=Math.imul(Ze,xe);var se=(q+_|0)+((u&8191)<<13)|0;return q=(I+(u>>>13)|0)+(se>>>26)|0,se&=67108863,A[0]=we,A[1]=je,A[2]=ze,A[3]=Ye,A[4]=Ge,A[5]=Ve,A[6]=Je,A[7]=$e,A[8]=Ie,A[9]=Le,A[10]=Ae,A[11]=Me,A[12]=Ce,A[13]=me,A[14]=$,A[15]=X,A[16]=de,A[17]=oe,A[18]=se,q!==0&&(A[19]=q,v.length++),v};Math.imul||(fe=ie);function ce(p,f,s){s.negative=f.negative^p.negative,s.length=p.length+f.length;for(var v=0,l=0,h=0;h>>26)|0,l+=A>>>26,A&=67108863}s.words[h]=q,v=A,A=l}return v!==0?s.words[h]=v:s.length--,s._strip()}function ge(p,f,s){return ce(p,f,s)}n.prototype.mulTo=function(f,s){var v,l=this.length+f.length;return this.length===10&&f.length===10?v=fe(this,f,s):l<63?v=ie(this,f,s):l<1024?v=ce(this,f,s):v=ge(this,f,s),v};function ve(p,f){this.x=p,this.y=f}ve.prototype.makeRBT=function(f){for(var s=new Array(f),v=n.prototype._countBits(f)-1,l=0;l>=1;return l},ve.prototype.permute=function(f,s,v,l,h,A){for(var q=0;q>>1)h++;return 1<>>13,v[2*A+1]=h&8191,h=h>>>13;for(A=2*s;A>=26,v+=h/67108864|0,v+=A>>>26,this.words[l]=A&67108863}return v!==0&&(this.words[l]=v,this.length++),s?this.ineg():this},n.prototype.muln=function(f){return this.clone().imuln(f)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(f){var s=Z(f);if(s.length===0)return new n(1);for(var v=this,l=0;l=0);var s=f%26,v=(f-s)/26,l=67108863>>>26-s<<26-s,h;if(s!==0){var A=0;for(h=0;h>>26-s}A&&(this.words[h]=A,this.length++)}if(v!==0){for(h=this.length-1;h>=0;h--)this.words[h+v]=this.words[h];for(h=0;h=0);var l;s?l=(s-s%26)/26:l=0;var h=f%26,A=Math.min((f-h)/26,this.length),q=67108863^67108863>>>h<A)for(this.length-=A,u=0;u=0&&(I!==0||u>=l);u--){var j=this.words[u]|0;this.words[u]=I<<26-h|j>>>h,I=j&q}return _&&I!==0&&(_.words[_.length++]=I),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(f,s,v){return r(this.negative===0),this.iushrn(f,s,v)},n.prototype.shln=function(f){return this.clone().ishln(f)},n.prototype.ushln=function(f){return this.clone().iushln(f)},n.prototype.shrn=function(f){return this.clone().ishrn(f)},n.prototype.ushrn=function(f){return this.clone().iushrn(f)},n.prototype.testn=function(f){r(typeof f=="number"&&f>=0);var s=f%26,v=(f-s)/26,l=1<=0);var s=f%26,v=(f-s)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=v)return this;if(s!==0&&v++,this.length=Math.min(v,this.length),s!==0){var l=67108863^67108863>>>s<=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},n.prototype.isubn=function(f){if(r(typeof f=="number"),r(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s>26)-(_/67108864|0),this.words[h+v]=A&67108863}for(;h>26,this.words[h+v]=A&67108863;if(q===0)return this._strip();for(r(q===-1),q=0,h=0;h>26,this.words[h]=A&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(f,s){var v=this.length-f.length,l=this.clone(),h=f,A=h.words[h.length-1]|0,q=this._countBits(A);v=26-q,v!==0&&(h=h.ushln(v),l.iushln(v),A=h.words[h.length-1]|0);var _=l.length-h.length,u;if(s!=="mod"){u=new n(null),u.length=_+1,u.words=new Array(u.length);for(var I=0;I=0;S--){var L=(l.words[h.length+S]|0)*67108864+(l.words[h.length+S-1]|0);for(L=Math.min(L/A|0,67108863),l._ishlnsubmul(h,L,S);l.negative!==0;)L--,l.negative=0,l._ishlnsubmul(h,1,S),l.isZero()||(l.negative^=1);u&&(u.words[S]=L)}return u&&u._strip(),l._strip(),s!=="div"&&v!==0&&l.iushrn(v),{div:u||null,mod:l}},n.prototype.divmod=function(f,s,v){if(r(!f.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var l,h,A;return this.negative!==0&&f.negative===0?(A=this.neg().divmod(f,s),s!=="mod"&&(l=A.div.neg()),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.iadd(f)),{div:l,mod:h}):this.negative===0&&f.negative!==0?(A=this.divmod(f.neg(),s),s!=="mod"&&(l=A.div.neg()),{div:l,mod:A.mod}):(this.negative&f.negative)!==0?(A=this.neg().divmod(f.neg(),s),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.isub(f)),{div:A.div,mod:h}):f.length>this.length||this.cmp(f)<0?{div:new n(0),mod:this}:f.length===1?s==="div"?{div:this.divn(f.words[0]),mod:null}:s==="mod"?{div:null,mod:new n(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new n(this.modrn(f.words[0]))}:this._wordDiv(f,s)},n.prototype.div=function(f){return this.divmod(f,"div",!1).div},n.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},n.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},n.prototype.divRound=function(f){var s=this.divmod(f);if(s.mod.isZero())return s.div;var v=s.div.negative!==0?s.mod.isub(f):s.mod,l=f.ushrn(1),h=f.andln(1),A=v.cmp(l);return A<0||h===1&&A===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},n.prototype.modrn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=(1<<26)%f,l=0,h=this.length-1;h>=0;h--)l=(v*l+(this.words[h]|0))%f;return s?-l:l},n.prototype.modn=function(f){return this.modrn(f)},n.prototype.idivn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=0,l=this.length-1;l>=0;l--){var h=(this.words[l]|0)+v*67108864;this.words[l]=h/f|0,v=h%f}return this._strip(),s?this.ineg():this},n.prototype.divn=function(f){return this.clone().idivn(f)},n.prototype.egcd=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=new n(0),q=new n(1),_=0;s.isEven()&&v.isEven();)s.iushrn(1),v.iushrn(1),++_;for(var u=v.clone(),I=s.clone();!s.isZero();){for(var j=0,S=1;(s.words[0]&S)===0&&j<26;++j,S<<=1);if(j>0)for(s.iushrn(j);j-- >0;)(l.isOdd()||h.isOdd())&&(l.iadd(u),h.isub(I)),l.iushrn(1),h.iushrn(1);for(var L=0,Q=1;(v.words[0]&Q)===0&&L<26;++L,Q<<=1);if(L>0)for(v.iushrn(L);L-- >0;)(A.isOdd()||q.isOdd())&&(A.iadd(u),q.isub(I)),A.iushrn(1),q.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(A),h.isub(q)):(v.isub(s),A.isub(l),q.isub(h))}return{a:A,b:q,gcd:v.iushln(_)}},n.prototype._invmp=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=v.clone();s.cmpn(1)>0&&v.cmpn(1)>0;){for(var q=0,_=1;(s.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(s.iushrn(q);q-- >0;)l.isOdd()&&l.iadd(A),l.iushrn(1);for(var u=0,I=1;(v.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(v.iushrn(u);u-- >0;)h.isOdd()&&h.iadd(A),h.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(h)):(v.isub(s),h.isub(l))}var j;return s.cmpn(1)===0?j=l:j=h,j.cmpn(0)<0&&j.iadd(f),j},n.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var s=this.clone(),v=f.clone();s.negative=0,v.negative=0;for(var l=0;s.isEven()&&v.isEven();l++)s.iushrn(1),v.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;v.isEven();)v.iushrn(1);var h=s.cmp(v);if(h<0){var A=s;s=v,v=A}else if(h===0||v.cmpn(1)===0)break;s.isub(v)}while(!0);return v.iushln(l)},n.prototype.invm=function(f){return this.egcd(f).a.umod(f)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(f){return this.words[0]&f},n.prototype.bincn=function(f){r(typeof f=="number");var s=f%26,v=(f-s)/26,l=1<>>26,q&=67108863,this.words[A]=q}return h!==0&&(this.words[A]=h,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(f){var s=f<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var v;if(this.length>1)v=1;else{s&&(f=-f),r(f<=67108863,"Number is too big");var l=this.words[0]|0;v=l===f?0:lf.length)return 1;if(this.length=0;v--){var l=this.words[v]|0,h=f.words[v]|0;if(l!==h){lh&&(s=1);break}}return s},n.prototype.gtn=function(f){return this.cmpn(f)===1},n.prototype.gt=function(f){return this.cmp(f)===1},n.prototype.gten=function(f){return this.cmpn(f)>=0},n.prototype.gte=function(f){return this.cmp(f)>=0},n.prototype.ltn=function(f){return this.cmpn(f)===-1},n.prototype.lt=function(f){return this.cmp(f)===-1},n.prototype.lten=function(f){return this.cmpn(f)<=0},n.prototype.lte=function(f){return this.cmp(f)<=0},n.prototype.eqn=function(f){return this.cmpn(f)===0},n.prototype.eq=function(f){return this.cmp(f)===0},n.red=function(f){return new b(f)},n.prototype.toRed=function(f){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(f){return this.red=f,this},n.prototype.forceRed=function(f){return r(!this.red,"Already a number in reduction context"),this._forceRed(f)},n.prototype.redAdd=function(f){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},n.prototype.redIAdd=function(f){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},n.prototype.redSub=function(f){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},n.prototype.redISub=function(f){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},n.prototype.redShl=function(f){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},n.prototype.redMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},n.prototype.redIMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(f){return r(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var Ke={k256:null,p224:null,p192:null,p25519:null};function be(p,f){this.name=p,this.p=new n(f,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}be.prototype._tmp=function(){var f=new n(null);return f.words=new Array(Math.ceil(this.n/13)),f},be.prototype.ireduce=function(f){var s=f,v;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),v=s.bitLength();while(v>this.n);var l=v0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},be.prototype.split=function(f,s){f.iushrn(this.n,0,s)},be.prototype.imulK=function(f){return f.imul(this.k)};function pe(){be.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(pe,be),pe.prototype.split=function(f,s){for(var v=4194303,l=Math.min(f.length,9),h=0;h>>22,A=q}A>>>=22,f.words[h-10]=A,A===0&&f.length>10?f.length-=10:f.length-=9},pe.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var s=0,v=0;v>>=26,f.words[v]=h,s=l}return s!==0&&(f.words[f.length++]=s),f},n._prime=function(f){if(Ke[f])return Ke[f];var s;if(f==="k256")s=new pe;else if(f==="p224")s=new Ne;else if(f==="p192")s=new k;else if(f==="p25519")s=new d;else throw new Error("Unknown prime "+f);return Ke[f]=s,s};function b(p){if(typeof p=="string"){var f=n._prime(p);this.m=f.p,this.prime=f}else r(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}b.prototype._verify1=function(f){r(f.negative===0,"red works only with positives"),r(f.red,"red works only with red numbers")},b.prototype._verify2=function(f,s){r((f.negative|s.negative)===0,"red works only with positives"),r(f.red&&f.red===s.red,"red works only with red numbers")},b.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(M(f,f.umod(this.m)._forceRed(this)),f)},b.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},b.prototype.add=function(f,s){this._verify2(f,s);var v=f.add(s);return v.cmp(this.m)>=0&&v.isub(this.m),v._forceRed(this)},b.prototype.iadd=function(f,s){this._verify2(f,s);var v=f.iadd(s);return v.cmp(this.m)>=0&&v.isub(this.m),v},b.prototype.sub=function(f,s){this._verify2(f,s);var v=f.sub(s);return v.cmpn(0)<0&&v.iadd(this.m),v._forceRed(this)},b.prototype.isub=function(f,s){this._verify2(f,s);var v=f.isub(s);return v.cmpn(0)<0&&v.iadd(this.m),v},b.prototype.shl=function(f,s){return this._verify1(f),this.imod(f.ushln(s))},b.prototype.imul=function(f,s){return this._verify2(f,s),this.imod(f.imul(s))},b.prototype.mul=function(f,s){return this._verify2(f,s),this.imod(f.mul(s))},b.prototype.isqr=function(f){return this.imul(f,f.clone())},b.prototype.sqr=function(f){return this.mul(f,f)},b.prototype.sqrt=function(f){if(f.isZero())return f.clone();var s=this.m.andln(3);if(r(s%2===1),s===3){var v=this.m.add(new n(1)).iushrn(2);return this.pow(f,v)}for(var l=this.m.subn(1),h=0;!l.isZero()&&l.andln(1)===0;)h++,l.iushrn(1);r(!l.isZero());var A=new n(1).toRed(this),q=A.redNeg(),_=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new n(2*u*u).toRed(this);this.pow(u,_).cmp(q)!==0;)u.redIAdd(q);for(var I=this.pow(u,l),j=this.pow(f,l.addn(1).iushrn(1)),S=this.pow(f,l),L=h;S.cmp(A)!==0;){for(var Q=S,z=0;Q.cmp(A)!==0;z++)Q=Q.redSqr();r(z=0;h--){for(var I=s.words[h],j=u-1;j>=0;j--){var S=I>>j&1;if(A!==l[0]&&(A=this.sqr(A)),S===0&&q===0){_=0;continue}q<<=1,q|=S,_++,!(_!==v&&(h!==0||j!==0))&&(A=this.mul(A,l[q]),_=0,q=0)}u=26}return A},b.prototype.convertTo=function(f){var s=f.umod(this.m);return s===f?s.clone():s},b.prototype.convertFrom=function(f){var s=f.clone();return s.red=null,s},n.mont=function(f){return new E(f)};function E(p){b.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(E,b),E.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},E.prototype.convertFrom=function(f){var s=this.imod(f.mul(this.rinv));return s.red=null,s},E.prototype.imul=function(f,s){if(f.isZero()||s.isZero())return f.words[0]=0,f.length=1,f;var v=f.imul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.mul=function(f,s){if(f.isZero()||s.isZero())return new n(0)._forceRed(this);var v=f.mul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.invm=function(f){var s=this.imod(f._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof op>"u"||op,Gw)});var Zu=P((tte,Ww)=>{g();var Oa=Yw(),JF=qf();function XF(t){var e=Vw(t),r=e.toRed(Oa.mont(t.modulus)).redPow(new Oa(t.publicExponent)).fromRed();return{blinder:r,unblinder:e.invm(t.modulus)}}function Vw(t){var e=t.modulus.byteLength(),r;do r=new Oa(JF(e));while(r.cmp(t.modulus)>=0||!r.umod(t.prime1)||!r.umod(t.prime2));return r}function $w(t,e){var r=XF(e),i=e.modulus.byteLength(),n=new Oa(t).mul(r.blinder).umod(e.modulus),a=n.toRed(Oa.mont(e.prime1)),o=n.toRed(Oa.mont(e.prime2)),c=e.coefficient,m=e.prime1,M=e.prime2,B=a.redPow(e.exponent1).fromRed(),R=o.redPow(e.exponent2).fromRed(),F=B.isub(R).imul(c).umod(m).imul(M);return R.iadd(F).imul(r.unblinder).umod(e.modulus).toArrayLike(U,"be",i)}$w.getr=Vw;Ww.exports=$w});var Jw=P((ite,ZF)=>{ZF.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var sp=P(e7=>{"use strict";g();var eh=e7;function eL(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t!="string"){for(var i=0;i>8,o=n&255;a?r.push(a,o):r.push(o)}return r}eh.toArray=eL;function Xw(t){return t.length===1?"0"+t:t}eh.zero2=Xw;function Zw(t){for(var e="",r=0;r{"use strict";g();var Mi=t7,tL=sr(),rL=zr(),th=sp();Mi.assert=rL;Mi.toArray=th.toArray;Mi.zero2=th.zero2;Mi.toHex=th.toHex;Mi.encode=th.encode;function iL(t,e,r){var i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?c=(n>>1)-m:c=m,a.isubn(c)):c=0,i[o]=c,a.iushrn(1)}return i}Mi.getNAF=iL;function nL(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var i=0,n=0,a;t.cmpn(-i)>0||e.cmpn(-n)>0;){var o=t.andln(3)+i&3,c=e.andln(3)+n&3;o===3&&(o=-1),c===3&&(c=-1);var m;(o&1)===0?m=0:(a=t.andln(7)+i&7,(a===3||a===5)&&c===2?m=-o:m=o),r[0].push(m);var M;(c&1)===0?M=0:(a=e.andln(7)+n&7,(a===3||a===5)&&o===2?M=-c:M=c),r[1].push(M),2*i===m+1&&(i=1-i),2*n===M+1&&(n=1-n),t.iushrn(1),e.iushrn(1)}return r}Mi.getJSF=nL;function fL(t,e,r){var i="_"+e;t.prototype[e]=function(){return this[i]!==void 0?this[i]:this[i]=r.call(this)}}Mi.cachedProperty=fL;function aL(t){return typeof t=="string"?Mi.toArray(t,"hex"):t}Mi.parseBytes=aL;function oL(t){return new tL(t,"hex","le")}Mi.intFromLE=oL});var As=P((ste,r7)=>{"use strict";g();var Gf=sr(),ws=Gr(),rh=ws.getNAF,sL=ws.getJSF,ih=ws.assert;function tf(t,e){this.type=t,this.p=new Gf(e.p,16),this.red=e.prime?Gf.red(e.prime):Gf.mont(this.p),this.zero=new Gf(0).toRed(this.red),this.one=new Gf(1).toRed(this.red),this.two=new Gf(2).toRed(this.red),this.n=e.n&&new Gf(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}r7.exports=tf;tf.prototype.point=function(){throw new Error("Not implemented")};tf.prototype.validate=function(){throw new Error("Not implemented")};tf.prototype._fixedNafMul=function(e,r){ih(e.precomputed);var i=e._getDoubles(),n=rh(r,1,this._bitLength),a=(1<=c;M--)m=(m<<1)+n[M];o.push(m)}for(var B=this.jpoint(null,null,null),R=this.jpoint(null,null,null),F=a;F>0;F--){for(c=0;c=0;m--){for(var M=0;m>=0&&o[m]===0;m--)M++;if(m>=0&&M++,c=c.dblp(M),m<0)break;var B=o[m];ih(B!==0),e.type==="affine"?B>0?c=c.mixedAdd(a[B-1>>1]):c=c.mixedAdd(a[-B-1>>1].neg()):B>0?c=c.add(a[B-1>>1]):c=c.add(a[-B-1>>1].neg())}return e.type==="affine"?c.toP():c};tf.prototype._wnafMulAdd=function(e,r,i,n,a){var o=this._wnafT1,c=this._wnafT2,m=this._wnafT3,M=0,B,R,F;for(B=0;B=1;B-=2){var G=B-1,Z=B;if(o[G]!==1||o[Z]!==1){m[G]=rh(i[G],o[G],this._bitLength),m[Z]=rh(i[Z],o[Z],this._bitLength),M=Math.max(m[G].length,M),M=Math.max(m[Z].length,M);continue}var ie=[r[G],null,null,r[Z]];r[G].y.cmp(r[Z].y)===0?(ie[1]=r[G].add(r[Z]),ie[2]=r[G].toJ().mixedAdd(r[Z].neg())):r[G].y.cmp(r[Z].y.redNeg())===0?(ie[1]=r[G].toJ().mixedAdd(r[Z]),ie[2]=r[G].add(r[Z].neg())):(ie[1]=r[G].toJ().mixedAdd(r[Z]),ie[2]=r[G].toJ().mixedAdd(r[Z].neg()));var fe=[-3,-1,-5,-7,0,7,5,1,3],ce=sL(i[G],i[Z]);for(M=Math.max(ce[0].length,M),m[G]=new Array(M),m[Z]=new Array(M),R=0;R=0;B--){for(var pe=0;B>=0;){var Ne=!0;for(R=0;R=0&&pe++,Ke=Ke.dblp(pe),B<0)break;for(R=0;R0?F=c[R][k-1>>1]:k<0&&(F=c[R][-k-1>>1].neg()),F.type==="affine"?Ke=Ke.mixedAdd(F):Ke=Ke.add(F))}}for(B=0;B=Math.ceil((e.bitLength()+1)/r.step):!1};si.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,a=0;a{"use strict";g();var uL=Gr(),tr=sr(),up=gt(),Da=As(),hL=uL.assert;function ui(t){Da.call(this,"short",t),this.a=new tr(t.a,16).toRed(this.red),this.b=new tr(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}up(ui,Da);i7.exports=ui;ui.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,i;if(e.beta)r=new tr(e.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);r=n[0].cmp(n[1])<0?n[0]:n[1],r=r.toRed(this.red)}if(e.lambda)i=new tr(e.lambda,16);else{var a=this._getEndoRoots(this.n);this.g.mul(a[0]).x.cmp(this.g.x.redMul(r))===0?i=a[0]:(i=a[1],hL(this.g.mul(i).x.cmp(this.g.x.redMul(r))===0))}var o;return e.basis?o=e.basis.map(function(c){return{a:new tr(c.a,16),b:new tr(c.b,16)}}):o=this._getEndoBasis(i),{beta:r,lambda:i,basis:o}}};ui.prototype._getEndoRoots=function(e){var r=e===this.p?this.red:tr.mont(e),i=new tr(2).toRed(r).redInvm(),n=i.redNeg(),a=new tr(3).toRed(r).redNeg().redSqrt().redMul(i),o=n.redAdd(a).fromRed(),c=n.redSub(a).fromRed();return[o,c]};ui.prototype._getEndoBasis=function(e){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),i=e,n=this.n.clone(),a=new tr(1),o=new tr(0),c=new tr(0),m=new tr(1),M,B,R,F,N,G,Z,ie=0,fe,ce;i.cmpn(0)!==0;){var ge=n.div(i);fe=n.sub(ge.mul(i)),ce=c.sub(ge.mul(a));var ve=m.sub(ge.mul(o));if(!R&&fe.cmp(r)<0)M=Z.neg(),B=a,R=fe.neg(),F=ce;else if(R&&++ie===2)break;Z=fe,n=i,i=fe,c=a,a=ce,m=o,o=ve}N=fe.neg(),G=ce;var Ke=R.sqr().add(F.sqr()),be=N.sqr().add(G.sqr());return be.cmp(Ke)>=0&&(N=M,G=B),R.negative&&(R=R.neg(),F=F.neg()),N.negative&&(N=N.neg(),G=G.neg()),[{a:R,b:F},{a:N,b:G}]};ui.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],n=r[1],a=n.b.mul(e).divRound(this.n),o=i.b.neg().mul(e).divRound(this.n),c=a.mul(i.a),m=o.mul(n.a),M=a.mul(i.b),B=o.mul(n.b),R=e.sub(c).sub(m),F=M.add(B).neg();return{k1:R,k2:F}};ui.prototype.pointFromX=function(e,r){e=new tr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var a=n.fromRed().isOdd();return(r&&!a||!r&&a)&&(n=n.redNeg()),this.point(e,n)};ui.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,n=this.a.redMul(r),a=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(a).cmpn(0)===0};ui.prototype._endoWnafMulAdd=function(e,r,i){for(var n=this._endoWnafT1,a=this._endoWnafT2,o=0;o":""};dr.prototype.isInfinity=function(){return this.inf};dr.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)};dr.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=e.redInvm(),a=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),o=a.redSqr().redISub(this.x.redAdd(this.x)),c=a.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,c)};dr.prototype.getX=function(){return this.x.fromRed()};dr.prototype.getY=function(){return this.y.fromRed()};dr.prototype.mul=function(e){return e=new tr(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};dr.prototype.mulAdd=function(e,r,i){var n=[this,r],a=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,a):this.curve._wnafMulAdd(1,n,a,2)};dr.prototype.jmulAdd=function(e,r,i){var n=[this,r],a=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,a,!0):this.curve._wnafMulAdd(1,n,a,2,!0)};dr.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};dr.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,n=function(a){return a.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r};dr.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function gr(t,e,r,i){Da.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new tr(0)):(this.x=new tr(e,16),this.y=new tr(r,16),this.z=new tr(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}up(gr,Da.BasePoint);ui.prototype.jpoint=function(e,r,i){return new gr(this,e,r,i)};gr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(e);return this.curve.point(i,n)};gr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};gr.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),a=e.x.redMul(i),o=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),m=n.redSub(a),M=o.redSub(c);if(m.cmpn(0)===0)return M.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var B=m.redSqr(),R=B.redMul(m),F=n.redMul(B),N=M.redSqr().redIAdd(R).redISub(F).redISub(F),G=M.redMul(F.redISub(N)).redISub(o.redMul(R)),Z=this.z.redMul(e.z).redMul(m);return this.curve.jpoint(N,G,Z)};gr.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=e.x.redMul(r),a=this.y,o=e.y.redMul(r).redMul(this.z),c=i.redSub(n),m=a.redSub(o);if(c.cmpn(0)===0)return m.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var M=c.redSqr(),B=M.redMul(c),R=i.redMul(M),F=m.redSqr().redIAdd(B).redISub(R).redISub(R),N=m.redMul(R.redISub(F)).redISub(a.redMul(B)),G=this.z.redMul(c);return this.curve.jpoint(F,N,G)};gr.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(a),this.x.cmp(i)===0)return!0}};gr.prototype.inspect=function(){return this.isInfinity()?"":""};gr.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var o7=P((dte,a7)=>{"use strict";g();var Pa=sr(),f7=gt(),nh=As(),cL=Gr();function Ua(t){nh.call(this,"mont",t),this.a=new Pa(t.a,16).toRed(this.red),this.b=new Pa(t.b,16).toRed(this.red),this.i4=new Pa(4).toRed(this.red).redInvm(),this.two=new Pa(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}f7(Ua,nh);a7.exports=Ua;Ua.prototype.validate=function(e){var r=e.normalize().x,i=r.redSqr(),n=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),a=n.redSqrt();return a.redSqr().cmp(n)===0};function lr(t,e,r){nh.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Pa(e,16),this.z=new Pa(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}f7(lr,nh.BasePoint);Ua.prototype.decodePoint=function(e,r){return this.point(cL.toArray(e,r),1)};Ua.prototype.point=function(e,r){return new lr(this,e,r)};Ua.prototype.pointFromJSON=function(e){return lr.fromJSON(this,e)};lr.prototype.precompute=function(){};lr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};lr.fromJSON=function(e,r){return new lr(e,r[0],r[1]||e.one)};lr.prototype.inspect=function(){return this.isInfinity()?"":""};lr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};lr.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),i=this.x.redSub(this.z),n=i.redSqr(),a=r.redSub(n),o=r.redMul(n),c=a.redMul(n.redAdd(this.curve.a24.redMul(a)));return this.curve.point(o,c)};lr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.diffAdd=function(e,r){var i=this.x.redAdd(this.z),n=this.x.redSub(this.z),a=e.x.redAdd(e.z),o=e.x.redSub(e.z),c=o.redMul(i),m=a.redMul(n),M=r.z.redMul(c.redAdd(m).redSqr()),B=r.x.redMul(c.redISub(m).redSqr());return this.curve.point(M,B)};lr.prototype.mul=function(e){for(var r=e.clone(),i=this,n=this.curve.point(null,null),a=this,o=[];r.cmpn(0)!==0;r.iushrn(1))o.push(r.andln(1));for(var c=o.length-1;c>=0;c--)o[c]===0?(i=i.diffAdd(n,a),n=n.dbl()):(n=i.diffAdd(n,a),i=i.dbl());return n};lr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};lr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};lr.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var h7=P((pte,u7)=>{"use strict";g();var dL=Gr(),En=sr(),s7=gt(),fh=As(),lL=dL.assert;function Yi(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,fh.call(this,"edwards",t),this.a=new En(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new En(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new En(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),lL(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}s7(Yi,fh);u7.exports=Yi;Yi.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};Yi.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};Yi.prototype.jpoint=function(e,r,i,n){return this.point(e,r,i,n)};Yi.prototype.pointFromX=function(e,r){e=new En(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),n=this.c2.redSub(this.a.redMul(i)),a=this.one.redSub(this.c2.redMul(this.d).redMul(i)),o=n.redMul(a.redInvm()),c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");var m=c.fromRed().isOdd();return(r&&!m||!r&&m)&&(c=c.redNeg()),this.point(e,c)};Yi.prototype.pointFromY=function(e,r){e=new En(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),n=i.redSub(this.c2),a=i.redMul(this.d).redMul(this.c2).redSub(this.a),o=n.redMul(a.redInvm());if(o.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)};Yi.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),i=e.y.redSqr(),n=r.redMul(this.a).redAdd(i),a=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return n.cmp(a)===0};function Yt(t,e,r,i,n){fh.BasePoint.call(this,t,"projective"),e===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new En(e,16),this.y=new En(r,16),this.z=i?new En(i,16):this.curve.one,this.t=n&&new En(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}s7(Yt,fh.BasePoint);Yi.prototype.pointFromJSON=function(e){return Yt.fromJSON(this,e)};Yi.prototype.point=function(e,r,i,n){return new Yt(this,e,r,i,n)};Yt.fromJSON=function(e,r){return new Yt(e,r[0],r[1],r[2])};Yt.prototype.inspect=function(){return this.isInfinity()?"":""};Yt.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Yt.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var n=this.curve._mulA(e),a=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),o=n.redAdd(r),c=o.redSub(i),m=n.redSub(r),M=a.redMul(c),B=o.redMul(m),R=a.redMul(m),F=c.redMul(o);return this.curve.point(M,B,F,R)};Yt.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),n,a,o,c,m,M;if(this.curve.twisted){c=this.curve._mulA(r);var B=c.redAdd(i);this.zOne?(n=e.redSub(r).redSub(i).redMul(B.redSub(this.curve.two)),a=B.redMul(c.redSub(i)),o=B.redSqr().redSub(B).redSub(B)):(m=this.z.redSqr(),M=B.redSub(m).redISub(m),n=e.redSub(r).redISub(i).redMul(M),a=B.redMul(c.redSub(i)),o=B.redMul(M))}else c=r.redAdd(i),m=this.curve._mulC(this.z).redSqr(),M=c.redSub(m).redSub(m),n=this.curve._mulC(e.redISub(c)).redMul(M),a=this.curve._mulC(c).redMul(r.redISub(i)),o=c.redMul(M);return this.curve.point(n,a,o)};Yt.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};Yt.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),i=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),n=this.t.redMul(this.curve.dd).redMul(e.t),a=this.z.redMul(e.z.redAdd(e.z)),o=i.redSub(r),c=a.redSub(n),m=a.redAdd(n),M=i.redAdd(r),B=o.redMul(c),R=m.redMul(M),F=o.redMul(M),N=c.redMul(m);return this.curve.point(B,R,N,F)};Yt.prototype._projAdd=function(e){var r=this.z.redMul(e.z),i=r.redSqr(),n=this.x.redMul(e.x),a=this.y.redMul(e.y),o=this.curve.d.redMul(n).redMul(a),c=i.redSub(o),m=i.redAdd(o),M=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(n).redISub(a),B=r.redMul(c).redMul(M),R,F;return this.curve.twisted?(R=r.redMul(m).redMul(a.redSub(this.curve._mulA(n))),F=c.redMul(m)):(R=r.redMul(m).redMul(a.redSub(n)),F=this.curve._mulC(c).redMul(m)),this.curve.point(B,R,F)};Yt.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};Yt.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};Yt.prototype.mulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!1)};Yt.prototype.jmulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!0)};Yt.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};Yt.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Yt.prototype.getX=function(){return this.normalize(),this.x.fromRed()};Yt.prototype.getY=function(){return this.normalize(),this.y.fromRed()};Yt.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};Yt.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=e.clone(),n=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(n),this.x.cmp(r)===0)return!0}};Yt.prototype.toP=Yt.prototype.normalize;Yt.prototype.mixedAdd=Yt.prototype.add});var hp=P(c7=>{"use strict";g();var ah=c7;ah.base=As();ah.short=n7();ah.mont=o7();ah.edwards=h7()});var Si=P(Gt=>{"use strict";g();var pL=zr(),vL=gt();Gt.inherits=vL;function bL(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function gL(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),n=0;n>6|192,r[i++]=a&63|128):bL(t,n)?(a=65536+((a&1023)<<10)+(t.charCodeAt(++n)&1023),r[i++]=a>>18|240,r[i++]=a>>12&63|128,r[i++]=a>>6&63|128,r[i++]=a&63|128):(r[i++]=a>>12|224,r[i++]=a>>6&63|128,r[i++]=a&63|128)}else for(n=0;n>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}Gt.htonl=d7;function mL(t,e){for(var r="",i=0;i>>0}return a}Gt.join32=xL;function wL(t,e){for(var r=new Array(t.length*4),i=0,n=0;i>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=a&255):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=a&255)}return r}Gt.split32=wL;function AL(t,e){return t>>>e|t<<32-e}Gt.rotr32=AL;function _L(t,e){return t<>>32-e}Gt.rotl32=_L;function IL(t,e){return t+e>>>0}Gt.sum32=IL;function EL(t,e,r){return t+e+r>>>0}Gt.sum32_3=EL;function ML(t,e,r,i){return t+e+r+i>>>0}Gt.sum32_4=ML;function SL(t,e,r,i,n){return t+e+r+i+n>>>0}Gt.sum32_5=SL;function CL(t,e,r,i){var n=t[e],a=t[e+1],o=i+a>>>0,c=(o>>0,t[e+1]=o}Gt.sum64=CL;function BL(t,e,r,i){var n=e+i>>>0,a=(n>>0}Gt.sum64_hi=BL;function qL(t,e,r,i){var n=e+i;return n>>>0}Gt.sum64_lo=qL;function RL(t,e,r,i,n,a,o,c){var m=0,M=e;M=M+i>>>0,m+=M>>0,m+=M>>0,m+=M>>0}Gt.sum64_4_hi=RL;function TL(t,e,r,i,n,a,o,c){var m=e+i+a+c;return m>>>0}Gt.sum64_4_lo=TL;function OL(t,e,r,i,n,a,o,c,m,M){var B=0,R=e;R=R+i>>>0,B+=R>>0,B+=R>>0,B+=R>>0,B+=R>>0}Gt.sum64_5_hi=OL;function DL(t,e,r,i,n,a,o,c,m,M){var B=e+i+a+c+M;return B>>>0}Gt.sum64_5_lo=DL;function PL(t,e,r){var i=e<<32-r|t>>>r;return i>>>0}Gt.rotr64_hi=PL;function UL(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Gt.rotr64_lo=UL;function kL(t,e,r){return t>>>r}Gt.shr64_hi=kL;function FL(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Gt.shr64_lo=FL});var ka=P(b7=>{"use strict";g();var v7=Si(),LL=zr();function oh(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}b7.BlockHash=oh;oh.prototype.update=function(e,r){if(e=v7.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var i=e.length%this._delta8;this.pending=e.slice(e.length-i,e.length),this.pending.length===0&&(this.pending=null),e=v7.join32(e,0,e.length-i,this.endian);for(var n=0;n>>24&255,n[a++]=e>>>16&255,n[a++]=e>>>8&255,n[a++]=e&255}else for(n[a++]=e&255,n[a++]=e>>>8&255,n[a++]=e>>>16&255,n[a++]=e>>>24&255,n[a++]=0,n[a++]=0,n[a++]=0,n[a++]=0,o=8;o{"use strict";g();var NL=Si(),Vi=NL.rotr32;function QL(t,e,r,i){if(t===0)return g7(e,r,i);if(t===1||t===3)return m7(e,r,i);if(t===2)return y7(e,r,i)}Mn.ft_1=QL;function g7(t,e,r){return t&e^~t&r}Mn.ch32=g7;function y7(t,e,r){return t&e^t&r^e&r}Mn.maj32=y7;function m7(t,e,r){return t^e^r}Mn.p32=m7;function KL(t){return Vi(t,2)^Vi(t,13)^Vi(t,22)}Mn.s0_256=KL;function jL(t){return Vi(t,6)^Vi(t,11)^Vi(t,25)}Mn.s1_256=jL;function HL(t){return Vi(t,7)^Vi(t,18)^t>>>3}Mn.g0_256=HL;function zL(t){return Vi(t,17)^Vi(t,19)^t>>>10}Mn.g1_256=zL});var A7=P((Ite,w7)=>{"use strict";g();var Fa=Si(),GL=ka(),YL=cp(),dp=Fa.rotl32,_s=Fa.sum32,VL=Fa.sum32_5,$L=YL.ft_1,x7=GL.BlockHash,WL=[1518500249,1859775393,2400959708,3395469782];function $i(){if(!(this instanceof $i))return new $i;x7.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Fa.inherits($i,x7);w7.exports=$i;$i.blockSize=512;$i.outSize=160;$i.hmacStrength=80;$i.padLength=64;$i.prototype._update=function(e,r){for(var i=this.W,n=0;n<16;n++)i[n]=e[r+n];for(;n{"use strict";g();var La=Si(),JL=ka(),Na=cp(),XL=zr(),Ci=La.sum32,ZL=La.sum32_4,eN=La.sum32_5,tN=Na.ch32,rN=Na.maj32,iN=Na.s0_256,nN=Na.s1_256,fN=Na.g0_256,aN=Na.g1_256,_7=JL.BlockHash,oN=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Wi(){if(!(this instanceof Wi))return new Wi;_7.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=oN,this.W=new Array(64)}La.inherits(Wi,_7);I7.exports=Wi;Wi.blockSize=512;Wi.outSize=256;Wi.hmacStrength=192;Wi.padLength=64;Wi.prototype._update=function(e,r){for(var i=this.W,n=0;n<16;n++)i[n]=e[r+n];for(;n{"use strict";g();var pp=Si(),E7=lp();function Sn(){if(!(this instanceof Sn))return new Sn;E7.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}pp.inherits(Sn,E7);M7.exports=Sn;Sn.blockSize=512;Sn.outSize=224;Sn.hmacStrength=192;Sn.padLength=64;Sn.prototype._digest=function(e){return e==="hex"?pp.toHex32(this.h.slice(0,7),"big"):pp.split32(this.h.slice(0,7),"big")}});var gp=P((qte,R7)=>{"use strict";g();var Fr=Si(),sN=ka(),uN=zr(),Ji=Fr.rotr64_hi,Xi=Fr.rotr64_lo,C7=Fr.shr64_hi,B7=Fr.shr64_lo,rf=Fr.sum64,vp=Fr.sum64_hi,bp=Fr.sum64_lo,hN=Fr.sum64_4_hi,cN=Fr.sum64_4_lo,dN=Fr.sum64_5_hi,lN=Fr.sum64_5_lo,q7=sN.BlockHash,pN=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Bi(){if(!(this instanceof Bi))return new Bi;q7.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=pN,this.W=new Array(160)}Fr.inherits(Bi,q7);R7.exports=Bi;Bi.blockSize=1024;Bi.outSize=512;Bi.hmacStrength=192;Bi.padLength=128;Bi.prototype._prepareBlock=function(e,r){for(var i=this.W,n=0;n<32;n++)i[n]=e[r+n];for(;n{"use strict";g();var yp=Si(),T7=gp();function Cn(){if(!(this instanceof Cn))return new Cn;T7.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}yp.inherits(Cn,T7);O7.exports=Cn;Cn.blockSize=1024;Cn.outSize=384;Cn.hmacStrength=192;Cn.padLength=128;Cn.prototype._digest=function(e){return e==="hex"?yp.toHex32(this.h.slice(0,12),"big"):yp.split32(this.h.slice(0,12),"big")}});var P7=P(Qa=>{"use strict";g();Qa.sha1=A7();Qa.sha224=S7();Qa.sha256=lp();Qa.sha384=D7();Qa.sha512=gp()});var Q7=P(N7=>{"use strict";g();var Yf=Si(),SN=ka(),sh=Yf.rotl32,U7=Yf.sum32,Is=Yf.sum32_3,k7=Yf.sum32_4,L7=SN.BlockHash;function Zi(){if(!(this instanceof Zi))return new Zi;L7.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Yf.inherits(Zi,L7);N7.ripemd160=Zi;Zi.blockSize=512;Zi.outSize=160;Zi.hmacStrength=192;Zi.padLength=64;Zi.prototype._update=function(e,r){for(var i=this.h[0],n=this.h[1],a=this.h[2],o=this.h[3],c=this.h[4],m=i,M=n,B=a,R=o,F=c,N=0;N<80;N++){var G=U7(sh(k7(i,F7(N,n,a,o),e[qN[N]+r],CN(N)),TN[N]),c);i=c,c=o,o=sh(a,10),a=n,n=G,G=U7(sh(k7(m,F7(79-N,M,B,R),e[RN[N]+r],BN(N)),ON[N]),F),m=F,F=R,R=sh(B,10),B=M,M=G}G=Is(this.h[1],a,R),this.h[1]=Is(this.h[2],o,F),this.h[2]=Is(this.h[3],c,m),this.h[3]=Is(this.h[4],i,M),this.h[4]=Is(this.h[0],n,B),this.h[0]=G};Zi.prototype._digest=function(e){return e==="hex"?Yf.toHex32(this.h,"little"):Yf.split32(this.h,"little")};function F7(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function CN(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function BN(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var qN=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],RN=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],TN=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],ON=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var j7=P((Fte,K7)=>{"use strict";g();var DN=Si(),PN=zr();function Ka(t,e,r){if(!(this instanceof Ka))return new Ka(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(DN.toArray(e,r))}K7.exports=Ka;Ka.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),PN(e.length<=this.blockSize);for(var r=e.length;r{g();var yr=H7;yr.utils=Si();yr.common=ka();yr.sha=P7();yr.ripemd=Q7();yr.hmac=j7();yr.sha1=yr.sha.sha1;yr.sha256=yr.sha.sha256;yr.sha224=yr.sha.sha224;yr.sha384=yr.sha.sha384;yr.sha512=yr.sha.sha512;yr.ripemd160=yr.ripemd.ripemd160});var G7=P((Kte,z7)=>{g();z7.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var hh=P($7=>{"use strict";g();var xp=$7,nf=uh(),mp=hp(),UN=Gr(),Y7=UN.assert;function V7(t){t.type==="short"?this.curve=new mp.short(t):t.type==="edwards"?this.curve=new mp.edwards(t):this.curve=new mp.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,Y7(this.g.validate(),"Invalid curve"),Y7(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}xp.PresetCurve=V7;function ff(t,e){Object.defineProperty(xp,t,{configurable:!0,enumerable:!0,get:function(){var r=new V7(e);return Object.defineProperty(xp,t,{configurable:!0,enumerable:!0,value:r}),r}})}ff("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:nf.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});ff("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:nf.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});ff("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:nf.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});ff("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:nf.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});ff("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:nf.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});ff("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:nf.sha256,gRed:!1,g:["9"]});ff("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:nf.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var wp;try{wp=G7()}catch{wp=void 0}ff("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:nf.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",wp]})});var X7=P((Gte,J7)=>{"use strict";g();var kN=uh(),Vf=sp(),W7=zr();function af(t){if(!(this instanceof af))return new af(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Vf.toArray(t.entropy,t.entropyEnc||"hex"),r=Vf.toArray(t.nonce,t.nonceEnc||"hex"),i=Vf.toArray(t.pers,t.persEnc||"hex");W7(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}J7.exports=af;af.prototype._init=function(e,r,i){var n=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var a=0;a=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1};af.prototype.generate=function(e,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=Vf.toArray(i,n||"hex"),this._update(i));for(var a=[];a.length{"use strict";g();var FN=sr(),LN=Gr(),Ap=LN.assert;function Sr(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}Z7.exports=Sr;Sr.fromPublic=function(e,r,i){return r instanceof Sr?r:new Sr(e,{pub:r,pubEnc:i})};Sr.fromPrivate=function(e,r,i){return r instanceof Sr?r:new Sr(e,{priv:r,privEnc:i})};Sr.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};Sr.prototype.getPublic=function(e,r){return typeof e=="string"&&(r=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,e):this.pub};Sr.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};Sr.prototype._importPrivate=function(e,r){this.priv=new FN(e,r||16),this.priv=this.priv.umod(this.ec.curve.n)};Sr.prototype._importPublic=function(e,r){if(e.x||e.y){this.ec.curve.type==="mont"?Ap(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&Ap(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,r)};Sr.prototype.derive=function(e){return e.validate()||Ap(e.validate(),"public point not validated"),e.mul(this.priv).getX()};Sr.prototype.sign=function(e,r,i){return this.ec.sign(e,this,r,i)};Sr.prototype.verify=function(e,r){return this.ec.verify(e,r,this)};Sr.prototype.inspect=function(){return""}});var iA=P((Wte,rA)=>{"use strict";g();var ch=sr(),Ep=Gr(),NN=Ep.assert;function dh(t,e){if(t instanceof dh)return t;this._importDER(t,e)||(NN(t.r&&t.s,"Signature without r or s"),this.r=new ch(t.r,16),this.s=new ch(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}rA.exports=dh;function QN(){this.place=0}function _p(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,a=0,o=e.place;a>>=0;return n<=127?!1:(e.place=o,n)}function tA(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}dh.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=tA(r),i=tA(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];Ip(n,r.length),n=n.concat(r),n.push(2),Ip(n,i.length);var a=n.concat(i),o=[48];return Ip(o,a.length),o=o.concat(a),Ep.encode(o,e)}});var oA=P((Xte,aA)=>{"use strict";g();var $f=sr(),nA=X7(),KN=Gr(),Mp=hh(),jN=Wu(),fA=KN.assert,Sp=eA(),lh=iA();function hi(t){if(!(this instanceof hi))return new hi(t);typeof t=="string"&&(fA(Object.prototype.hasOwnProperty.call(Mp,t),"Unknown curve "+t),t=Mp[t]),t instanceof Mp.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}aA.exports=hi;hi.prototype.keyPair=function(e){return new Sp(this,e)};hi.prototype.keyFromPrivate=function(e,r){return Sp.fromPrivate(this,e,r)};hi.prototype.keyFromPublic=function(e,r){return Sp.fromPublic(this,e,r)};hi.prototype.genKeyPair=function(e){e||(e={});for(var r=new nA({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||jN(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new $f(2));;){var a=new $f(r.generate(i));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}};hi.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e};hi.prototype.sign=function(e,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new $f(e,16));for(var a=this.n.byteLength(),o=r.getPrivate().toArray("be",a),c=e.toArray("be",a),m=new nA({hash:this.hash,entropy:o,nonce:c,pers:n.pers,persEnc:n.persEnc||"utf8"}),M=this.n.sub(new $f(1)),B=0;;B++){var R=n.k?n.k(B):new $f(m.generate(this.n.byteLength()));if(R=this._truncateToN(R,!0),!(R.cmpn(1)<=0||R.cmp(M)>=0)){var F=this.g.mul(R);if(!F.isInfinity()){var N=F.getX(),G=N.umod(this.n);if(G.cmpn(0)!==0){var Z=R.invm(this.n).mul(G.mul(r.getPrivate()).iadd(e));if(Z=Z.umod(this.n),Z.cmpn(0)!==0){var ie=(F.getY().isOdd()?1:0)|(N.cmp(G)!==0?2:0);return n.canonical&&Z.cmp(this.nh)>0&&(Z=this.n.sub(Z),ie^=1),new lh({r:G,s:Z,recoveryParam:ie})}}}}}};hi.prototype.verify=function(e,r,i,n){e=this._truncateToN(new $f(e,16)),i=this.keyFromPublic(i,n),r=new lh(r,"hex");var a=r.r,o=r.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0||o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var c=o.invm(this.n),m=c.mul(e).umod(this.n),M=c.mul(a).umod(this.n),B;return this.curve._maxwellTrick?(B=this.g.jmulAdd(m,i.getPublic(),M),B.isInfinity()?!1:B.eqXToP(a)):(B=this.g.mulAdd(m,i.getPublic(),M),B.isInfinity()?!1:B.getX().umod(this.n).cmp(a)===0)};hi.prototype.recoverPubKey=function(t,e,r,i){fA((3&r)===r,"The recovery param is more than two bits"),e=new lh(e,i);var n=this.n,a=new $f(t),o=e.r,c=e.s,m=r&1,M=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&M)throw new Error("Unable to find sencond key candinate");M?o=this.curve.pointFromX(o.add(this.curve.n),m):o=this.curve.pointFromX(o,m);var B=e.r.invm(n),R=n.sub(a).mul(B).umod(n),F=c.mul(B).umod(n);return this.g.mulAdd(R,o,F)};hi.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new lh(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(t,e,n)}catch{continue}if(a.eq(r))return n}throw new Error("Unable to find valid recovery factor")}});var cA=P((ere,hA)=>{"use strict";g();var Es=Gr(),uA=Es.assert,sA=Es.parseBytes,ja=Es.cachedProperty;function pr(t,e){this.eddsa=t,this._secret=sA(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=sA(e.pub)}pr.fromPublic=function(e,r){return r instanceof pr?r:new pr(e,{pub:r})};pr.fromSecret=function(e,r){return r instanceof pr?r:new pr(e,{secret:r})};pr.prototype.secret=function(){return this._secret};ja(pr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});ja(pr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});ja(pr,"privBytes",function(){var e=this.eddsa,r=this.hash(),i=e.encodingLength-1,n=r.slice(0,e.encodingLength);return n[0]&=248,n[i]&=127,n[i]|=64,n});ja(pr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});ja(pr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});ja(pr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});pr.prototype.sign=function(e){return uA(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};pr.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)};pr.prototype.getSecret=function(e){return uA(this._secret,"KeyPair is public only"),Es.encode(this.secret(),e)};pr.prototype.getPublic=function(e){return Es.encode(this.pubBytes(),e)};hA.exports=pr});var lA=P((rre,dA)=>{"use strict";g();var HN=sr(),ph=Gr(),zN=ph.assert,vh=ph.cachedProperty,GN=ph.parseBytes;function Wf(t,e){this.eddsa=t,typeof e!="object"&&(e=GN(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),zN(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof HN&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}vh(Wf,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});vh(Wf,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});vh(Wf,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});vh(Wf,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});Wf.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Wf.prototype.toHex=function(){return ph.encode(this.toBytes(),"hex").toUpperCase()};dA.exports=Wf});var yA=P((nre,gA)=>{"use strict";g();var YN=uh(),VN=hh(),Ha=Gr(),$N=Ha.assert,vA=Ha.parseBytes,bA=cA(),pA=lA();function Lr(t){if($N(t==="ed25519","only tested with ed25519 so far"),!(this instanceof Lr))return new Lr(t);t=VN[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=YN.sha512}gA.exports=Lr;Lr.prototype.sign=function(e,r){e=vA(e);var i=this.keyFromSecret(r),n=this.hashInt(i.messagePrefix(),e),a=this.g.mul(n),o=this.encodePoint(a),c=this.hashInt(o,i.pubBytes(),e).mul(i.priv()),m=n.add(c).umod(this.curve.n);return this.makeSignature({R:a,S:m,Rencoded:o})};Lr.prototype.verify=function(e,r,i){e=vA(e),r=this.makeSignature(r);var n=this.keyFromPublic(i),a=this.hashInt(r.Rencoded(),n.pubBytes(),e),o=this.g.mul(r.S()),c=r.R().add(n.pub().mul(a));return c.eq(o)};Lr.prototype.hashInt=function(){for(var e=this.hash(),r=0;r{"use strict";g();var Jf=mA;Jf.version=Jw().version;Jf.utils=Gr();Jf.rand=Wu();Jf.curve=hp();Jf.curves=hh();Jf.ec=oA();Jf.eddsa=yA()});var Bp=P((xA,Cp)=>{g();(function(t,e){"use strict";function r(p,f){if(!p)throw new Error(f||"Assertion failed")}function i(p,f){p.super_=f;var s=function(){};s.prototype=f.prototype,p.prototype=new s,p.prototype.constructor=p}function n(p,f,s){if(n.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((f==="le"||f==="be")&&(s=f,f=10),this._init(p||0,f||10,s||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=$u().Buffer}catch{}n.isBN=function(f){return f instanceof n?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===n.wordSize&&Array.isArray(f.words)},n.max=function(f,s){return f.cmp(s)>0?f:s},n.min=function(f,s){return f.cmp(s)<0?f:s},n.prototype._init=function(f,s,v){if(typeof f=="number")return this._initNumber(f,s,v);if(typeof f=="object")return this._initArray(f,s,v);s==="hex"&&(s=16),r(s===(s|0)&&s>=2&&s<=36),f=f.toString().replace(/\s+/g,"");var l=0;f[0]==="-"&&(l++,this.negative=1),l=0;l-=3)A=f[l]|f[l-1]<<8|f[l-2]<<16,this.words[h]|=A<>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);else if(v==="le")for(l=0,h=0;l>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);return this._strip()};function o(p,f){var s=p.charCodeAt(f);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;r(!1,"Invalid character in "+p)}function c(p,f,s){var v=o(p,s);return s-1>=f&&(v|=o(p,s-1)<<4),v}n.prototype._parseHex=function(f,s,v){this.length=Math.ceil((f.length-s)/6),this.words=new Array(this.length);for(var l=0;l=s;l-=2)q=c(f,s,l)<=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8;else{var _=f.length-s;for(l=_%2===0?s+1:s;l=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8}this._strip()};function m(p,f,s,v){for(var l=0,h=0,A=Math.min(p.length,s),q=f;q=49?h=_-49+10:_>=17?h=_-17+10:h=_,r(_>=0&&h1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=B}catch{n.prototype.inspect=B}else n.prototype.inspect=B;function B(){return(this.red?""}var R=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],F=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(f,s){f=f||10,s=s|0||1;var v;if(f===16||f==="hex"){v="";for(var l=0,h=0,A=0;A>>24-l&16777215,h!==0||A!==this.length-1?v=R[6-_.length]+_+v:v=_+v,l+=2,l>=26&&(l-=26,A--)}for(h!==0&&(v=h.toString(16)+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}if(f===(f|0)&&f>=2&&f<=36){var u=F[f],I=N[f];v="";var j=this.clone();for(j.negative=0;!j.isZero();){var S=j.modrn(I).toString(f);j=j.idivn(I),j.isZero()?v=S+v:v=R[u-S.length]+S+v}for(this.isZero()&&(v="0"+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},n.prototype.toJSON=function(){return this.toString(16,2)},a&&(n.prototype.toBuffer=function(f,s){return this.toArrayLike(a,f,s)}),n.prototype.toArray=function(f,s){return this.toArrayLike(Array,f,s)};var G=function(f,s){return f.allocUnsafe?f.allocUnsafe(s):new f(s)};n.prototype.toArrayLike=function(f,s,v){this._strip();var l=this.byteLength(),h=v||Math.max(1,l);r(l<=h,"byte array longer than desired length"),r(h>0,"Requested array length <= 0");var A=G(f,h),q=s==="le"?"LE":"BE";return this["_toArrayLike"+q](A,l),A},n.prototype._toArrayLikeLE=function(f,s){for(var v=0,l=0,h=0,A=0;h>8&255),v>16&255),A===6?(v>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v=0&&(f[v--]=q>>8&255),v>=0&&(f[v--]=q>>16&255),A===6?(v>=0&&(f[v--]=q>>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v>=0)for(f[v--]=l;v>=0;)f[v--]=0},Math.clz32?n.prototype._countBits=function(f){return 32-Math.clz32(f)}:n.prototype._countBits=function(f){var s=f,v=0;return s>=4096&&(v+=13,s>>>=13),s>=64&&(v+=7,s>>>=7),s>=8&&(v+=4,s>>>=4),s>=2&&(v+=2,s>>>=2),v+s},n.prototype._zeroBits=function(f){if(f===0)return 26;var s=f,v=0;return(s&8191)===0&&(v+=13,s>>>=13),(s&127)===0&&(v+=7,s>>>=7),(s&15)===0&&(v+=4,s>>>=4),(s&3)===0&&(v+=2,s>>>=2),(s&1)===0&&v++,v},n.prototype.bitLength=function(){var f=this.words[this.length-1],s=this._countBits(f);return(this.length-1)*26+s};function Z(p){for(var f=new Array(p.bitLength()),s=0;s>>l&1}return f}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,s=0;sf.length?this.clone().ior(f):f.clone().ior(this)},n.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},n.prototype.iuand=function(f){var s;this.length>f.length?s=f:s=this;for(var v=0;vf.length?this.clone().iand(f):f.clone().iand(this)},n.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},n.prototype.iuxor=function(f){var s,v;this.length>f.length?(s=this,v=f):(s=f,v=this);for(var l=0;lf.length?this.clone().ixor(f):f.clone().ixor(this)},n.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},n.prototype.inotn=function(f){r(typeof f=="number"&&f>=0);var s=Math.ceil(f/26)|0,v=f%26;this._expand(s),v>0&&s--;for(var l=0;l0&&(this.words[l]=~this.words[l]&67108863>>26-v),this._strip()},n.prototype.notn=function(f){return this.clone().inotn(f)},n.prototype.setn=function(f,s){r(typeof f=="number"&&f>=0);var v=f/26|0,l=f%26;return this._expand(v+1),s?this.words[v]=this.words[v]|1<f.length?(v=this,l=f):(v=f,l=this);for(var h=0,A=0;A>>26;for(;h!==0&&A>>26;if(this.length=v.length,h!==0)this.words[this.length]=h,this.length++;else if(v!==this)for(;Af.length?this.clone().iadd(f):f.clone().iadd(this)},n.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var s=this.iadd(f);return f.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var v=this.cmp(f);if(v===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,h;v>0?(l=this,h=f):(l=f,h=this);for(var A=0,q=0;q>26,this.words[q]=s&67108863;for(;A!==0&&q>26,this.words[q]=s&67108863;if(A===0&&q>>26,j=_&67108863,S=Math.min(u,f.length-1),L=Math.max(0,u-p.length+1);L<=S;L++){var Q=u-L|0;l=p.words[Q]|0,h=f.words[L]|0,A=l*h+j,I+=A/67108864|0,j=A&67108863}s.words[u]=j|0,_=I|0}return _!==0?s.words[u]=_|0:s.length--,s._strip()}var fe=function(f,s,v){var l=f.words,h=s.words,A=v.words,q=0,_,u,I,j=l[0]|0,S=j&8191,L=j>>>13,Q=l[1]|0,z=Q&8191,J=Q>>>13,he=l[2]|0,W=he&8191,te=he>>>13,Qe=l[3]|0,ne=Qe&8191,ye=Qe>>>13,Rt=l[4]|0,Pe=Rt&8191,We=Rt>>>13,It=l[5]|0,Ue=It&8191,tt=It>>>13,St=l[6]|0,Re=St&8191,rt=St>>>13,Et=l[7]|0,Oe=Et&8191,it=Et>>>13,Tt=l[8]|0,ke=Tt&8191,nt=Tt>>>13,Ct=l[9]|0,Te=Ct&8191,Ze=Ct>>>13,wt=h[0]|0,Be=wt&8191,et=wt>>>13,_t=h[1]|0,qe=_t&8191,ft=_t>>>13,Ot=h[2]|0,Fe=Ot&8191,ut=Ot>>>13,lt=h[3]|0,Se=lt&8191,Xe=lt>>>13,Bt=h[4]|0,De=Bt&8191,at=Bt>>>13,Ut=h[5]|0,_e=Ut&8191,ot=Ut>>>13,C=h[6]|0,T=C&8191,O=C>>>13,w=h[7]|0,D=w&8191,H=w>>>13,Y=h[8]|0,V=Y&8191,ee=Y>>>13,Ee=h[9]|0,ae=Ee&8191,xe=Ee>>>13;v.negative=f.negative^s.negative,v.length=19,_=Math.imul(S,Be),u=Math.imul(S,et),u=u+Math.imul(L,Be)|0,I=Math.imul(L,et);var we=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(we>>>26)|0,we&=67108863,_=Math.imul(z,Be),u=Math.imul(z,et),u=u+Math.imul(J,Be)|0,I=Math.imul(J,et),_=_+Math.imul(S,qe)|0,u=u+Math.imul(S,ft)|0,u=u+Math.imul(L,qe)|0,I=I+Math.imul(L,ft)|0;var je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(je>>>26)|0,je&=67108863,_=Math.imul(W,Be),u=Math.imul(W,et),u=u+Math.imul(te,Be)|0,I=Math.imul(te,et),_=_+Math.imul(z,qe)|0,u=u+Math.imul(z,ft)|0,u=u+Math.imul(J,qe)|0,I=I+Math.imul(J,ft)|0,_=_+Math.imul(S,Fe)|0,u=u+Math.imul(S,ut)|0,u=u+Math.imul(L,Fe)|0,I=I+Math.imul(L,ut)|0;var ze=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(ze>>>26)|0,ze&=67108863,_=Math.imul(ne,Be),u=Math.imul(ne,et),u=u+Math.imul(ye,Be)|0,I=Math.imul(ye,et),_=_+Math.imul(W,qe)|0,u=u+Math.imul(W,ft)|0,u=u+Math.imul(te,qe)|0,I=I+Math.imul(te,ft)|0,_=_+Math.imul(z,Fe)|0,u=u+Math.imul(z,ut)|0,u=u+Math.imul(J,Fe)|0,I=I+Math.imul(J,ut)|0,_=_+Math.imul(S,Se)|0,u=u+Math.imul(S,Xe)|0,u=u+Math.imul(L,Se)|0,I=I+Math.imul(L,Xe)|0;var Ye=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,_=Math.imul(Pe,Be),u=Math.imul(Pe,et),u=u+Math.imul(We,Be)|0,I=Math.imul(We,et),_=_+Math.imul(ne,qe)|0,u=u+Math.imul(ne,ft)|0,u=u+Math.imul(ye,qe)|0,I=I+Math.imul(ye,ft)|0,_=_+Math.imul(W,Fe)|0,u=u+Math.imul(W,ut)|0,u=u+Math.imul(te,Fe)|0,I=I+Math.imul(te,ut)|0,_=_+Math.imul(z,Se)|0,u=u+Math.imul(z,Xe)|0,u=u+Math.imul(J,Se)|0,I=I+Math.imul(J,Xe)|0,_=_+Math.imul(S,De)|0,u=u+Math.imul(S,at)|0,u=u+Math.imul(L,De)|0,I=I+Math.imul(L,at)|0;var Ge=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,_=Math.imul(Ue,Be),u=Math.imul(Ue,et),u=u+Math.imul(tt,Be)|0,I=Math.imul(tt,et),_=_+Math.imul(Pe,qe)|0,u=u+Math.imul(Pe,ft)|0,u=u+Math.imul(We,qe)|0,I=I+Math.imul(We,ft)|0,_=_+Math.imul(ne,Fe)|0,u=u+Math.imul(ne,ut)|0,u=u+Math.imul(ye,Fe)|0,I=I+Math.imul(ye,ut)|0,_=_+Math.imul(W,Se)|0,u=u+Math.imul(W,Xe)|0,u=u+Math.imul(te,Se)|0,I=I+Math.imul(te,Xe)|0,_=_+Math.imul(z,De)|0,u=u+Math.imul(z,at)|0,u=u+Math.imul(J,De)|0,I=I+Math.imul(J,at)|0,_=_+Math.imul(S,_e)|0,u=u+Math.imul(S,ot)|0,u=u+Math.imul(L,_e)|0,I=I+Math.imul(L,ot)|0;var Ve=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,_=Math.imul(Re,Be),u=Math.imul(Re,et),u=u+Math.imul(rt,Be)|0,I=Math.imul(rt,et),_=_+Math.imul(Ue,qe)|0,u=u+Math.imul(Ue,ft)|0,u=u+Math.imul(tt,qe)|0,I=I+Math.imul(tt,ft)|0,_=_+Math.imul(Pe,Fe)|0,u=u+Math.imul(Pe,ut)|0,u=u+Math.imul(We,Fe)|0,I=I+Math.imul(We,ut)|0,_=_+Math.imul(ne,Se)|0,u=u+Math.imul(ne,Xe)|0,u=u+Math.imul(ye,Se)|0,I=I+Math.imul(ye,Xe)|0,_=_+Math.imul(W,De)|0,u=u+Math.imul(W,at)|0,u=u+Math.imul(te,De)|0,I=I+Math.imul(te,at)|0,_=_+Math.imul(z,_e)|0,u=u+Math.imul(z,ot)|0,u=u+Math.imul(J,_e)|0,I=I+Math.imul(J,ot)|0,_=_+Math.imul(S,T)|0,u=u+Math.imul(S,O)|0,u=u+Math.imul(L,T)|0,I=I+Math.imul(L,O)|0;var Je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Je>>>26)|0,Je&=67108863,_=Math.imul(Oe,Be),u=Math.imul(Oe,et),u=u+Math.imul(it,Be)|0,I=Math.imul(it,et),_=_+Math.imul(Re,qe)|0,u=u+Math.imul(Re,ft)|0,u=u+Math.imul(rt,qe)|0,I=I+Math.imul(rt,ft)|0,_=_+Math.imul(Ue,Fe)|0,u=u+Math.imul(Ue,ut)|0,u=u+Math.imul(tt,Fe)|0,I=I+Math.imul(tt,ut)|0,_=_+Math.imul(Pe,Se)|0,u=u+Math.imul(Pe,Xe)|0,u=u+Math.imul(We,Se)|0,I=I+Math.imul(We,Xe)|0,_=_+Math.imul(ne,De)|0,u=u+Math.imul(ne,at)|0,u=u+Math.imul(ye,De)|0,I=I+Math.imul(ye,at)|0,_=_+Math.imul(W,_e)|0,u=u+Math.imul(W,ot)|0,u=u+Math.imul(te,_e)|0,I=I+Math.imul(te,ot)|0,_=_+Math.imul(z,T)|0,u=u+Math.imul(z,O)|0,u=u+Math.imul(J,T)|0,I=I+Math.imul(J,O)|0,_=_+Math.imul(S,D)|0,u=u+Math.imul(S,H)|0,u=u+Math.imul(L,D)|0,I=I+Math.imul(L,H)|0;var $e=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($e>>>26)|0,$e&=67108863,_=Math.imul(ke,Be),u=Math.imul(ke,et),u=u+Math.imul(nt,Be)|0,I=Math.imul(nt,et),_=_+Math.imul(Oe,qe)|0,u=u+Math.imul(Oe,ft)|0,u=u+Math.imul(it,qe)|0,I=I+Math.imul(it,ft)|0,_=_+Math.imul(Re,Fe)|0,u=u+Math.imul(Re,ut)|0,u=u+Math.imul(rt,Fe)|0,I=I+Math.imul(rt,ut)|0,_=_+Math.imul(Ue,Se)|0,u=u+Math.imul(Ue,Xe)|0,u=u+Math.imul(tt,Se)|0,I=I+Math.imul(tt,Xe)|0,_=_+Math.imul(Pe,De)|0,u=u+Math.imul(Pe,at)|0,u=u+Math.imul(We,De)|0,I=I+Math.imul(We,at)|0,_=_+Math.imul(ne,_e)|0,u=u+Math.imul(ne,ot)|0,u=u+Math.imul(ye,_e)|0,I=I+Math.imul(ye,ot)|0,_=_+Math.imul(W,T)|0,u=u+Math.imul(W,O)|0,u=u+Math.imul(te,T)|0,I=I+Math.imul(te,O)|0,_=_+Math.imul(z,D)|0,u=u+Math.imul(z,H)|0,u=u+Math.imul(J,D)|0,I=I+Math.imul(J,H)|0,_=_+Math.imul(S,V)|0,u=u+Math.imul(S,ee)|0,u=u+Math.imul(L,V)|0,I=I+Math.imul(L,ee)|0;var Ie=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,_=Math.imul(Te,Be),u=Math.imul(Te,et),u=u+Math.imul(Ze,Be)|0,I=Math.imul(Ze,et),_=_+Math.imul(ke,qe)|0,u=u+Math.imul(ke,ft)|0,u=u+Math.imul(nt,qe)|0,I=I+Math.imul(nt,ft)|0,_=_+Math.imul(Oe,Fe)|0,u=u+Math.imul(Oe,ut)|0,u=u+Math.imul(it,Fe)|0,I=I+Math.imul(it,ut)|0,_=_+Math.imul(Re,Se)|0,u=u+Math.imul(Re,Xe)|0,u=u+Math.imul(rt,Se)|0,I=I+Math.imul(rt,Xe)|0,_=_+Math.imul(Ue,De)|0,u=u+Math.imul(Ue,at)|0,u=u+Math.imul(tt,De)|0,I=I+Math.imul(tt,at)|0,_=_+Math.imul(Pe,_e)|0,u=u+Math.imul(Pe,ot)|0,u=u+Math.imul(We,_e)|0,I=I+Math.imul(We,ot)|0,_=_+Math.imul(ne,T)|0,u=u+Math.imul(ne,O)|0,u=u+Math.imul(ye,T)|0,I=I+Math.imul(ye,O)|0,_=_+Math.imul(W,D)|0,u=u+Math.imul(W,H)|0,u=u+Math.imul(te,D)|0,I=I+Math.imul(te,H)|0,_=_+Math.imul(z,V)|0,u=u+Math.imul(z,ee)|0,u=u+Math.imul(J,V)|0,I=I+Math.imul(J,ee)|0,_=_+Math.imul(S,ae)|0,u=u+Math.imul(S,xe)|0,u=u+Math.imul(L,ae)|0,I=I+Math.imul(L,xe)|0;var Le=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Le>>>26)|0,Le&=67108863,_=Math.imul(Te,qe),u=Math.imul(Te,ft),u=u+Math.imul(Ze,qe)|0,I=Math.imul(Ze,ft),_=_+Math.imul(ke,Fe)|0,u=u+Math.imul(ke,ut)|0,u=u+Math.imul(nt,Fe)|0,I=I+Math.imul(nt,ut)|0,_=_+Math.imul(Oe,Se)|0,u=u+Math.imul(Oe,Xe)|0,u=u+Math.imul(it,Se)|0,I=I+Math.imul(it,Xe)|0,_=_+Math.imul(Re,De)|0,u=u+Math.imul(Re,at)|0,u=u+Math.imul(rt,De)|0,I=I+Math.imul(rt,at)|0,_=_+Math.imul(Ue,_e)|0,u=u+Math.imul(Ue,ot)|0,u=u+Math.imul(tt,_e)|0,I=I+Math.imul(tt,ot)|0,_=_+Math.imul(Pe,T)|0,u=u+Math.imul(Pe,O)|0,u=u+Math.imul(We,T)|0,I=I+Math.imul(We,O)|0,_=_+Math.imul(ne,D)|0,u=u+Math.imul(ne,H)|0,u=u+Math.imul(ye,D)|0,I=I+Math.imul(ye,H)|0,_=_+Math.imul(W,V)|0,u=u+Math.imul(W,ee)|0,u=u+Math.imul(te,V)|0,I=I+Math.imul(te,ee)|0,_=_+Math.imul(z,ae)|0,u=u+Math.imul(z,xe)|0,u=u+Math.imul(J,ae)|0,I=I+Math.imul(J,xe)|0;var Ae=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,_=Math.imul(Te,Fe),u=Math.imul(Te,ut),u=u+Math.imul(Ze,Fe)|0,I=Math.imul(Ze,ut),_=_+Math.imul(ke,Se)|0,u=u+Math.imul(ke,Xe)|0,u=u+Math.imul(nt,Se)|0,I=I+Math.imul(nt,Xe)|0,_=_+Math.imul(Oe,De)|0,u=u+Math.imul(Oe,at)|0,u=u+Math.imul(it,De)|0,I=I+Math.imul(it,at)|0,_=_+Math.imul(Re,_e)|0,u=u+Math.imul(Re,ot)|0,u=u+Math.imul(rt,_e)|0,I=I+Math.imul(rt,ot)|0,_=_+Math.imul(Ue,T)|0,u=u+Math.imul(Ue,O)|0,u=u+Math.imul(tt,T)|0,I=I+Math.imul(tt,O)|0,_=_+Math.imul(Pe,D)|0,u=u+Math.imul(Pe,H)|0,u=u+Math.imul(We,D)|0,I=I+Math.imul(We,H)|0,_=_+Math.imul(ne,V)|0,u=u+Math.imul(ne,ee)|0,u=u+Math.imul(ye,V)|0,I=I+Math.imul(ye,ee)|0,_=_+Math.imul(W,ae)|0,u=u+Math.imul(W,xe)|0,u=u+Math.imul(te,ae)|0,I=I+Math.imul(te,xe)|0;var Me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,_=Math.imul(Te,Se),u=Math.imul(Te,Xe),u=u+Math.imul(Ze,Se)|0,I=Math.imul(Ze,Xe),_=_+Math.imul(ke,De)|0,u=u+Math.imul(ke,at)|0,u=u+Math.imul(nt,De)|0,I=I+Math.imul(nt,at)|0,_=_+Math.imul(Oe,_e)|0,u=u+Math.imul(Oe,ot)|0,u=u+Math.imul(it,_e)|0,I=I+Math.imul(it,ot)|0,_=_+Math.imul(Re,T)|0,u=u+Math.imul(Re,O)|0,u=u+Math.imul(rt,T)|0,I=I+Math.imul(rt,O)|0,_=_+Math.imul(Ue,D)|0,u=u+Math.imul(Ue,H)|0,u=u+Math.imul(tt,D)|0,I=I+Math.imul(tt,H)|0,_=_+Math.imul(Pe,V)|0,u=u+Math.imul(Pe,ee)|0,u=u+Math.imul(We,V)|0,I=I+Math.imul(We,ee)|0,_=_+Math.imul(ne,ae)|0,u=u+Math.imul(ne,xe)|0,u=u+Math.imul(ye,ae)|0,I=I+Math.imul(ye,xe)|0;var Ce=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,_=Math.imul(Te,De),u=Math.imul(Te,at),u=u+Math.imul(Ze,De)|0,I=Math.imul(Ze,at),_=_+Math.imul(ke,_e)|0,u=u+Math.imul(ke,ot)|0,u=u+Math.imul(nt,_e)|0,I=I+Math.imul(nt,ot)|0,_=_+Math.imul(Oe,T)|0,u=u+Math.imul(Oe,O)|0,u=u+Math.imul(it,T)|0,I=I+Math.imul(it,O)|0,_=_+Math.imul(Re,D)|0,u=u+Math.imul(Re,H)|0,u=u+Math.imul(rt,D)|0,I=I+Math.imul(rt,H)|0,_=_+Math.imul(Ue,V)|0,u=u+Math.imul(Ue,ee)|0,u=u+Math.imul(tt,V)|0,I=I+Math.imul(tt,ee)|0,_=_+Math.imul(Pe,ae)|0,u=u+Math.imul(Pe,xe)|0,u=u+Math.imul(We,ae)|0,I=I+Math.imul(We,xe)|0;var me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(me>>>26)|0,me&=67108863,_=Math.imul(Te,_e),u=Math.imul(Te,ot),u=u+Math.imul(Ze,_e)|0,I=Math.imul(Ze,ot),_=_+Math.imul(ke,T)|0,u=u+Math.imul(ke,O)|0,u=u+Math.imul(nt,T)|0,I=I+Math.imul(nt,O)|0,_=_+Math.imul(Oe,D)|0,u=u+Math.imul(Oe,H)|0,u=u+Math.imul(it,D)|0,I=I+Math.imul(it,H)|0,_=_+Math.imul(Re,V)|0,u=u+Math.imul(Re,ee)|0,u=u+Math.imul(rt,V)|0,I=I+Math.imul(rt,ee)|0,_=_+Math.imul(Ue,ae)|0,u=u+Math.imul(Ue,xe)|0,u=u+Math.imul(tt,ae)|0,I=I+Math.imul(tt,xe)|0;var $=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($>>>26)|0,$&=67108863,_=Math.imul(Te,T),u=Math.imul(Te,O),u=u+Math.imul(Ze,T)|0,I=Math.imul(Ze,O),_=_+Math.imul(ke,D)|0,u=u+Math.imul(ke,H)|0,u=u+Math.imul(nt,D)|0,I=I+Math.imul(nt,H)|0,_=_+Math.imul(Oe,V)|0,u=u+Math.imul(Oe,ee)|0,u=u+Math.imul(it,V)|0,I=I+Math.imul(it,ee)|0,_=_+Math.imul(Re,ae)|0,u=u+Math.imul(Re,xe)|0,u=u+Math.imul(rt,ae)|0,I=I+Math.imul(rt,xe)|0;var X=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(X>>>26)|0,X&=67108863,_=Math.imul(Te,D),u=Math.imul(Te,H),u=u+Math.imul(Ze,D)|0,I=Math.imul(Ze,H),_=_+Math.imul(ke,V)|0,u=u+Math.imul(ke,ee)|0,u=u+Math.imul(nt,V)|0,I=I+Math.imul(nt,ee)|0,_=_+Math.imul(Oe,ae)|0,u=u+Math.imul(Oe,xe)|0,u=u+Math.imul(it,ae)|0,I=I+Math.imul(it,xe)|0;var de=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(de>>>26)|0,de&=67108863,_=Math.imul(Te,V),u=Math.imul(Te,ee),u=u+Math.imul(Ze,V)|0,I=Math.imul(Ze,ee),_=_+Math.imul(ke,ae)|0,u=u+Math.imul(ke,xe)|0,u=u+Math.imul(nt,ae)|0,I=I+Math.imul(nt,xe)|0;var oe=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(oe>>>26)|0,oe&=67108863,_=Math.imul(Te,ae),u=Math.imul(Te,xe),u=u+Math.imul(Ze,ae)|0,I=Math.imul(Ze,xe);var se=(q+_|0)+((u&8191)<<13)|0;return q=(I+(u>>>13)|0)+(se>>>26)|0,se&=67108863,A[0]=we,A[1]=je,A[2]=ze,A[3]=Ye,A[4]=Ge,A[5]=Ve,A[6]=Je,A[7]=$e,A[8]=Ie,A[9]=Le,A[10]=Ae,A[11]=Me,A[12]=Ce,A[13]=me,A[14]=$,A[15]=X,A[16]=de,A[17]=oe,A[18]=se,q!==0&&(A[19]=q,v.length++),v};Math.imul||(fe=ie);function ce(p,f,s){s.negative=f.negative^p.negative,s.length=p.length+f.length;for(var v=0,l=0,h=0;h>>26)|0,l+=A>>>26,A&=67108863}s.words[h]=q,v=A,A=l}return v!==0?s.words[h]=v:s.length--,s._strip()}function ge(p,f,s){return ce(p,f,s)}n.prototype.mulTo=function(f,s){var v,l=this.length+f.length;return this.length===10&&f.length===10?v=fe(this,f,s):l<63?v=ie(this,f,s):l<1024?v=ce(this,f,s):v=ge(this,f,s),v};function ve(p,f){this.x=p,this.y=f}ve.prototype.makeRBT=function(f){for(var s=new Array(f),v=n.prototype._countBits(f)-1,l=0;l>=1;return l},ve.prototype.permute=function(f,s,v,l,h,A){for(var q=0;q>>1)h++;return 1<>>13,v[2*A+1]=h&8191,h=h>>>13;for(A=2*s;A>=26,v+=h/67108864|0,v+=A>>>26,this.words[l]=A&67108863}return v!==0&&(this.words[l]=v,this.length++),s?this.ineg():this},n.prototype.muln=function(f){return this.clone().imuln(f)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(f){var s=Z(f);if(s.length===0)return new n(1);for(var v=this,l=0;l=0);var s=f%26,v=(f-s)/26,l=67108863>>>26-s<<26-s,h;if(s!==0){var A=0;for(h=0;h>>26-s}A&&(this.words[h]=A,this.length++)}if(v!==0){for(h=this.length-1;h>=0;h--)this.words[h+v]=this.words[h];for(h=0;h=0);var l;s?l=(s-s%26)/26:l=0;var h=f%26,A=Math.min((f-h)/26,this.length),q=67108863^67108863>>>h<A)for(this.length-=A,u=0;u=0&&(I!==0||u>=l);u--){var j=this.words[u]|0;this.words[u]=I<<26-h|j>>>h,I=j&q}return _&&I!==0&&(_.words[_.length++]=I),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(f,s,v){return r(this.negative===0),this.iushrn(f,s,v)},n.prototype.shln=function(f){return this.clone().ishln(f)},n.prototype.ushln=function(f){return this.clone().iushln(f)},n.prototype.shrn=function(f){return this.clone().ishrn(f)},n.prototype.ushrn=function(f){return this.clone().iushrn(f)},n.prototype.testn=function(f){r(typeof f=="number"&&f>=0);var s=f%26,v=(f-s)/26,l=1<=0);var s=f%26,v=(f-s)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=v)return this;if(s!==0&&v++,this.length=Math.min(v,this.length),s!==0){var l=67108863^67108863>>>s<=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},n.prototype.isubn=function(f){if(r(typeof f=="number"),r(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s>26)-(_/67108864|0),this.words[h+v]=A&67108863}for(;h>26,this.words[h+v]=A&67108863;if(q===0)return this._strip();for(r(q===-1),q=0,h=0;h>26,this.words[h]=A&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(f,s){var v=this.length-f.length,l=this.clone(),h=f,A=h.words[h.length-1]|0,q=this._countBits(A);v=26-q,v!==0&&(h=h.ushln(v),l.iushln(v),A=h.words[h.length-1]|0);var _=l.length-h.length,u;if(s!=="mod"){u=new n(null),u.length=_+1,u.words=new Array(u.length);for(var I=0;I=0;S--){var L=(l.words[h.length+S]|0)*67108864+(l.words[h.length+S-1]|0);for(L=Math.min(L/A|0,67108863),l._ishlnsubmul(h,L,S);l.negative!==0;)L--,l.negative=0,l._ishlnsubmul(h,1,S),l.isZero()||(l.negative^=1);u&&(u.words[S]=L)}return u&&u._strip(),l._strip(),s!=="div"&&v!==0&&l.iushrn(v),{div:u||null,mod:l}},n.prototype.divmod=function(f,s,v){if(r(!f.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var l,h,A;return this.negative!==0&&f.negative===0?(A=this.neg().divmod(f,s),s!=="mod"&&(l=A.div.neg()),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.iadd(f)),{div:l,mod:h}):this.negative===0&&f.negative!==0?(A=this.divmod(f.neg(),s),s!=="mod"&&(l=A.div.neg()),{div:l,mod:A.mod}):(this.negative&f.negative)!==0?(A=this.neg().divmod(f.neg(),s),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.isub(f)),{div:A.div,mod:h}):f.length>this.length||this.cmp(f)<0?{div:new n(0),mod:this}:f.length===1?s==="div"?{div:this.divn(f.words[0]),mod:null}:s==="mod"?{div:null,mod:new n(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new n(this.modrn(f.words[0]))}:this._wordDiv(f,s)},n.prototype.div=function(f){return this.divmod(f,"div",!1).div},n.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},n.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},n.prototype.divRound=function(f){var s=this.divmod(f);if(s.mod.isZero())return s.div;var v=s.div.negative!==0?s.mod.isub(f):s.mod,l=f.ushrn(1),h=f.andln(1),A=v.cmp(l);return A<0||h===1&&A===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},n.prototype.modrn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=(1<<26)%f,l=0,h=this.length-1;h>=0;h--)l=(v*l+(this.words[h]|0))%f;return s?-l:l},n.prototype.modn=function(f){return this.modrn(f)},n.prototype.idivn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=0,l=this.length-1;l>=0;l--){var h=(this.words[l]|0)+v*67108864;this.words[l]=h/f|0,v=h%f}return this._strip(),s?this.ineg():this},n.prototype.divn=function(f){return this.clone().idivn(f)},n.prototype.egcd=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=new n(0),q=new n(1),_=0;s.isEven()&&v.isEven();)s.iushrn(1),v.iushrn(1),++_;for(var u=v.clone(),I=s.clone();!s.isZero();){for(var j=0,S=1;(s.words[0]&S)===0&&j<26;++j,S<<=1);if(j>0)for(s.iushrn(j);j-- >0;)(l.isOdd()||h.isOdd())&&(l.iadd(u),h.isub(I)),l.iushrn(1),h.iushrn(1);for(var L=0,Q=1;(v.words[0]&Q)===0&&L<26;++L,Q<<=1);if(L>0)for(v.iushrn(L);L-- >0;)(A.isOdd()||q.isOdd())&&(A.iadd(u),q.isub(I)),A.iushrn(1),q.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(A),h.isub(q)):(v.isub(s),A.isub(l),q.isub(h))}return{a:A,b:q,gcd:v.iushln(_)}},n.prototype._invmp=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=v.clone();s.cmpn(1)>0&&v.cmpn(1)>0;){for(var q=0,_=1;(s.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(s.iushrn(q);q-- >0;)l.isOdd()&&l.iadd(A),l.iushrn(1);for(var u=0,I=1;(v.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(v.iushrn(u);u-- >0;)h.isOdd()&&h.iadd(A),h.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(h)):(v.isub(s),h.isub(l))}var j;return s.cmpn(1)===0?j=l:j=h,j.cmpn(0)<0&&j.iadd(f),j},n.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var s=this.clone(),v=f.clone();s.negative=0,v.negative=0;for(var l=0;s.isEven()&&v.isEven();l++)s.iushrn(1),v.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;v.isEven();)v.iushrn(1);var h=s.cmp(v);if(h<0){var A=s;s=v,v=A}else if(h===0||v.cmpn(1)===0)break;s.isub(v)}while(!0);return v.iushln(l)},n.prototype.invm=function(f){return this.egcd(f).a.umod(f)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(f){return this.words[0]&f},n.prototype.bincn=function(f){r(typeof f=="number");var s=f%26,v=(f-s)/26,l=1<>>26,q&=67108863,this.words[A]=q}return h!==0&&(this.words[A]=h,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(f){var s=f<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var v;if(this.length>1)v=1;else{s&&(f=-f),r(f<=67108863,"Number is too big");var l=this.words[0]|0;v=l===f?0:lf.length)return 1;if(this.length=0;v--){var l=this.words[v]|0,h=f.words[v]|0;if(l!==h){lh&&(s=1);break}}return s},n.prototype.gtn=function(f){return this.cmpn(f)===1},n.prototype.gt=function(f){return this.cmp(f)===1},n.prototype.gten=function(f){return this.cmpn(f)>=0},n.prototype.gte=function(f){return this.cmp(f)>=0},n.prototype.ltn=function(f){return this.cmpn(f)===-1},n.prototype.lt=function(f){return this.cmp(f)===-1},n.prototype.lten=function(f){return this.cmpn(f)<=0},n.prototype.lte=function(f){return this.cmp(f)<=0},n.prototype.eqn=function(f){return this.cmpn(f)===0},n.prototype.eq=function(f){return this.cmp(f)===0},n.red=function(f){return new b(f)},n.prototype.toRed=function(f){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(f){return this.red=f,this},n.prototype.forceRed=function(f){return r(!this.red,"Already a number in reduction context"),this._forceRed(f)},n.prototype.redAdd=function(f){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},n.prototype.redIAdd=function(f){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},n.prototype.redSub=function(f){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},n.prototype.redISub=function(f){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},n.prototype.redShl=function(f){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},n.prototype.redMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},n.prototype.redIMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(f){return r(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var Ke={k256:null,p224:null,p192:null,p25519:null};function be(p,f){this.name=p,this.p=new n(f,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}be.prototype._tmp=function(){var f=new n(null);return f.words=new Array(Math.ceil(this.n/13)),f},be.prototype.ireduce=function(f){var s=f,v;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),v=s.bitLength();while(v>this.n);var l=v0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},be.prototype.split=function(f,s){f.iushrn(this.n,0,s)},be.prototype.imulK=function(f){return f.imul(this.k)};function pe(){be.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(pe,be),pe.prototype.split=function(f,s){for(var v=4194303,l=Math.min(f.length,9),h=0;h>>22,A=q}A>>>=22,f.words[h-10]=A,A===0&&f.length>10?f.length-=10:f.length-=9},pe.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var s=0,v=0;v>>=26,f.words[v]=h,s=l}return s!==0&&(f.words[f.length++]=s),f},n._prime=function(f){if(Ke[f])return Ke[f];var s;if(f==="k256")s=new pe;else if(f==="p224")s=new Ne;else if(f==="p192")s=new k;else if(f==="p25519")s=new d;else throw new Error("Unknown prime "+f);return Ke[f]=s,s};function b(p){if(typeof p=="string"){var f=n._prime(p);this.m=f.p,this.prime=f}else r(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}b.prototype._verify1=function(f){r(f.negative===0,"red works only with positives"),r(f.red,"red works only with red numbers")},b.prototype._verify2=function(f,s){r((f.negative|s.negative)===0,"red works only with positives"),r(f.red&&f.red===s.red,"red works only with red numbers")},b.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(M(f,f.umod(this.m)._forceRed(this)),f)},b.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},b.prototype.add=function(f,s){this._verify2(f,s);var v=f.add(s);return v.cmp(this.m)>=0&&v.isub(this.m),v._forceRed(this)},b.prototype.iadd=function(f,s){this._verify2(f,s);var v=f.iadd(s);return v.cmp(this.m)>=0&&v.isub(this.m),v},b.prototype.sub=function(f,s){this._verify2(f,s);var v=f.sub(s);return v.cmpn(0)<0&&v.iadd(this.m),v._forceRed(this)},b.prototype.isub=function(f,s){this._verify2(f,s);var v=f.isub(s);return v.cmpn(0)<0&&v.iadd(this.m),v},b.prototype.shl=function(f,s){return this._verify1(f),this.imod(f.ushln(s))},b.prototype.imul=function(f,s){return this._verify2(f,s),this.imod(f.imul(s))},b.prototype.mul=function(f,s){return this._verify2(f,s),this.imod(f.mul(s))},b.prototype.isqr=function(f){return this.imul(f,f.clone())},b.prototype.sqr=function(f){return this.mul(f,f)},b.prototype.sqrt=function(f){if(f.isZero())return f.clone();var s=this.m.andln(3);if(r(s%2===1),s===3){var v=this.m.add(new n(1)).iushrn(2);return this.pow(f,v)}for(var l=this.m.subn(1),h=0;!l.isZero()&&l.andln(1)===0;)h++,l.iushrn(1);r(!l.isZero());var A=new n(1).toRed(this),q=A.redNeg(),_=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new n(2*u*u).toRed(this);this.pow(u,_).cmp(q)!==0;)u.redIAdd(q);for(var I=this.pow(u,l),j=this.pow(f,l.addn(1).iushrn(1)),S=this.pow(f,l),L=h;S.cmp(A)!==0;){for(var Q=S,z=0;Q.cmp(A)!==0;z++)Q=Q.redSqr();r(z=0;h--){for(var I=s.words[h],j=u-1;j>=0;j--){var S=I>>j&1;if(A!==l[0]&&(A=this.sqr(A)),S===0&&q===0){_=0;continue}q<<=1,q|=S,_++,!(_!==v&&(h!==0||j!==0))&&(A=this.mul(A,l[q]),_=0,q=0)}u=26}return A},b.prototype.convertTo=function(f){var s=f.umod(this.m);return s===f?s.clone():s},b.prototype.convertFrom=function(f){var s=f.clone();return s.red=null,s},n.mont=function(f){return new E(f)};function E(p){b.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(E,b),E.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},E.prototype.convertFrom=function(f){var s=this.imod(f.mul(this.rinv));return s.red=null,s},E.prototype.imul=function(f,s){if(f.isZero()||s.isZero())return f.words[0]=0,f.length=1,f;var v=f.imul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.mul=function(f,s){if(f.isZero()||s.isZero())return new n(0)._forceRed(this);var v=f.mul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.invm=function(f){var s=this.imod(f._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof Cp>"u"||Cp,xA)});var gh=P((ure,wA)=>{"use strict";g();var bh=fn(),za=bh.Buffer,ci={},di;for(di in bh)!bh.hasOwnProperty(di)||di==="SlowBuffer"||di==="Buffer"||(ci[di]=bh[di]);var Ga=ci.Buffer={};for(di in za)!za.hasOwnProperty(di)||di==="allocUnsafe"||di==="allocUnsafeSlow"||(Ga[di]=za[di]);ci.Buffer.prototype=za.prototype;(!Ga.from||Ga.from===Uint8Array.from)&&(Ga.from=function(t,e,r){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return za(t,e,r)});Ga.alloc||(Ga.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var i=za(t);return!e||e.length===0?i.fill(0):typeof r=="string"?i.fill(e,r):i.fill(e),i});if(!ci.kStringMaxLength)try{ci.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}ci.constants||(ci.constants={MAX_LENGTH:ci.kMaxLength},ci.kStringMaxLength&&(ci.constants.MAX_STRING_LENGTH=ci.kStringMaxLength));wA.exports=ci});var yh=P(AA=>{"use strict";g();var WN=gt();function li(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}AA.Reporter=li;li.prototype.isError=function(e){return e instanceof Ya};li.prototype.save=function(){let e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}};li.prototype.restore=function(e){let r=this._reporterState;r.obj=e.obj,r.path=r.path.slice(0,e.pathLen)};li.prototype.enterKey=function(e){return this._reporterState.path.push(e)};li.prototype.exitKey=function(e){let r=this._reporterState;r.path=r.path.slice(0,e-1)};li.prototype.leaveKey=function(e,r,i){let n=this._reporterState;this.exitKey(e),n.obj!==null&&(n.obj[r]=i)};li.prototype.path=function(){return this._reporterState.path.join("/")};li.prototype.enterObject=function(){let e=this._reporterState,r=e.obj;return e.obj={},r};li.prototype.leaveObject=function(e){let r=this._reporterState,i=r.obj;return r.obj=e,i};li.prototype.error=function(e){let r,i=this._reporterState,n=e instanceof Ya;if(n?r=e:r=new Ya(i.path.map(function(a){return"["+JSON.stringify(a)+"]"}).join(""),e.message||e,e.stack),!i.options.partial)throw r;return n||i.errors.push(r),r};li.prototype.wrapResult=function(e){let r=this._reporterState;return r.options.partial?{result:this.isError(e)?null:e,errors:r.errors}:e};function Ya(t,e){this.path=t,this.rethrow(e)}WN(Ya,Error);Ya.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,Ya),!this.stack)try{throw new Error(this.message)}catch(r){this.stack=r.stack}return this}});var Wa=P(qp=>{"use strict";g();var JN=gt(),mh=yh().Reporter,Va=gh().Buffer;function pi(t,e){if(mh.call(this,e),!Va.isBuffer(t)){this.error("Input not Buffer");return}this.base=t,this.offset=0,this.length=t.length}JN(pi,mh);qp.DecoderBuffer=pi;pi.isDecoderBuffer=function(e){return e instanceof pi?!0:typeof e=="object"&&Va.isBuffer(e.base)&&e.constructor.name==="DecoderBuffer"&&typeof e.offset=="number"&&typeof e.length=="number"&&typeof e.save=="function"&&typeof e.restore=="function"&&typeof e.isEmpty=="function"&&typeof e.readUInt8=="function"&&typeof e.skip=="function"&&typeof e.raw=="function"};pi.prototype.save=function(){return{offset:this.offset,reporter:mh.prototype.save.call(this)}};pi.prototype.restore=function(e){let r=new pi(this.base);return r.offset=e.offset,r.length=this.offset,this.offset=e.offset,mh.prototype.restore.call(this,e.reporter),r};pi.prototype.isEmpty=function(){return this.offset===this.length};pi.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")};pi.prototype.skip=function(e,r){if(!(this.offset+e<=this.length))return this.error(r||"DecoderBuffer overrun");let i=new pi(this.base);return i._reporterState=this._reporterState,i.offset=this.offset,i.length=this.offset+e,this.offset+=e,i};pi.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)};function $a(t,e){if(Array.isArray(t))this.length=0,this.value=t.map(function(r){return $a.isEncoderBuffer(r)||(r=new $a(r,e)),this.length+=r.length,r},this);else if(typeof t=="number"){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if(typeof t=="string")this.value=t,this.length=Va.byteLength(t);else if(Va.isBuffer(t))this.value=t,this.length=t.length;else return e.error("Unsupported type: "+typeof t)}qp.EncoderBuffer=$a;$a.isEncoderBuffer=function(e){return e instanceof $a?!0:typeof e=="object"&&e.constructor.name==="EncoderBuffer"&&typeof e.length=="number"&&typeof e.join=="function"};$a.prototype.join=function(e,r){return e||(e=Va.alloc(this.length)),r||(r=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(i){i.join(e,r),r+=i.length}):(typeof this.value=="number"?e[r]=this.value:typeof this.value=="string"?e.write(this.value,r):Va.isBuffer(this.value)&&this.value.copy(e,r),r+=this.length)),e}});var xh=P((vre,IA)=>{"use strict";g();var XN=yh().Reporter,ZN=Wa().EncoderBuffer,eQ=Wa().DecoderBuffer,Tr=zr(),_A=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],tQ=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(_A),rQ=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function zt(t,e,r){let i={};this._baseState=i,i.name=r,i.enc=t,i.parent=e||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}IA.exports=zt;var iQ=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];zt.prototype.clone=function(){let e=this._baseState,r={};iQ.forEach(function(n){r[n]=e[n]});let i=new this.constructor(r.parent);return i._baseState=r,i};zt.prototype._wrap=function(){let e=this._baseState;tQ.forEach(function(r){this[r]=function(){let n=new this.constructor(this);return e.children.push(n),n[r].apply(n,arguments)}},this)};zt.prototype._init=function(e){let r=this._baseState;Tr(r.parent===null),e.call(this),r.children=r.children.filter(function(i){return i._baseState.parent===this},this),Tr.equal(r.children.length,1,"Root node can have only one child")};zt.prototype._useArgs=function(e){let r=this._baseState,i=e.filter(function(n){return n instanceof this.constructor},this);e=e.filter(function(n){return!(n instanceof this.constructor)},this),i.length!==0&&(Tr(r.children===null),r.children=i,i.forEach(function(n){n._baseState.parent=this},this)),e.length!==0&&(Tr(r.args===null),r.args=e,r.reverseArgs=e.map(function(n){if(typeof n!="object"||n.constructor!==Object)return n;let a={};return Object.keys(n).forEach(function(o){o==(o|0)&&(o|=0);let c=n[o];a[c]=o}),a}))};rQ.forEach(function(t){zt.prototype[t]=function(){let r=this._baseState;throw new Error(t+" not implemented for encoding: "+r.enc)}});_A.forEach(function(t){zt.prototype[t]=function(){let r=this._baseState,i=Array.prototype.slice.call(arguments);return Tr(r.tag===null),r.tag=t,this._useArgs(i),this}});zt.prototype.use=function(e){Tr(e);let r=this._baseState;return Tr(r.use===null),r.use=e,this};zt.prototype.optional=function(){let e=this._baseState;return e.optional=!0,this};zt.prototype.def=function(e){let r=this._baseState;return Tr(r.default===null),r.default=e,r.optional=!0,this};zt.prototype.explicit=function(e){let r=this._baseState;return Tr(r.explicit===null&&r.implicit===null),r.explicit=e,this};zt.prototype.implicit=function(e){let r=this._baseState;return Tr(r.explicit===null&&r.implicit===null),r.implicit=e,this};zt.prototype.obj=function(){let e=this._baseState,r=Array.prototype.slice.call(arguments);return e.obj=!0,r.length!==0&&this._useArgs(r),this};zt.prototype.key=function(e){let r=this._baseState;return Tr(r.key===null),r.key=e,this};zt.prototype.any=function(){let e=this._baseState;return e.any=!0,this};zt.prototype.choice=function(e){let r=this._baseState;return Tr(r.choice===null),r.choice=e,this._useArgs(Object.keys(e).map(function(i){return e[i]})),this};zt.prototype.contains=function(e){let r=this._baseState;return Tr(r.use===null),r.contains=e,this};zt.prototype._decode=function(e,r){let i=this._baseState;if(i.parent===null)return e.wrapResult(i.children[0]._decode(e,r));let n=i.default,a=!0,o=null;if(i.key!==null&&(o=e.enterKey(i.key)),i.optional){let m=null;if(i.explicit!==null?m=i.explicit:i.implicit!==null?m=i.implicit:i.tag!==null&&(m=i.tag),m===null&&!i.any){let M=e.save();try{i.choice===null?this._decodeGeneric(i.tag,e,r):this._decodeChoice(e,r),a=!0}catch{a=!1}e.restore(M)}else if(a=this._peekTag(e,m,i.any),e.isError(a))return a}let c;if(i.obj&&a&&(c=e.enterObject()),a){if(i.explicit!==null){let M=this._decodeTag(e,i.explicit);if(e.isError(M))return M;e=M}let m=e.offset;if(i.use===null&&i.choice===null){let M;i.any&&(M=e.save());let B=this._decodeTag(e,i.implicit!==null?i.implicit:i.tag,i.any);if(e.isError(B))return B;i.any?n=e.raw(M):e=B}if(r&&r.track&&i.tag!==null&&r.track(e.path(),m,e.length,"tagged"),r&&r.track&&i.tag!==null&&r.track(e.path(),e.offset,e.length,"content"),i.any||(i.choice===null?n=this._decodeGeneric(i.tag,e,r):n=this._decodeChoice(e,r)),e.isError(n))return n;if(!i.any&&i.choice===null&&i.children!==null&&i.children.forEach(function(B){B._decode(e,r)}),i.contains&&(i.tag==="octstr"||i.tag==="bitstr")){let M=new eQ(n);n=this._getUse(i.contains,e._reporterState.obj)._decode(M,r)}}return i.obj&&a&&(n=e.leaveObject(c)),i.key!==null&&(n!==null||a===!0)?e.leaveKey(o,i.key,n):o!==null&&e.exitKey(o),n};zt.prototype._decodeGeneric=function(e,r,i){let n=this._baseState;return e==="seq"||e==="set"?null:e==="seqof"||e==="setof"?this._decodeList(r,e,n.args[0],i):/str$/.test(e)?this._decodeStr(r,e,i):e==="objid"&&n.args?this._decodeObjid(r,n.args[0],n.args[1],i):e==="objid"?this._decodeObjid(r,null,null,i):e==="gentime"||e==="utctime"?this._decodeTime(r,e,i):e==="null_"?this._decodeNull(r,i):e==="bool"?this._decodeBool(r,i):e==="objDesc"?this._decodeStr(r,e,i):e==="int"||e==="enum"?this._decodeInt(r,n.args&&n.args[0],i):n.use!==null?this._getUse(n.use,r._reporterState.obj)._decode(r,i):r.error("unknown tag: "+e)};zt.prototype._getUse=function(e,r){let i=this._baseState;return i.useDecoder=this._use(e,r),Tr(i.useDecoder._baseState.parent===null),i.useDecoder=i.useDecoder._baseState.children[0],i.implicit!==i.useDecoder._baseState.implicit&&(i.useDecoder=i.useDecoder.clone(),i.useDecoder._baseState.implicit=i.implicit),i.useDecoder};zt.prototype._decodeChoice=function(e,r){let i=this._baseState,n=null,a=!1;return Object.keys(i.choice).some(function(o){let c=e.save(),m=i.choice[o];try{let M=m._decode(e,r);if(e.isError(M))return!1;n={type:o,value:M},a=!0}catch{return e.restore(c),!1}return!0},this),a?n:e.error("Choice not matched")};zt.prototype._createEncoderBuffer=function(e){return new ZN(e,this.reporter)};zt.prototype._encode=function(e,r,i){let n=this._baseState;if(n.default!==null&&n.default===e)return;let a=this._encodeValue(e,r,i);if(a!==void 0&&!this._skipDefault(a,r,i))return a};zt.prototype._encodeValue=function(e,r,i){let n=this._baseState;if(n.parent===null)return n.children[0]._encode(e,r||new XN);let a=null;if(this.reporter=r,n.optional&&e===void 0)if(n.default!==null)e=n.default;else return;let o=null,c=!1;if(n.any)a=this._createEncoderBuffer(e);else if(n.choice)a=this._encodeChoice(e,r);else if(n.contains)o=this._getUse(n.contains,i)._encode(e,r),c=!0;else if(n.children)o=n.children.map(function(m){if(m._baseState.tag==="null_")return m._encode(null,r,e);if(m._baseState.key===null)return r.error("Child should have a key");let M=r.enterKey(m._baseState.key);if(typeof e!="object")return r.error("Child expected, but input is not object");let B=m._encode(e[m._baseState.key],r,e);return r.leaveKey(M),B},this).filter(function(m){return m}),o=this._createEncoderBuffer(o);else if(n.tag==="seqof"||n.tag==="setof"){if(!(n.args&&n.args.length===1))return r.error("Too many args for : "+n.tag);if(!Array.isArray(e))return r.error("seqof/setof, but data is not Array");let m=this.clone();m._baseState.implicit=null,o=this._createEncoderBuffer(e.map(function(M){let B=this._baseState;return this._getUse(B.args[0],e)._encode(M,r)},m))}else n.use!==null?a=this._getUse(n.use,i)._encode(e,r):(o=this._encodePrimitive(n.tag,e),c=!0);if(!n.any&&n.choice===null){let m=n.implicit!==null?n.implicit:n.tag,M=n.implicit===null?"universal":"context";m===null?n.use===null&&r.error("Tag could be omitted only for .use()"):n.use===null&&(a=this._encodeComposite(m,c,M,o))}return n.explicit!==null&&(a=this._encodeComposite(n.explicit,!1,"context",a)),a};zt.prototype._encodeChoice=function(e,r){let i=this._baseState,n=i.choice[e.type];return n||Tr(!1,e.type+" not found in "+JSON.stringify(Object.keys(i.choice))),n._encode(e.value,r)};zt.prototype._encodePrimitive=function(e,r){let i=this._baseState;if(/str$/.test(e))return this._encodeStr(r,e);if(e==="objid"&&i.args)return this._encodeObjid(r,i.reverseArgs[0],i.args[1]);if(e==="objid")return this._encodeObjid(r,null,null);if(e==="gentime"||e==="utctime")return this._encodeTime(r,e);if(e==="null_")return this._encodeNull();if(e==="int"||e==="enum")return this._encodeInt(r,i.args&&i.reverseArgs[0]);if(e==="bool")return this._encodeBool(r);if(e==="objDesc")return this._encodeStr(r,e);throw new Error("Unsupported tag: "+e)};zt.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)};zt.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}});var wh=P(Xf=>{"use strict";g();function EA(t){let e={};return Object.keys(t).forEach(function(r){(r|0)==r&&(r=r|0);let i=t[r];e[i]=r}),e}Xf.tagClass={0:"universal",1:"application",2:"context",3:"private"};Xf.tagClassByName=EA(Xf.tagClass);Xf.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};Xf.tagByName=EA(Xf.tag)});var Tp=P((mre,CA)=>{"use strict";g();var nQ=gt(),Bn=gh().Buffer,MA=xh(),Rp=wh();function SA(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new qi,this.tree._init(t.body)}CA.exports=SA;SA.prototype.encode=function(e,r){return this.tree._encode(e,r).join()};function qi(t){MA.call(this,"der",t)}nQ(qi,MA);qi.prototype._encodeComposite=function(e,r,i,n){let a=fQ(e,r,i,this.reporter);if(n.length<128){let m=Bn.alloc(2);return m[0]=a,m[1]=n.length,this._createEncoderBuffer([m,n])}let o=1;for(let m=n.length;m>=256;m>>=8)o++;let c=Bn.alloc(1+1+o);c[0]=a,c[1]=128|o;for(let m=1+o,M=n.length;M>0;m--,M>>=8)c[m]=M&255;return this._createEncoderBuffer([c,n])};qi.prototype._encodeStr=function(e,r){if(r==="bitstr")return this._createEncoderBuffer([e.unused|0,e.data]);if(r==="bmpstr"){let i=Bn.alloc(e.length*2);for(let n=0;n=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,e[0]*40+e[1])}let n=0;for(let c=0;c=128;m>>=7)n++}let a=Bn.alloc(n),o=a.length-1;for(let c=e.length-1;c>=0;c--){let m=e[c];for(a[o--]=m&127;(m>>=7)>0;)a[o--]=128|m&127}return this._createEncoderBuffer(a)};function vi(t){return t<10?"0"+t:t}qi.prototype._encodeTime=function(e,r){let i,n=new Date(e);return r==="gentime"?i=[vi(n.getUTCFullYear()),vi(n.getUTCMonth()+1),vi(n.getUTCDate()),vi(n.getUTCHours()),vi(n.getUTCMinutes()),vi(n.getUTCSeconds()),"Z"].join(""):r==="utctime"?i=[vi(n.getUTCFullYear()%100),vi(n.getUTCMonth()+1),vi(n.getUTCDate()),vi(n.getUTCHours()),vi(n.getUTCMinutes()),vi(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+r+" time is not supported yet"),this._encodeStr(i,"octstr")};qi.prototype._encodeNull=function(){return this._createEncoderBuffer("")};qi.prototype._encodeInt=function(e,r){if(typeof e=="string"){if(!r)return this.reporter.error("String int or enum given, but no values map");if(!r.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=r[e]}if(typeof e!="number"&&!Bn.isBuffer(e)){let a=e.toArray();!e.sign&&a[0]&128&&a.unshift(0),e=Bn.from(a)}if(Bn.isBuffer(e)){let a=e.length;e.length===0&&a++;let o=Bn.alloc(a);return e.copy(o),e.length===0&&(o[0]=0),this._createEncoderBuffer(o)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let i=1;for(let a=e;a>=256;a>>=8)i++;let n=new Array(i);for(let a=n.length-1;a>=0;a--)n[a]=e&255,e>>=8;return n[0]&128&&n.unshift(0),this._createEncoderBuffer(Bn.from(n))};qi.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)};qi.prototype._use=function(e,r){return typeof e=="function"&&(e=e(r)),e._getEncoder("der").tree};qi.prototype._skipDefault=function(e,r,i){let n=this._baseState,a;if(n.default===null)return!1;let o=e.join();if(n.defaultBuffer===void 0&&(n.defaultBuffer=this._encodeValue(n.default,r,i).join()),o.length!==n.defaultBuffer.length)return!1;for(a=0;a=31?i.error("Multi-octet tag encoding unsupported"):(e||(n|=32),n|=Rp.tagClassByName[r||"universal"]<<6,n)}});var qA=P((wre,BA)=>{"use strict";g();var aQ=gt(),Op=Tp();function Dp(t){Op.call(this,t),this.enc="pem"}aQ(Dp,Op);BA.exports=Dp;Dp.prototype.encode=function(e,r){let n=Op.prototype.encode.call(this,e).toString("base64"),a=["-----BEGIN "+r.label+"-----"];for(let o=0;o{"use strict";g();var RA=TA;RA.der=Tp();RA.pem=qA()});var kp=P((Ere,FA)=>{"use strict";g();var oQ=gt(),sQ=sr(),OA=Wa().DecoderBuffer,PA=xh(),DA=wh();function UA(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new Yr,this.tree._init(t.body)}FA.exports=UA;UA.prototype.decode=function(e,r){return OA.isDecoderBuffer(e)||(e=new OA(e,r)),this.tree._decode(e,r)};function Yr(t){PA.call(this,"der",t)}oQ(Yr,PA);Yr.prototype._peekTag=function(e,r,i){if(e.isEmpty())return!1;let n=e.save(),a=Up(e,'Failed to peek tag: "'+r+'"');return e.isError(a)?a:(e.restore(n),a.tag===r||a.tagStr===r||a.tagStr+"of"===r||i)};Yr.prototype._decodeTag=function(e,r,i){let n=Up(e,'Failed to decode tag of "'+r+'"');if(e.isError(n))return n;let a=kA(e,n.primitive,'Failed to get length of "'+r+'"');if(e.isError(a))return a;if(!i&&n.tag!==r&&n.tagStr!==r&&n.tagStr+"of"!==r)return e.error('Failed to match tag: "'+r+'"');if(n.primitive||a!==null)return e.skip(a,'Failed to match body of: "'+r+'"');let o=e.save(),c=this._skipUntilEnd(e,'Failed to skip indefinite length body: "'+this.tag+'"');return e.isError(c)?c:(a=e.offset-o.offset,e.restore(o),e.skip(a,'Failed to match body of: "'+r+'"'))};Yr.prototype._skipUntilEnd=function(e,r){for(;;){let i=Up(e,r);if(e.isError(i))return i;let n=kA(e,i.primitive,r);if(e.isError(n))return n;let a;if(i.primitive||n!==null?a=e.skip(n):a=this._skipUntilEnd(e,r),e.isError(a))return a;if(i.tagStr==="end")break}};Yr.prototype._decodeList=function(e,r,i,n){let a=[];for(;!e.isEmpty();){let o=this._peekTag(e,"end");if(e.isError(o))return o;let c=i.decode(e,"der",n);if(e.isError(c)&&o)break;a.push(c)}return a};Yr.prototype._decodeStr=function(e,r){if(r==="bitstr"){let i=e.readUInt8();return e.isError(i)?i:{unused:i,data:e.raw()}}else if(r==="bmpstr"){let i=e.raw();if(i.length%2===1)return e.error("Decoding of string type: bmpstr length mismatch");let n="";for(let a=0;a>6],n=(r&32)===0;if((r&31)===31){let o=r;for(r=0;(o&128)===128;){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=o&127}}else r&=31;let a=DA.tag[r];return{cls:i,primitive:n,tag:r,tagStr:a}}function kA(t,e,r){let i=t.readUInt8(r);if(t.isError(i))return i;if(!e&&i===128)return null;if((i&128)===0)return i;let n=i&127;if(n>4)return t.error("length octect is too long");i=0;for(let a=0;a{"use strict";g();var uQ=gt(),hQ=gh().Buffer,Fp=kp();function Lp(t){Fp.call(this,t),this.enc="pem"}uQ(Lp,Fp);LA.exports=Lp;Lp.prototype.decode=function(e,r){let i=e.toString().split(/[\r\n]+/g),n=r.label.toUpperCase(),a=/^-----(BEGIN|END) ([^-]+)-----$/,o=-1,c=-1;for(let B=0;B{"use strict";g();var QA=KA;QA.der=kp();QA.pem=NA()});var HA=P(jA=>{"use strict";g();var cQ=Pp(),dQ=Np(),lQ=gt(),pQ=jA;pQ.define=function(e,r){return new Ja(e,r)};function Ja(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}Ja.prototype._createNamed=function(e){let r=this.name;function i(n){this._initNamed(n,r)}return lQ(i,e),i.prototype._initNamed=function(a,o){e.call(this,a,o)},new i(this)};Ja.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(dQ[e])),this.decoders[e]};Ja.prototype.decode=function(e,r,i){return this._getDecoder(r).decode(e,i)};Ja.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(cQ[e])),this.encoders[e]};Ja.prototype.encode=function(e,r,i){return this._getEncoder(r).encode(e,i)}});var GA=P(zA=>{"use strict";g();var Ah=zA;Ah.Reporter=yh().Reporter;Ah.DecoderBuffer=Wa().DecoderBuffer;Ah.EncoderBuffer=Wa().EncoderBuffer;Ah.Node=xh()});var $A=P(VA=>{"use strict";g();var YA=VA;YA._reverse=function(e){let r={};return Object.keys(e).forEach(function(i){(i|0)==i&&(i=i|0);let n=e[i];r[n]=i}),r};YA.der=wh()});var Qp=P(WA=>{"use strict";g();var Xa=WA;Xa.bignum=sr();Xa.define=HA().define;Xa.base=GA();Xa.constants=$A();Xa.decoders=Np();Xa.encoders=Pp()});var e9=P((Lre,ZA)=>{"use strict";g();var Ri=Qp(),JA=Ri.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),vQ=Ri.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),Kp=Ri.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),bQ=Ri.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(Kp),this.key("subjectPublicKey").bitstr())}),gQ=Ri.define("RelativeDistinguishedName",function(){this.setof(vQ)}),yQ=Ri.define("RDNSequence",function(){this.seqof(gQ)}),XA=Ri.define("Name",function(){this.choice({rdnSequence:this.use(yQ)})}),mQ=Ri.define("Validity",function(){this.seq().obj(this.key("notBefore").use(JA),this.key("notAfter").use(JA))}),xQ=Ri.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),wQ=Ri.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(Kp),this.key("issuer").use(XA),this.key("validity").use(mQ),this.key("subject").use(XA),this.key("subjectPublicKeyInfo").use(bQ),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(xQ).optional())}),AQ=Ri.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(wQ),this.key("signatureAlgorithm").use(Kp),this.key("signatureValue").bitstr())});ZA.exports=AQ});var r9=P(Oi=>{"use strict";g();var Ti=Qp();Oi.certificate=e9();var _Q=Ti.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});Oi.RSAPrivateKey=_Q;var IQ=Ti.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});Oi.RSAPublicKey=IQ;var EQ=Ti.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(t9),this.key("subjectPublicKey").bitstr())});Oi.PublicKey=EQ;var t9=Ti.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),MQ=Ti.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(t9),this.key("subjectPrivateKey").octstr())});Oi.PrivateKey=MQ;var SQ=Ti.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});Oi.EncryptedPrivateKey=SQ;var CQ=Ti.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});Oi.DSAPrivateKey=CQ;Oi.DSAparam=Ti.define("DSAparam",function(){this.int()});var BQ=Ti.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(qQ),this.key("publicKey").optional().explicit(1).bitstr())});Oi.ECPrivateKey=BQ;var qQ=Ti.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});Oi.signature=Ti.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})});var i9=P((jre,RQ)=>{RQ.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}});var f9=P((Hre,n9)=>{g();var TQ=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,OQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,DQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,PQ=ys(),UQ=Vu(),_h=vt().Buffer;n9.exports=function(t,e){var r=t.toString(),i=r.match(TQ),n;if(i){var o="aes"+i[1],c=_h.from(i[2],"hex"),m=_h.from(i[3].replace(/[\r\n]/g,""),"base64"),M=PQ(e,c.slice(0,8),parseInt(i[1],10)).key,B=[],R=UQ.createDecipheriv(o,M,c);B.push(R.update(m)),B.push(R.final()),n=_h.concat(B)}else{var a=r.match(DQ);n=_h.from(a[2].replace(/[\r\n]/g,""),"base64")}var F=r.match(OQ)[1];return{tag:F,data:n}}});var Ss=P((Gre,o9)=>{g();var Nr=r9(),kQ=i9(),FQ=f9(),LQ=Vu(),NQ=B1(),jp=vt().Buffer;o9.exports=a9;function a9(t){var e;typeof t=="object"&&!jp.isBuffer(t)&&(e=t.passphrase,t=t.key),typeof t=="string"&&(t=jp.from(t));var r=FQ(t,e),i=r.tag,n=r.data,a,o;switch(i){case"CERTIFICATE":o=Nr.certificate.decode(n,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(o||(o=Nr.PublicKey.decode(n,"der")),a=o.algorithm.algorithm.join("."),a){case"1.2.840.113549.1.1.1":return Nr.RSAPublicKey.decode(o.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return o.subjectPrivateKey=o.subjectPublicKey,{type:"ec",data:o};case"1.2.840.10040.4.1":return o.algorithm.params.pub_key=Nr.DSAparam.decode(o.subjectPublicKey.data,"der"),{type:"dsa",data:o.algorithm.params};default:throw new Error("unknown key id "+a)}case"ENCRYPTED PRIVATE KEY":n=Nr.EncryptedPrivateKey.decode(n,"der"),n=QQ(n,e);case"PRIVATE KEY":switch(o=Nr.PrivateKey.decode(n,"der"),a=o.algorithm.algorithm.join("."),a){case"1.2.840.113549.1.1.1":return Nr.RSAPrivateKey.decode(o.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:o.algorithm.curve,privateKey:Nr.ECPrivateKey.decode(o.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return o.algorithm.params.priv_key=Nr.DSAparam.decode(o.subjectPrivateKey,"der"),{type:"dsa",params:o.algorithm.params};default:throw new Error("unknown key id "+a)}case"RSA PUBLIC KEY":return Nr.RSAPublicKey.decode(n,"der");case"RSA PRIVATE KEY":return Nr.RSAPrivateKey.decode(n,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:Nr.DSAPrivateKey.decode(n,"der")};case"EC PRIVATE KEY":return n=Nr.ECPrivateKey.decode(n,"der"),{curve:n.parameters.value,privateKey:n.privateKey};default:throw new Error("unknown key type "+i)}}a9.signature=Nr.signature;function QQ(t,e){var r=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),n=kQ[t.algorithm.decrypt.cipher.algo.join(".")],a=t.algorithm.decrypt.cipher.iv,o=t.subjectPrivateKey,c=parseInt(n.split("-")[1],10)/8,m=NQ.pbkdf2Sync(e,r,i,c,"sha1"),M=LQ.createDecipheriv(n,m,a),B=[];return B.push(M.update(o)),B.push(M.final()),jp.concat(B)}});var Hp=P((Vre,KQ)=>{KQ.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}});var h9=P(($re,Eh)=>{g();var Cr=vt().Buffer,Zf=m1(),jQ=Zu(),HQ=Ms().ec,Ih=Bp(),zQ=Ss(),GQ=Hp();function YQ(t,e,r,i,n){var a=zQ(e);if(a.curve){if(i!=="ecdsa"&&i!=="ecdsa/rsa")throw new Error("wrong private key type");return VQ(t,a)}else if(a.type==="dsa"){if(i!=="dsa")throw new Error("wrong private key type");return $Q(t,a,r)}else if(i!=="rsa"&&i!=="ecdsa/rsa")throw new Error("wrong private key type");t=Cr.concat([n,t]);for(var o=a.modulus.byteLength(),c=[0,1];t.length+c.length+10&&r.ishrn(i),r}function JQ(t,e){t=zp(t,e),t=t.mod(e);var r=Cr.from(t.toArray());if(r.length{g();var Gp=vt().Buffer,Cs=Bp(),ZQ=Ms().ec,d9=Ss(),eK=Hp();function tK(t,e,r,i,n){var a=d9(r);if(a.type==="ec"){if(i!=="ecdsa"&&i!=="ecdsa/rsa")throw new Error("wrong public key type");return rK(t,e,a)}else if(a.type==="dsa"){if(i!=="dsa")throw new Error("wrong public key type");return iK(t,e,a)}else if(i!=="rsa"&&i!=="ecdsa/rsa")throw new Error("wrong public key type");e=Gp.concat([n,e]);for(var o=a.modulus.byteLength(),c=[1],m=0;e.length+c.length+2=e)throw new Error("invalid sig")}l9.exports=tK});var x9=P((Zre,m9)=>{g();var Mh=vt().Buffer,g9=Ma(),Sh=h1(),y9=gt(),nK=h9(),fK=p9(),ea=x1();Object.keys(ea).forEach(function(t){ea[t].id=Mh.from(ea[t].id,"hex"),ea[t.toLowerCase()]=ea[t]});function Bs(t){Sh.Writable.call(this);var e=ea[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=g9(e.hash),this._tag=e.id,this._signType=e.sign}y9(Bs,Sh.Writable);Bs.prototype._write=function(e,r,i){this._hash.update(e),i()};Bs.prototype.update=function(e,r){return typeof e=="string"&&(e=Mh.from(e,r)),this._hash.update(e),this};Bs.prototype.sign=function(e,r){this.end();var i=this._hash.digest(),n=nK(i,e,this._hashType,this._signType,this._tag);return r?n.toString(r):n};function qs(t){Sh.Writable.call(this);var e=ea[t];if(!e)throw new Error("Unknown message digest");this._hash=g9(e.hash),this._tag=e.id,this._signType=e.sign}y9(qs,Sh.Writable);qs.prototype._write=function(e,r,i){this._hash.update(e),i()};qs.prototype.update=function(e,r){return typeof e=="string"&&(e=Mh.from(e,r)),this._hash.update(e),this};qs.prototype.verify=function(e,r,i){typeof r=="string"&&(r=Mh.from(r,i)),this.end();var n=this._hash.digest();return fK(r,n,e,this._signType,this._tag)};function v9(t){return new Bs(t)}function b9(t){return new qs(t)}m9.exports={Sign:v9,Verify:b9,createSign:v9,createVerify:b9}});var A9=P((tie,w9)=>{g();var aK=Ms(),oK=sr();w9.exports=function(e){return new ta(e)};var Vr={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};Vr.p224=Vr.secp224r1;Vr.p256=Vr.secp256r1=Vr.prime256v1;Vr.p192=Vr.secp192r1=Vr.prime192v1;Vr.p384=Vr.secp384r1;Vr.p521=Vr.secp521r1;function ta(t){this.curveType=Vr[t],this.curveType||(this.curveType={name:t}),this.curve=new aK.ec(this.curveType.name),this.keys=void 0}ta.prototype.generateKeys=function(t,e){return this.keys=this.curve.genKeyPair(),this.getPublicKey(t,e)};ta.prototype.computeSecret=function(t,e,r){e=e||"utf8",U.isBuffer(t)||(t=new U(t,e));var i=this.curve.keyFromPublic(t).getPublic(),n=i.mul(this.keys.getPrivate()).getX();return Yp(n,r,this.curveType.byteLength)};ta.prototype.getPublicKey=function(t,e){var r=this.keys.getPublic(e==="compressed",!0);return e==="hybrid"&&(r[r.length-1]%2?r[0]=7:r[0]=6),Yp(r,t)};ta.prototype.getPrivateKey=function(t){return Yp(this.keys.getPrivate(),t)};ta.prototype.setPublicKey=function(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this.keys._importPublic(t),this};ta.prototype.setPrivateKey=function(t,e){e=e||"utf8",U.isBuffer(t)||(t=new U(t,e));var r=new oK(t);return r=r.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(r),this};function Yp(t,e,r){Array.isArray(t)||(t=t.toArray());var i=new U(t);if(r&&i.length{g();var sK=Ma(),Vp=vt().Buffer;_9.exports=function(t,e){for(var r=Vp.alloc(0),i=0,n;r.length{g();I9.exports=function(e,r){for(var i=e.length,n=-1;++n{g();var E9=sr(),hK=vt().Buffer;function cK(t,e){return hK.from(t.toRed(E9.mont(e.modulus)).redPow(new E9(e.publicExponent)).fromRed().toArray())}M9.exports=cK});var q9=P((uie,B9)=>{g();var dK=Ss(),Xp=qf(),lK=Ma(),S9=$p(),C9=Wp(),Zp=sr(),pK=Jp(),vK=Zu(),Di=vt().Buffer;B9.exports=function(e,r,i){var n;e.padding?n=e.padding:i?n=1:n=4;var a=dK(e),o;if(n===4)o=bK(a,r);else if(n===1)o=gK(a,r,i);else if(n===3){if(o=new Zp(r),o.cmp(a.modulus)>=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return i?vK(o,a):pK(o,a)};function bK(t,e){var r=t.modulus.byteLength(),i=e.length,n=lK("sha1").update(Di.alloc(0)).digest(),a=n.length,o=2*a;if(i>r-o-2)throw new Error("message too long");var c=Di.alloc(r-i-o-2),m=r-a-1,M=Xp(a),B=C9(Di.concat([n,c,Di.alloc(1,1),e],m),S9(M,m)),R=C9(M,S9(B,a));return new Zp(Di.concat([Di.alloc(1),R,B],r))}function gK(t,e,r){var i=e.length,n=t.modulus.byteLength();if(i>n-11)throw new Error("message too long");var a;return r?a=Di.alloc(n-i-3,255):a=yK(n-i-3),new Zp(Di.concat([Di.from([0,r?1:2]),a,Di.alloc(1),e],n))}function yK(t){for(var e=Di.allocUnsafe(t),r=0,i=Xp(t*2),n=0,a;r{g();var mK=Ss(),R9=$p(),T9=Wp(),O9=sr(),xK=Zu(),wK=Ma(),AK=Jp(),Rs=vt().Buffer;D9.exports=function(e,r,i){var n;e.padding?n=e.padding:i?n=1:n=4;var a=mK(e),o=a.modulus.byteLength();if(r.length>o||new O9(r).cmp(a.modulus)>=0)throw new Error("decryption error");var c;i?c=AK(new O9(r),a):c=xK(r,a);var m=Rs.alloc(o-c.length);if(c=Rs.concat([m,c],o),n===4)return _K(a,c);if(n===1)return IK(a,c,i);if(n===3)return c;throw new Error("unknown padding")};function _K(t,e){var r=t.modulus.byteLength(),i=wK("sha1").update(Rs.alloc(0)).digest(),n=i.length;if(e[0]!==0)throw new Error("decryption error");var a=e.slice(1,n+1),o=e.slice(n+1),c=T9(a,R9(o,n)),m=T9(o,R9(c,r-n-1));if(EK(i,m.slice(0,n)))throw new Error("decryption error");for(var M=n;m[M]===0;)M++;if(m[M++]!==1)throw new Error("decryption error");return m.slice(M)}function IK(t,e,r){for(var i=e.slice(0,2),n=2,a=0;e[n++]!==0;)if(n>=e.length){a++;break}var o=e.slice(2,n-1);if((i.toString("hex")!=="0002"&&!r||i.toString("hex")!=="0001"&&r)&&a++,o.length<8&&a++,a)throw new Error("decryption error");return e.slice(n)}function EK(t,e){t=Rs.from(t),e=Rs.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));for(var n=-1;++n{g();ra.publicEncrypt=q9();ra.privateDecrypt=P9();ra.privateEncrypt=function(e,r){return ra.publicEncrypt(e,r,!0)};ra.publicDecrypt=function(e,r){return ra.privateDecrypt(e,r,!0)}});var G9=P(Ts=>{"use strict";g();function k9(){throw new Error(`secure random number generation not supported by this browser -use chrome, FireFox or Internet Explorer 11`)}var L9=vt(),F9=qf(),N9=L9.Buffer,Q9=L9.kMaxLength,ev=global.crypto||global.msCrypto,K9=Math.pow(2,32)-1;function j9(t,e){if(typeof t!="number"||t!==t)throw new TypeError("offset must be a number");if(t>K9||t<0)throw new TypeError("offset must be a uint32");if(t>Q9||t>e)throw new RangeError("offset out of range")}function H9(t,e,r){if(typeof t!="number"||t!==t)throw new TypeError("size must be a number");if(t>K9||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>Q9)throw new RangeError("buffer too small")}ev&&ev.getRandomValues||!process.browser?(Ts.randomFill=MK,Ts.randomFillSync=SK):(Ts.randomFill=k9,Ts.randomFillSync=k9);function MK(t,e,r,i){if(!N9.isBuffer(t)&&!(t instanceof global.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof e=="function")i=e,e=0,r=t.length;else if(typeof r=="function")i=r,r=t.length-e;else if(typeof i!="function")throw new TypeError('"cb" argument must be a function');return j9(e,t.length),H9(r,e,t.length),z9(t,e,r,i)}function z9(t,e,r,i){if(process.browser){var n=t.buffer,a=new Uint8Array(n,e,r);if(ev.getRandomValues(a),i){process.nextTick(function(){i(null,t)});return}return t}if(i){F9(r,function(c,m){if(c)return i(c);m.copy(t,e),i(null,t)});return}var o=F9(r);return o.copy(t,e),t}function SK(t,e,r){if(typeof e>"u"&&(e=0),!N9.isBuffer(t)&&!(t instanceof global.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return j9(e,t.length),r===void 0&&(r=t.length-e),H9(r,e,t.length),z9(t,e,r)}});var tv=P(yt=>{"use strict";g();yt.randomBytes=yt.rng=yt.pseudoRandomBytes=yt.prng=qf();yt.createHash=yt.Hash=Ma();yt.createHmac=yt.Hmac=m1();var CK=hx(),BK=Object.keys(CK),qK=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(BK);yt.getHashes=function(){return qK};var Y9=B1();yt.pbkdf2=Y9.pbkdf2;yt.pbkdf2Sync=Y9.pbkdf2Sync;var en=Tw();yt.Cipher=en.Cipher;yt.createCipher=en.createCipher;yt.Cipheriv=en.Cipheriv;yt.createCipheriv=en.createCipheriv;yt.Decipher=en.Decipher;yt.createDecipher=en.createDecipher;yt.Decipheriv=en.Decipheriv;yt.createDecipheriv=en.createDecipheriv;yt.getCiphers=en.getCiphers;yt.listCiphers=en.listCiphers;var Os=zw();yt.DiffieHellmanGroup=Os.DiffieHellmanGroup;yt.createDiffieHellmanGroup=Os.createDiffieHellmanGroup;yt.getDiffieHellman=Os.getDiffieHellman;yt.createDiffieHellman=Os.createDiffieHellman;yt.DiffieHellman=Os.DiffieHellman;var Ch=x9();yt.createSign=Ch.createSign;yt.Sign=Ch.Sign;yt.createVerify=Ch.createVerify;yt.Verify=Ch.Verify;yt.createECDH=A9();var Bh=U9();yt.publicEncrypt=Bh.publicEncrypt;yt.privateEncrypt=Bh.privateEncrypt;yt.publicDecrypt=Bh.publicDecrypt;yt.privateDecrypt=Bh.privateDecrypt;var V9=G9();yt.randomFill=V9.randomFill;yt.randomFillSync=V9.randomFillSync;yt.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join(` -`))};yt.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}});var $9=P((mie,qh)=>{g();(function(){"use strict";var t="input is invalid type",e="finalize already called",r=typeof window=="object",i=r?window:{};i.JS_SHA3_NO_WINDOW&&(r=!1);var n=!r&&typeof self=="object",a=!i.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;a?i=global:n&&(i=self);var o=!i.JS_SHA3_NO_COMMON_JS&&typeof qh=="object"&&qh.exports,c=typeof define=="function"&&define.amd,m=!i.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",M="0123456789abcdef".split(""),B=[31,7936,2031616,520093696],R=[4,1024,262144,67108864],F=[1,256,65536,16777216],N=[6,1536,393216,100663296],G=[0,8,16,24],Z=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],ie=[224,256,384,512],fe=[128,256],ce=["hex","buffer","arrayBuffer","array","digest"],ge={128:168,256:136};(i.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(S){return Object.prototype.toString.call(S)==="[object Array]"}),m&&(i.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(S){return typeof S=="object"&&S.buffer&&S.buffer.constructor===ArrayBuffer});for(var ve=function(S,L,Q){return function(z){return new u(S,L,S).update(z)[Q]()}},Ke=function(S,L,Q){return function(z,J){return new u(S,L,J).update(z)[Q]()}},be=function(S,L,Q){return function(z,J,he,W){return f["cshake"+S].update(z,J,he,W)[Q]()}},pe=function(S,L,Q){return function(z,J,he,W){return f["kmac"+S].update(z,J,he,W)[Q]()}},Ne=function(S,L,Q,z){for(var J=0;J>5,this.byteCount=this.blockCount<<2,this.outputBlocks=Q>>5,this.extraBytes=(Q&31)>>3;for(var z=0;z<50;++z)this.s[z]=0}u.prototype.update=function(S){if(this.finalized)throw new Error(e);var L,Q=typeof S;if(Q!=="string"){if(Q==="object"){if(S===null)throw new Error(t);if(m&&S.constructor===ArrayBuffer)S=new Uint8Array(S);else if(!Array.isArray(S)&&(!m||!ArrayBuffer.isView(S)))throw new Error(t)}else throw new Error(t);L=!0}for(var z=this.blocks,J=this.byteCount,he=S.length,W=this.blockCount,te=0,Qe=this.s,ne,ye;te>2]|=S[te]<>2]|=ye<>2]|=(192|ye>>6)<>2]|=(128|ye&63)<=57344?(z[ne>>2]|=(224|ye>>12)<>2]|=(128|ye>>6&63)<>2]|=(128|ye&63)<>2]|=(240|ye>>18)<>2]|=(128|ye>>12&63)<>2]|=(128|ye>>6&63)<>2]|=(128|ye&63)<=J){for(this.start=ne-J,this.block=z[W],ne=0;ne>8,Q=S&255;Q>0;)J.unshift(Q),S=S>>8,Q=S&255,++z;return L?J.push(z):J.unshift(z),this.update(J),J.length},u.prototype.encodeString=function(S){var L,Q=typeof S;if(Q!=="string"){if(Q==="object"){if(S===null)throw new Error(t);if(m&&S.constructor===ArrayBuffer)S=new Uint8Array(S);else if(!Array.isArray(S)&&(!m||!ArrayBuffer.isView(S)))throw new Error(t)}else throw new Error(t);L=!0}var z=0,J=S.length;if(L)z=J;else for(var he=0;he=57344?z+=3:(W=65536+((W&1023)<<10|S.charCodeAt(++he)&1023),z+=4)}return z+=this.encode(z*8),this.update(S),z},u.prototype.bytepad=function(S,L){for(var Q=this.encode(L),z=0;z>2]|=this.padding[L&3],this.lastByteIndex===this.byteCount)for(S[0]=S[Q],L=1;L>4&15]+M[te&15]+M[te>>12&15]+M[te>>8&15]+M[te>>20&15]+M[te>>16&15]+M[te>>28&15]+M[te>>24&15];he%S===0&&(j(L),J=0)}return z&&(te=L[J],W+=M[te>>4&15]+M[te&15],z>1&&(W+=M[te>>12&15]+M[te>>8&15]),z>2&&(W+=M[te>>20&15]+M[te>>16&15])),W},u.prototype.arrayBuffer=function(){this.finalize();var S=this.blockCount,L=this.s,Q=this.outputBlocks,z=this.extraBytes,J=0,he=0,W=this.outputBits>>3,te;z?te=new ArrayBuffer(Q+1<<2):te=new ArrayBuffer(W);for(var Qe=new Uint32Array(te);he>8&255,W[te+2]=Qe>>16&255,W[te+3]=Qe>>24&255;he%S===0&&j(L)}return z&&(te=he<<2,Qe=L[J],W[te]=Qe&255,z>1&&(W[te+1]=Qe>>8&255),z>2&&(W[te+2]=Qe>>16&255)),W};function I(S,L,Q){u.call(this,S,L,Q)}I.prototype=new u,I.prototype.finalize=function(){return this.encode(this.outputBits,!0),u.prototype.finalize.call(this)};var j=function(S){var L,Q,z,J,he,W,te,Qe,ne,ye,Rt,Pe,We,It,Ue,tt,St,Re,rt,Et,Oe,it,Tt,ke,nt,Ct,Te,Ze,wt,Be,et,_t,qe,ft,Ot,Fe,ut,lt,Se,Xe,Bt,De,at,Ut,_e,ot,C,T,O,w,D,H,Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge;for(z=0;z<48;z+=2)J=S[0]^S[10]^S[20]^S[30]^S[40],he=S[1]^S[11]^S[21]^S[31]^S[41],W=S[2]^S[12]^S[22]^S[32]^S[42],te=S[3]^S[13]^S[23]^S[33]^S[43],Qe=S[4]^S[14]^S[24]^S[34]^S[44],ne=S[5]^S[15]^S[25]^S[35]^S[45],ye=S[6]^S[16]^S[26]^S[36]^S[46],Rt=S[7]^S[17]^S[27]^S[37]^S[47],Pe=S[8]^S[18]^S[28]^S[38]^S[48],We=S[9]^S[19]^S[29]^S[39]^S[49],L=Pe^(W<<1|te>>>31),Q=We^(te<<1|W>>>31),S[0]^=L,S[1]^=Q,S[10]^=L,S[11]^=Q,S[20]^=L,S[21]^=Q,S[30]^=L,S[31]^=Q,S[40]^=L,S[41]^=Q,L=J^(Qe<<1|ne>>>31),Q=he^(ne<<1|Qe>>>31),S[2]^=L,S[3]^=Q,S[12]^=L,S[13]^=Q,S[22]^=L,S[23]^=Q,S[32]^=L,S[33]^=Q,S[42]^=L,S[43]^=Q,L=W^(ye<<1|Rt>>>31),Q=te^(Rt<<1|ye>>>31),S[4]^=L,S[5]^=Q,S[14]^=L,S[15]^=Q,S[24]^=L,S[25]^=Q,S[34]^=L,S[35]^=Q,S[44]^=L,S[45]^=Q,L=Qe^(Pe<<1|We>>>31),Q=ne^(We<<1|Pe>>>31),S[6]^=L,S[7]^=Q,S[16]^=L,S[17]^=Q,S[26]^=L,S[27]^=Q,S[36]^=L,S[37]^=Q,S[46]^=L,S[47]^=Q,L=ye^(J<<1|he>>>31),Q=Rt^(he<<1|J>>>31),S[8]^=L,S[9]^=Q,S[18]^=L,S[19]^=Q,S[28]^=L,S[29]^=Q,S[38]^=L,S[39]^=Q,S[48]^=L,S[49]^=Q,It=S[0],Ue=S[1],ot=S[11]<<4|S[10]>>>28,C=S[10]<<4|S[11]>>>28,Ze=S[20]<<3|S[21]>>>29,wt=S[21]<<3|S[20]>>>29,je=S[31]<<9|S[30]>>>23,ze=S[30]<<9|S[31]>>>23,De=S[40]<<18|S[41]>>>14,at=S[41]<<18|S[40]>>>14,ft=S[2]<<1|S[3]>>>31,Ot=S[3]<<1|S[2]>>>31,tt=S[13]<<12|S[12]>>>20,St=S[12]<<12|S[13]>>>20,T=S[22]<<10|S[23]>>>22,O=S[23]<<10|S[22]>>>22,Be=S[33]<<13|S[32]>>>19,et=S[32]<<13|S[33]>>>19,Ye=S[42]<<2|S[43]>>>30,Ge=S[43]<<2|S[42]>>>30,V=S[5]<<30|S[4]>>>2,ee=S[4]<<30|S[5]>>>2,Fe=S[14]<<6|S[15]>>>26,ut=S[15]<<6|S[14]>>>26,Re=S[25]<<11|S[24]>>>21,rt=S[24]<<11|S[25]>>>21,w=S[34]<<15|S[35]>>>17,D=S[35]<<15|S[34]>>>17,_t=S[45]<<29|S[44]>>>3,qe=S[44]<<29|S[45]>>>3,ke=S[6]<<28|S[7]>>>4,nt=S[7]<<28|S[6]>>>4,Ee=S[17]<<23|S[16]>>>9,ae=S[16]<<23|S[17]>>>9,lt=S[26]<<25|S[27]>>>7,Se=S[27]<<25|S[26]>>>7,Et=S[36]<<21|S[37]>>>11,Oe=S[37]<<21|S[36]>>>11,H=S[47]<<24|S[46]>>>8,Y=S[46]<<24|S[47]>>>8,Ut=S[8]<<27|S[9]>>>5,_e=S[9]<<27|S[8]>>>5,Ct=S[18]<<20|S[19]>>>12,Te=S[19]<<20|S[18]>>>12,xe=S[29]<<7|S[28]>>>25,we=S[28]<<7|S[29]>>>25,Xe=S[38]<<8|S[39]>>>24,Bt=S[39]<<8|S[38]>>>24,it=S[48]<<14|S[49]>>>18,Tt=S[49]<<14|S[48]>>>18,S[0]=It^~tt&Re,S[1]=Ue^~St&rt,S[10]=ke^~Ct&Ze,S[11]=nt^~Te&wt,S[20]=ft^~Fe<,S[21]=Ot^~ut&Se,S[30]=Ut^~ot&T,S[31]=_e^~C&O,S[40]=V^~Ee&xe,S[41]=ee^~ae&we,S[2]=tt^~Re&Et,S[3]=St^~rt&Oe,S[12]=Ct^~Ze&Be,S[13]=Te^~wt&et,S[22]=Fe^~lt&Xe,S[23]=ut^~Se&Bt,S[32]=ot^~T&w,S[33]=C^~O&D,S[42]=Ee^~xe&je,S[43]=ae^~we&ze,S[4]=Re^~Et&it,S[5]=rt^~Oe&Tt,S[14]=Ze^~Be&_t,S[15]=wt^~et&qe,S[24]=lt^~Xe&De,S[25]=Se^~Bt&at,S[34]=T^~w&H,S[35]=O^~D&Y,S[44]=xe^~je&Ye,S[45]=we^~ze&Ge,S[6]=Et^~it&It,S[7]=Oe^~Tt&Ue,S[16]=Be^~_t&ke,S[17]=et^~qe&nt,S[26]=Xe^~De&ft,S[27]=Bt^~at&Ot,S[36]=w^~H&Ut,S[37]=D^~Y&_e,S[46]=je^~Ye&V,S[47]=ze^~Ge&ee,S[8]=it^~It&tt,S[9]=Tt^~Ue&St,S[18]=_t^~ke&Ct,S[19]=qe^~nt&Te,S[28]=De^~ft&Fe,S[29]=at^~Ot&ut,S[38]=H^~Ut&ot,S[39]=Y^~_e&C,S[48]=Ye^~V&Ee,S[49]=Ge^~ee&ae,S[0]^=Z[z],S[1]^=Z[z+1]};if(o)qh.exports=f;else{for(v=0;v{g();qn.notEqual=TK;qn.notOk=OK;qn.equal=RK;qn.ok=qn;W9.exports=qn;function RK(t,e,r){qn(t==e,r)}function TK(t,e,r){qn(t!=e,r)}function OK(t,e){qn(!t,e)}function qn(t,e){if(!t)throw new Error(e||"AssertionError")}});var X9=P((_ie,J9)=>{g();J9.exports=iv;iv.supported=typeof WebAssembly<"u";function iv(t){if(!iv.supported)return null;var e=t&&t.imports,r=DK("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0r+68tzwhC0Lx7fT4paf9p6V/IQxC0YWa7/rPlIfRACENQp/Y+dnCkdqCm38hDkLr+obav7X2wR8hD0L5wvibkaOz8NsAIRAgACkDACERIABBCGopAwAhEiAAQRBqKQMAIRMgAEEYaikDACEUIABBIGopAwAhFSAAQShqKQMAIRYgAEEwaikDACEXIABBOGopAwAhGCAAQcAAaikDACEZIABByABqKQMAIRogAEHQAGopAwAhGyAAQdgAaikDACEcIABB4ABqKQMAIR0gAEHoAGopAwAhHiAAQfAAaikDACEfIABB+ABqKQMAISAgDSAAQcABaikDAIUhDSAPIABB0AFqKQMAhSEPIAEgBSARfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBN8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAUfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgFXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBZ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAXfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBl8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAafHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgG3x8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBx8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAdfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggHnx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIB98fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAgfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgH3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBt8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAVfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBp8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAgfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggHnx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBd8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiASfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHXx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBF8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByATfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggHHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBh8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAWfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFHx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBx8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAZfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgHXx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBF8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAWfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgE3x8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIICB8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAefHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgG3x8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIB98fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAUfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgF3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBh8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCASfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgGnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBV8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAYfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgGnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBR8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiASfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgHnx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIB18fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAcfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggH3x8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBN8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAXfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgFnx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBt8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAVfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggEXx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFICB8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAZfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgGnx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBF8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAWfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGHx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBN8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAVfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggG3x8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIICB8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAffHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgEnx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBx8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAdfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggF3x8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBl8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAUfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgHnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBN8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAdfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgF3x8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBt8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByARfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHHx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBl8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAUfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgFXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIB58fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAYfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgFnx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIICB8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAffHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgEnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBp8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAdfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgFnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBJ8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAgfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgH3x8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIB58fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAVfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggG3x8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBF8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAYfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgF3x8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBR8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAafHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggE3x8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBl8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAcfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgHnx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBx8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAYfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgH3x8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIB18fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByASfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggFHx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBp8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAWfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgEXx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHICB8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAVfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggGXx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBd8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSATfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgG3x8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBd8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAgfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgH3x8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBp8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAcfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgFHx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBF8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAZfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgHXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBN8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAefHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgGHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBJ8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAVfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgG3x8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBZ8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAbfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgE3x8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBl8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAVfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgGHx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBd8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCASfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggFnx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGICB8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAcfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgGnx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIB98fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAUfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggHXx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIB58fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSARfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgEXx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBJ8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiATfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgFHx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBV8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAWfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggF3x8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBh8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAZfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgGnx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBt8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAcfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggHXx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIB58fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAffHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgIHx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIB98fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAbfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgFXx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBl8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAafHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgIHx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIB58fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAXfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgEnx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIB18fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByARfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgE3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBx8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAYfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgFnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBR8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFICEgISkDACABIAmFhTcDACAiICIpAwAgAiAKhYU3AwAgIyAjKQMAIAMgC4WFNwMAICQgJCkDACAEIAyFhTcDACAlICUpAwAgBSANhYU3AwAgJiAmKQMAIAYgDoWFNwMAICcgJykDACAHIA+FhTcDACAoICgpAwAgCCAQhYU3AwAL"),i=null,n={buffer:r,memory:null,exports:null,realloc:a,onload:o};return o(function(){}),n;function a(m){n.exports.memory.grow(Math.ceil(Math.abs(m-n.memory.length)/65536)),n.memory=new Uint8Array(n.exports.memory.buffer)}function o(m){if(n.exports)return m();if(i){i.then(m.bind(null,null)).catch(m);return}try{if(t&&t.async)throw new Error("async");c({instance:new WebAssembly.Instance(new WebAssembly.Module(r),e)})}catch{i=WebAssembly.instantiate(r,e).then(c)}o(m)}function c(m){n.exports=m.instance.exports,n.memory=n.exports.memory&&n.exports.memory.buffer&&new Uint8Array(n.exports.memory.buffer)}}function DK(t){return typeof atob=="function"?new Uint8Array(atob(t).split("").map(PK)):new(fn()).Buffer(t,"base64")}function PK(t){return t.charCodeAt(0)}});var f_=P((Sie,rn)=>{g();var tn=rv(),Vt=X9()(),Rn=64,Rh=[];rn.exports=bi;var Z9=rn.exports.BYTES_MIN=16,e_=rn.exports.BYTES_MAX=64,Eie=rn.exports.BYTES=32,t_=rn.exports.KEYBYTES_MIN=16,r_=rn.exports.KEYBYTES_MAX=64,Mie=rn.exports.KEYBYTES=32,i_=rn.exports.SALTBYTES=16,n_=rn.exports.PERSONALBYTES=16;function bi(t,e,r,i,n){if(!(this instanceof bi))return new bi(t,e,r,i,n);if(!(Vt&&Vt.exports))throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),n!==!0&&(tn(t>=Z9,"digestLength must be at least "+Z9+", was given "+t),tn(t<=e_,"digestLength must be at most "+e_+", was given "+t),e!=null&&tn(e.length>=t_,"key must be at least "+t_+", was given "+e.length),e!=null&&tn(e.length<=r_,"key must be at least "+r_+", was given "+e.length),r!=null&&tn(r.length===i_,"salt must be exactly "+i_+", was given "+r.length),i!=null&&tn(i.length===n_,"personal must be exactly "+n_+", was given "+i.length)),Rh.length||(Rh.push(Rn),Rn+=216),this.digestLength=t,this.finalized=!1,this.pointer=Rh.pop(),Vt.memory.fill(0,0,64),Vt.memory[0]=this.digestLength,Vt.memory[1]=e?e.length:0,Vt.memory[2]=1,Vt.memory[3]=1,r&&Vt.memory.set(r,32),i&&Vt.memory.set(i,48),this.pointer+216>Vt.memory.length&&Vt.realloc(this.pointer+216),Vt.exports.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),Vt.memory.fill(0,Rn,Rn+e.length),Vt.memory[this.pointer+200]=128)}bi.prototype.update=function(t){return tn(this.finalized===!1,"Hash instance finalized"),tn(t,"input must be TypedArray or Buffer"),Rn+t.length>Vt.memory.length&&Vt.realloc(Rn+t.length),Vt.memory.set(t,Rn),Vt.exports.blake2b_update(this.pointer,Rn,Rn+t.length),this};bi.prototype.digest=function(t){if(tn(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,Rh.push(this.pointer),Vt.exports.blake2b_final(this.pointer),!t||t==="binary")return Vt.memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(t==="hex")return kK(Vt.memory,this.pointer+128,this.digestLength);tn(t.length>=this.digestLength,"input must be TypedArray or Buffer");for(var e=0;e{g();var uf=rv(),Ps=f_();function Th(t,e,r){var i=t[e]+t[r],n=t[e+1]+t[r+1];i>=4294967296&&n++,t[e]=i,t[e+1]=n}function a_(t,e,r,i){var n=t[e]+r;r<0&&(n+=4294967296);var a=t[e+1]+i;n>=4294967296&&a++,t[e]=n,t[e+1]=a}function l_(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function of(t,e,r,i,n,a){var o=Ds[n],c=Ds[n+1],m=Ds[a],M=Ds[a+1];Th(dt,t,e),a_(dt,t,o,c);var B=dt[i]^dt[t],R=dt[i+1]^dt[t+1];dt[i]=R,dt[i+1]=B,Th(dt,r,i),B=dt[e]^dt[r],R=dt[e+1]^dt[r+1],dt[e]=B>>>24^R<<8,dt[e+1]=R>>>24^B<<8,Th(dt,t,e),a_(dt,t,m,M),B=dt[i]^dt[t],R=dt[i+1]^dt[t+1],dt[i]=B>>>16^R<<16,dt[i+1]=R>>>16^B<<16,Th(dt,r,i),B=dt[e]^dt[r],R=dt[e+1]^dt[r+1],dt[e]=R>>>31^B<<1,dt[e+1]=B>>>31^R<<1}var p_=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),LK=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],Br=new Uint8Array(LK.map(function(t){return t*2})),dt=new Uint32Array(32),Ds=new Uint32Array(32);function v_(t,e){var r=0;for(r=0;r<16;r++)dt[r]=t.h[r],dt[r+16]=p_[r];for(dt[24]=dt[24]^t.t,dt[25]=dt[25]^t.t/4294967296,e&&(dt[28]=~dt[28],dt[29]=~dt[29]),r=0;r<32;r++)Ds[r]=l_(t.b,4*r);for(r=0;r<12;r++)of(0,8,16,24,Br[r*16+0],Br[r*16+1]),of(2,10,18,26,Br[r*16+2],Br[r*16+3]),of(4,12,20,28,Br[r*16+4],Br[r*16+5]),of(6,14,22,30,Br[r*16+6],Br[r*16+7]),of(0,10,20,30,Br[r*16+8],Br[r*16+9]),of(2,12,22,24,Br[r*16+10],Br[r*16+11]),of(4,14,16,26,Br[r*16+12],Br[r*16+13]),of(6,8,18,28,Br[r*16+14],Br[r*16+15]);for(r=0;r<16;r++)t.h[r]=t.h[r]^dt[r]^dt[r+16]}var sf=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Za(t,e,r,i){sf.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=t,sf[0]=t,e&&(sf[1]=e.length),sf[2]=1,sf[3]=1,r&&sf.set(r,32),i&&sf.set(i,48);for(var n=0;n<16;n++)this.h[n]=p_[n]^l_(sf,n*4);e&&(b_(this,e),this.c=128)}Za.prototype.update=function(t){return uf(t!=null,"input must be Uint8Array or Buffer"),b_(this,t),this};Za.prototype.digest=function(t){var e=!t||t==="binary"||t==="hex"?new Uint8Array(this.outlen):t;return uf(e.length>=this.outlen,"out must have at least outlen bytes of space"),NK(this,e),t==="hex"?QK(e):e};Za.prototype.final=Za.prototype.digest;Za.ready=function(t){Ps.ready(function(){t()})};function b_(t,e){for(var r=0;r>2]>>8*(r&3);return e}function QK(t){for(var e="",r=0;r=o_,"outlen must be at least "+o_+", was given "+e),uf(e<=s_,"outlen must be at most "+s_+", was given "+e),r!=null&&uf(r.length>=u_,"key must be at least "+u_+", was given "+r.length),r!=null&&uf(r.length<=h_,"key must be at most "+h_+", was given "+r.length),i!=null&&uf(i.length===c_,"salt must be exactly "+c_+", was given "+i.length),n!=null&&uf(n.length===d_,"personal must be exactly "+d_+", was given "+n.length)),new g_(e,r,i,n)};Qr.exports.ready=function(t){Ps.ready(function(){t()})};Qr.exports.WASM_SUPPORTED=Ps.SUPPORTED;Qr.exports.WASM_LOADED=!1;var o_=Qr.exports.BYTES_MIN=16,s_=Qr.exports.BYTES_MAX=64,Bie=Qr.exports.BYTES=32,u_=Qr.exports.KEYBYTES_MIN=16,h_=Qr.exports.KEYBYTES_MAX=64,qie=Qr.exports.KEYBYTES=32,c_=Qr.exports.SALTBYTES=16,d_=Qr.exports.PERSONALBYTES=16;Ps.ready(function(t){t||(Qr.exports.WASM_LOADED=!0,g_=Ps)})});var T_=P(Tn=>{"use strict";g();Object.defineProperty(Tn,"__esModule",{value:!0});var Oie=new Uint8Array(16),M_=new Uint8Array(32);M_[0]=9;function He(t){var e,r=new Float64Array(16);if(t)for(e=0;e>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r&255,t[e+4]=i>>24&255,t[e+5]=i>>16&255,t[e+6]=i>>8&255,t[e+7]=i&255}function YK(t,e,r,i,n){var a,o=0;for(a=0;a>>8)-1}function S_(t,e,r,i){return YK(t,e,r,i,32)}function hf(t,e){var r;for(r=0;r<16;r++)t[r]=e[r]|0}function nv(t){var e,r,i=1;for(e=0;e<16;e++)r=t[e]+i+65535,i=Math.floor(r/65536),t[e]=r-i*65536;t[0]+=i-1+37*(i-1)}function eo(t,e,r){for(var i,n=~(r-1),a=0;a<16;a++)i=n&(t[a]^e[a]),t[a]^=i,e[a]^=i}function ro(t,e){var r,i,n,a=He(),o=He();for(r=0;r<16;r++)o[r]=e[r];for(nv(o),nv(o),nv(o),i=0;i<2;i++){for(a[0]=o[0]-65517,r=1;r<15;r++)a[r]=o[r]-65535-(a[r-1]>>16&1),a[r-1]&=65535;a[15]=o[15]-32767-(a[14]>>16&1),n=a[15]>>16&1,a[14]&=65535,eo(o,a,1-n)}for(r=0;r<16;r++)t[2*r]=o[r]&255,t[2*r+1]=o[r]>>8}function A_(t,e){var r=new Uint8Array(32),i=new Uint8Array(32);return ro(r,t),ro(i,e),S_(r,0,i,0)}function C_(t){var e=new Uint8Array(32);return ro(e,t),e[0]&1}function uv(t,e){var r;for(r=0;r<16;r++)t[r]=e[2*r]+(e[2*r+1]<<8);t[15]&=32767}function Pi(t,e,r){for(var i=0;i<16;i++)t[i]=e[i]+r[i]}function ki(t,e,r){for(var i=0;i<16;i++)t[i]=e[i]-r[i]}function qt(t,e,r){var i,n,a=0,o=0,c=0,m=0,M=0,B=0,R=0,F=0,N=0,G=0,Z=0,ie=0,fe=0,ce=0,ge=0,ve=0,Ke=0,be=0,pe=0,Ne=0,k=0,d=0,b=0,E=0,p=0,f=0,s=0,v=0,l=0,h=0,A=0,q=r[0],_=r[1],u=r[2],I=r[3],j=r[4],S=r[5],L=r[6],Q=r[7],z=r[8],J=r[9],he=r[10],W=r[11],te=r[12],Qe=r[13],ne=r[14],ye=r[15];i=e[0],a+=i*q,o+=i*_,c+=i*u,m+=i*I,M+=i*j,B+=i*S,R+=i*L,F+=i*Q,N+=i*z,G+=i*J,Z+=i*he,ie+=i*W,fe+=i*te,ce+=i*Qe,ge+=i*ne,ve+=i*ye,i=e[1],o+=i*q,c+=i*_,m+=i*u,M+=i*I,B+=i*j,R+=i*S,F+=i*L,N+=i*Q,G+=i*z,Z+=i*J,ie+=i*he,fe+=i*W,ce+=i*te,ge+=i*Qe,ve+=i*ne,Ke+=i*ye,i=e[2],c+=i*q,m+=i*_,M+=i*u,B+=i*I,R+=i*j,F+=i*S,N+=i*L,G+=i*Q,Z+=i*z,ie+=i*J,fe+=i*he,ce+=i*W,ge+=i*te,ve+=i*Qe,Ke+=i*ne,be+=i*ye,i=e[3],m+=i*q,M+=i*_,B+=i*u,R+=i*I,F+=i*j,N+=i*S,G+=i*L,Z+=i*Q,ie+=i*z,fe+=i*J,ce+=i*he,ge+=i*W,ve+=i*te,Ke+=i*Qe,be+=i*ne,pe+=i*ye,i=e[4],M+=i*q,B+=i*_,R+=i*u,F+=i*I,N+=i*j,G+=i*S,Z+=i*L,ie+=i*Q,fe+=i*z,ce+=i*J,ge+=i*he,ve+=i*W,Ke+=i*te,be+=i*Qe,pe+=i*ne,Ne+=i*ye,i=e[5],B+=i*q,R+=i*_,F+=i*u,N+=i*I,G+=i*j,Z+=i*S,ie+=i*L,fe+=i*Q,ce+=i*z,ge+=i*J,ve+=i*he,Ke+=i*W,be+=i*te,pe+=i*Qe,Ne+=i*ne,k+=i*ye,i=e[6],R+=i*q,F+=i*_,N+=i*u,G+=i*I,Z+=i*j,ie+=i*S,fe+=i*L,ce+=i*Q,ge+=i*z,ve+=i*J,Ke+=i*he,be+=i*W,pe+=i*te,Ne+=i*Qe,k+=i*ne,d+=i*ye,i=e[7],F+=i*q,N+=i*_,G+=i*u,Z+=i*I,ie+=i*j,fe+=i*S,ce+=i*L,ge+=i*Q,ve+=i*z,Ke+=i*J,be+=i*he,pe+=i*W,Ne+=i*te,k+=i*Qe,d+=i*ne,b+=i*ye,i=e[8],N+=i*q,G+=i*_,Z+=i*u,ie+=i*I,fe+=i*j,ce+=i*S,ge+=i*L,ve+=i*Q,Ke+=i*z,be+=i*J,pe+=i*he,Ne+=i*W,k+=i*te,d+=i*Qe,b+=i*ne,E+=i*ye,i=e[9],G+=i*q,Z+=i*_,ie+=i*u,fe+=i*I,ce+=i*j,ge+=i*S,ve+=i*L,Ke+=i*Q,be+=i*z,pe+=i*J,Ne+=i*he,k+=i*W,d+=i*te,b+=i*Qe,E+=i*ne,p+=i*ye,i=e[10],Z+=i*q,ie+=i*_,fe+=i*u,ce+=i*I,ge+=i*j,ve+=i*S,Ke+=i*L,be+=i*Q,pe+=i*z,Ne+=i*J,k+=i*he,d+=i*W,b+=i*te,E+=i*Qe,p+=i*ne,f+=i*ye,i=e[11],ie+=i*q,fe+=i*_,ce+=i*u,ge+=i*I,ve+=i*j,Ke+=i*S,be+=i*L,pe+=i*Q,Ne+=i*z,k+=i*J,d+=i*he,b+=i*W,E+=i*te,p+=i*Qe,f+=i*ne,s+=i*ye,i=e[12],fe+=i*q,ce+=i*_,ge+=i*u,ve+=i*I,Ke+=i*j,be+=i*S,pe+=i*L,Ne+=i*Q,k+=i*z,d+=i*J,b+=i*he,E+=i*W,p+=i*te,f+=i*Qe,s+=i*ne,v+=i*ye,i=e[13],ce+=i*q,ge+=i*_,ve+=i*u,Ke+=i*I,be+=i*j,pe+=i*S,Ne+=i*L,k+=i*Q,d+=i*z,b+=i*J,E+=i*he,p+=i*W,f+=i*te,s+=i*Qe,v+=i*ne,l+=i*ye,i=e[14],ge+=i*q,ve+=i*_,Ke+=i*u,be+=i*I,pe+=i*j,Ne+=i*S,k+=i*L,d+=i*Q,b+=i*z,E+=i*J,p+=i*he,f+=i*W,s+=i*te,v+=i*Qe,l+=i*ne,h+=i*ye,i=e[15],ve+=i*q,Ke+=i*_,be+=i*u,pe+=i*I,Ne+=i*j,k+=i*S,d+=i*L,b+=i*Q,E+=i*z,p+=i*J,f+=i*he,s+=i*W,v+=i*te,l+=i*Qe,h+=i*ne,A+=i*ye,a+=38*Ke,o+=38*be,c+=38*pe,m+=38*Ne,M+=38*k,B+=38*d,R+=38*b,F+=38*E,N+=38*p,G+=38*f,Z+=38*s,ie+=38*v,fe+=38*l,ce+=38*h,ge+=38*A,n=1,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=m+n+65535,n=Math.floor(i/65536),m=i-n*65536,i=M+n+65535,n=Math.floor(i/65536),M=i-n*65536,i=B+n+65535,n=Math.floor(i/65536),B=i-n*65536,i=R+n+65535,n=Math.floor(i/65536),R=i-n*65536,i=F+n+65535,n=Math.floor(i/65536),F=i-n*65536,i=N+n+65535,n=Math.floor(i/65536),N=i-n*65536,i=G+n+65535,n=Math.floor(i/65536),G=i-n*65536,i=Z+n+65535,n=Math.floor(i/65536),Z=i-n*65536,i=ie+n+65535,n=Math.floor(i/65536),ie=i-n*65536,i=fe+n+65535,n=Math.floor(i/65536),fe=i-n*65536,i=ce+n+65535,n=Math.floor(i/65536),ce=i-n*65536,i=ge+n+65535,n=Math.floor(i/65536),ge=i-n*65536,i=ve+n+65535,n=Math.floor(i/65536),ve=i-n*65536,a+=n-1+37*(n-1),n=1,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=m+n+65535,n=Math.floor(i/65536),m=i-n*65536,i=M+n+65535,n=Math.floor(i/65536),M=i-n*65536,i=B+n+65535,n=Math.floor(i/65536),B=i-n*65536,i=R+n+65535,n=Math.floor(i/65536),R=i-n*65536,i=F+n+65535,n=Math.floor(i/65536),F=i-n*65536,i=N+n+65535,n=Math.floor(i/65536),N=i-n*65536,i=G+n+65535,n=Math.floor(i/65536),G=i-n*65536,i=Z+n+65535,n=Math.floor(i/65536),Z=i-n*65536,i=ie+n+65535,n=Math.floor(i/65536),ie=i-n*65536,i=fe+n+65535,n=Math.floor(i/65536),fe=i-n*65536,i=ce+n+65535,n=Math.floor(i/65536),ce=i-n*65536,i=ge+n+65535,n=Math.floor(i/65536),ge=i-n*65536,i=ve+n+65535,n=Math.floor(i/65536),ve=i-n*65536,a+=n-1+37*(n-1),t[0]=a,t[1]=o,t[2]=c,t[3]=m,t[4]=M,t[5]=B,t[6]=R,t[7]=F,t[8]=N,t[9]=G,t[10]=Z,t[11]=ie,t[12]=fe,t[13]=ce,t[14]=ge,t[15]=ve}function Ui(t,e){qt(t,e,e)}function hv(t,e){var r=He(),i;for(i=0;i<16;i++)r[i]=e[i];for(i=253;i>=0;i--)Ui(r,r),i!==2&&i!==4&&qt(r,r,e);for(i=0;i<16;i++)t[i]=r[i]}function VK(t,e){var r=He(),i;for(i=0;i<16;i++)r[i]=e[i];for(i=250;i>=0;i--)Ui(r,r),i!==1&&qt(r,r,e);for(i=0;i<16;i++)t[i]=r[i]}function B_(t,e,r){var i=new Uint8Array(32),n=new Float64Array(80),a,o,c=He(),m=He(),M=He(),B=He(),R=He(),F=He();for(o=0;o<31;o++)i[o]=e[o];for(i[31]=e[31]&127|64,i[0]&=248,uv(n,r),o=0;o<16;o++)m[o]=n[o],B[o]=c[o]=M[o]=0;for(c[0]=B[0]=1,o=254;o>=0;--o)a=i[o>>>3]>>>(o&7)&1,eo(c,m,a),eo(M,B,a),Pi(R,c,M),ki(c,c,M),Pi(M,m,B),ki(m,m,B),Ui(B,R),Ui(F,c),qt(c,M,c),qt(M,m,R),Pi(R,c,M),ki(c,c,M),Ui(m,c),ki(M,B,F),qt(c,M,jK),Pi(c,c,B),qt(M,M,c),qt(c,B,F),qt(B,m,n),Ui(m,R),eo(c,m,a),eo(M,B,a);for(o=0;o<16;o++)n[o+16]=c[o],n[o+32]=M[o],n[o+48]=m[o],n[o+64]=B[o];var N=n.subarray(32),G=n.subarray(16);return hv(N,N),qt(G,G,N),ro(t,G),0}function $K(t,e){return B_(t,e,M_)}var __=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function I_(t,e,r,i){for(var n=new Int32Array(16),a=new Int32Array(16),o,c,m,M,B,R,F,N,G,Z,ie,fe,ce,ge,ve,Ke,be,pe,Ne,k,d,b,E,p,f,s,v=t[0],l=t[1],h=t[2],A=t[3],q=t[4],_=t[5],u=t[6],I=t[7],j=e[0],S=e[1],L=e[2],Q=e[3],z=e[4],J=e[5],he=e[6],W=e[7],te=0;i>=128;){for(Ne=0;Ne<16;Ne++)k=8*Ne+te,n[Ne]=r[k+0]<<24|r[k+1]<<16|r[k+2]<<8|r[k+3],a[Ne]=r[k+4]<<24|r[k+5]<<16|r[k+6]<<8|r[k+7];for(Ne=0;Ne<80;Ne++)if(o=v,c=l,m=h,M=A,B=q,R=_,F=u,N=I,G=j,Z=S,ie=L,fe=Q,ce=z,ge=J,ve=he,Ke=W,d=I,b=W,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=(q>>>14|z<<32-14)^(q>>>18|z<<32-18)^(z>>>41-32|q<<32-(41-32)),b=(z>>>14|q<<32-14)^(z>>>18|q<<32-18)^(q>>>41-32|z<<32-(41-32)),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=q&_^~q&u,b=z&J^~z&he,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=__[Ne*2],b=__[Ne*2+1],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=n[Ne%16],b=a[Ne%16],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,be=f&65535|s<<16,pe=E&65535|p<<16,d=be,b=pe,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=(v>>>28|j<<32-28)^(j>>>34-32|v<<32-(34-32))^(j>>>39-32|v<<32-(39-32)),b=(j>>>28|v<<32-28)^(v>>>34-32|j<<32-(34-32))^(v>>>39-32|j<<32-(39-32)),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=v&l^v&h^l&h,b=j&S^j&L^S&L,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,N=f&65535|s<<16,Ke=E&65535|p<<16,d=M,b=fe,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=be,b=pe,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,M=f&65535|s<<16,fe=E&65535|p<<16,l=o,h=c,A=m,q=M,_=B,u=R,I=F,v=N,S=G,L=Z,Q=ie,z=fe,J=ce,he=ge,W=ve,j=Ke,Ne%16===15)for(k=0;k<16;k++)d=n[k],b=a[k],E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=n[(k+9)%16],b=a[(k+9)%16],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,be=n[(k+1)%16],pe=a[(k+1)%16],d=(be>>>1|pe<<32-1)^(be>>>8|pe<<32-8)^be>>>7,b=(pe>>>1|be<<32-1)^(pe>>>8|be<<32-8)^(pe>>>7|be<<32-7),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,be=n[(k+14)%16],pe=a[(k+14)%16],d=(be>>>19|pe<<32-19)^(pe>>>61-32|be<<32-(61-32))^be>>>6,b=(pe>>>19|be<<32-19)^(be>>>61-32|pe<<32-(61-32))^(pe>>>6|be<<32-6),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,n[k]=f&65535|s<<16,a[k]=E&65535|p<<16;d=v,b=j,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[0],b=e[0],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[0]=v=f&65535|s<<16,e[0]=j=E&65535|p<<16,d=l,b=S,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[1],b=e[1],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[1]=l=f&65535|s<<16,e[1]=S=E&65535|p<<16,d=h,b=L,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[2],b=e[2],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[2]=h=f&65535|s<<16,e[2]=L=E&65535|p<<16,d=A,b=Q,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[3],b=e[3],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[3]=A=f&65535|s<<16,e[3]=Q=E&65535|p<<16,d=q,b=z,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[4],b=e[4],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[4]=q=f&65535|s<<16,e[4]=z=E&65535|p<<16,d=_,b=J,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[5],b=e[5],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[5]=_=f&65535|s<<16,e[5]=J=E&65535|p<<16,d=u,b=he,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[6],b=e[6],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[6]=u=f&65535|s<<16,e[6]=he=E&65535|p<<16,d=I,b=W,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[7],b=e[7],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[7]=I=f&65535|s<<16,e[7]=W=E&65535|p<<16,te+=128,i-=128}return i}function Us(t,e,r){var i=new Int32Array(8),n=new Int32Array(8),a=new Uint8Array(256),o,c=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,I_(i,n,e,r),r%=128,o=0;o=0;--n)i=r[n/8|0]>>(n&7)&1,E_(t,e,i),ov(e,t),ov(t,t),E_(t,e,i)}function Dh(t,e){var r=[He(),He(),He(),He()];hf(r[0],m_),hf(r[1],x_),hf(r[2],to),qt(r[3],m_,x_),q_(t,r,e)}var fv=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function cv(t,e){var r,i,n,a;for(i=63;i>=32;--i){for(r=0,n=i-32,a=i-12;n>8,e[n]-=r*256;e[n]+=r,e[i]=0}for(r=0,n=0;n<32;n++)e[n]+=r-(e[31]>>4)*fv[n],r=e[n]>>8,e[n]&=255;for(n=0;n<32;n++)e[n]-=r*fv[n];for(i=0;i<32;i++)e[i+1]+=e[i]>>8,t[i]=e[i]&255}function ks(t){var e=new Float64Array(64),r;for(r=0;r<64;r++)e[r]=t[r];for(r=0;r<64;r++)t[r]=0;cv(t,e)}function WK(t,e,r,i){var n=new Uint8Array(64),a=new Uint8Array(64),o,c,m=new Float64Array(64),M=[He(),He(),He(),He()];for(o=0;o>7&&ki(t[0],av,t[0]),qt(t[3],t[0],t[1]),0)}function ZK(t,e,r,i){var n,a,o=new Uint8Array(32),c=new Uint8Array(64),m=[He(),He(),He(),He()],M=[He(),He(),He(),He()];if(a=-1,r<64||XK(M,i))return-1;for(n=0;n=0}Tn.verify=fj;function aj(t){if(cf(t),t.length!==32)throw new Error("wrong seed length");for(var e=new Uint8Array(32),r=new Uint8Array(32),i=0;i<32;i++)e[i]=t[i];return $K(r,e),e[0]&=248,e[31]&=127,e[31]|=64,r[31]&=127,{public:r,private:e}}Tn.generateKeyPair=aj;Tn.default={}});var O_=P((Uie,Ph)=>{g();(function(t){"use strict";var e=function(C){var T,O=new Float64Array(16);if(C)for(T=0;T>24&255,C[T+1]=O>>16&255,C[T+2]=O>>8&255,C[T+3]=O&255,C[T+4]=w>>24&255,C[T+5]=w>>16&255,C[T+6]=w>>8&255,C[T+7]=w&255}function G(C,T,O,w,D){var H,Y=0;for(H=0;H>>8)-1}function Z(C,T,O,w){return G(C,T,O,w,16)}function ie(C,T,O,w){return G(C,T,O,w,32)}function fe(C,T,O,w){for(var D=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,H=O[0]&255|(O[1]&255)<<8|(O[2]&255)<<16|(O[3]&255)<<24,Y=O[4]&255|(O[5]&255)<<8|(O[6]&255)<<16|(O[7]&255)<<24,V=O[8]&255|(O[9]&255)<<8|(O[10]&255)<<16|(O[11]&255)<<24,ee=O[12]&255|(O[13]&255)<<8|(O[14]&255)<<16|(O[15]&255)<<24,Ee=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ae=T[0]&255|(T[1]&255)<<8|(T[2]&255)<<16|(T[3]&255)<<24,xe=T[4]&255|(T[5]&255)<<8|(T[6]&255)<<16|(T[7]&255)<<24,we=T[8]&255|(T[9]&255)<<8|(T[10]&255)<<16|(T[11]&255)<<24,je=T[12]&255|(T[13]&255)<<8|(T[14]&255)<<16|(T[15]&255)<<24,ze=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,Ye=O[16]&255|(O[17]&255)<<8|(O[18]&255)<<16|(O[19]&255)<<24,Ge=O[20]&255|(O[21]&255)<<8|(O[22]&255)<<16|(O[23]&255)<<24,Ve=O[24]&255|(O[25]&255)<<8|(O[26]&255)<<16|(O[27]&255)<<24,Je=O[28]&255|(O[29]&255)<<8|(O[30]&255)<<16|(O[31]&255)<<24,$e=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Ie=D,Le=H,Ae=Y,Me=V,Ce=ee,me=Ee,$=ae,X=xe,de=we,oe=je,se=ze,le=Ye,st=Ge,ht=Ve,pt=Je,ct=$e,K,mt=0;mt<20;mt+=2)K=Ie+st|0,Ce^=K<<7|K>>>32-7,K=Ce+Ie|0,de^=K<<9|K>>>32-9,K=de+Ce|0,st^=K<<13|K>>>32-13,K=st+de|0,Ie^=K<<18|K>>>32-18,K=me+Le|0,oe^=K<<7|K>>>32-7,K=oe+me|0,ht^=K<<9|K>>>32-9,K=ht+oe|0,Le^=K<<13|K>>>32-13,K=Le+ht|0,me^=K<<18|K>>>32-18,K=se+$|0,pt^=K<<7|K>>>32-7,K=pt+se|0,Ae^=K<<9|K>>>32-9,K=Ae+pt|0,$^=K<<13|K>>>32-13,K=$+Ae|0,se^=K<<18|K>>>32-18,K=ct+le|0,Me^=K<<7|K>>>32-7,K=Me+ct|0,X^=K<<9|K>>>32-9,K=X+Me|0,le^=K<<13|K>>>32-13,K=le+X|0,ct^=K<<18|K>>>32-18,K=Ie+Me|0,Le^=K<<7|K>>>32-7,K=Le+Ie|0,Ae^=K<<9|K>>>32-9,K=Ae+Le|0,Me^=K<<13|K>>>32-13,K=Me+Ae|0,Ie^=K<<18|K>>>32-18,K=me+Ce|0,$^=K<<7|K>>>32-7,K=$+me|0,X^=K<<9|K>>>32-9,K=X+$|0,Ce^=K<<13|K>>>32-13,K=Ce+X|0,me^=K<<18|K>>>32-18,K=se+oe|0,le^=K<<7|K>>>32-7,K=le+se|0,de^=K<<9|K>>>32-9,K=de+le|0,oe^=K<<13|K>>>32-13,K=oe+de|0,se^=K<<18|K>>>32-18,K=ct+pt|0,st^=K<<7|K>>>32-7,K=st+ct|0,ht^=K<<9|K>>>32-9,K=ht+st|0,pt^=K<<13|K>>>32-13,K=pt+ht|0,ct^=K<<18|K>>>32-18;Ie=Ie+D|0,Le=Le+H|0,Ae=Ae+Y|0,Me=Me+V|0,Ce=Ce+ee|0,me=me+Ee|0,$=$+ae|0,X=X+xe|0,de=de+we|0,oe=oe+je|0,se=se+ze|0,le=le+Ye|0,st=st+Ge|0,ht=ht+Ve|0,pt=pt+Je|0,ct=ct+$e|0,C[0]=Ie>>>0&255,C[1]=Ie>>>8&255,C[2]=Ie>>>16&255,C[3]=Ie>>>24&255,C[4]=Le>>>0&255,C[5]=Le>>>8&255,C[6]=Le>>>16&255,C[7]=Le>>>24&255,C[8]=Ae>>>0&255,C[9]=Ae>>>8&255,C[10]=Ae>>>16&255,C[11]=Ae>>>24&255,C[12]=Me>>>0&255,C[13]=Me>>>8&255,C[14]=Me>>>16&255,C[15]=Me>>>24&255,C[16]=Ce>>>0&255,C[17]=Ce>>>8&255,C[18]=Ce>>>16&255,C[19]=Ce>>>24&255,C[20]=me>>>0&255,C[21]=me>>>8&255,C[22]=me>>>16&255,C[23]=me>>>24&255,C[24]=$>>>0&255,C[25]=$>>>8&255,C[26]=$>>>16&255,C[27]=$>>>24&255,C[28]=X>>>0&255,C[29]=X>>>8&255,C[30]=X>>>16&255,C[31]=X>>>24&255,C[32]=de>>>0&255,C[33]=de>>>8&255,C[34]=de>>>16&255,C[35]=de>>>24&255,C[36]=oe>>>0&255,C[37]=oe>>>8&255,C[38]=oe>>>16&255,C[39]=oe>>>24&255,C[40]=se>>>0&255,C[41]=se>>>8&255,C[42]=se>>>16&255,C[43]=se>>>24&255,C[44]=le>>>0&255,C[45]=le>>>8&255,C[46]=le>>>16&255,C[47]=le>>>24&255,C[48]=st>>>0&255,C[49]=st>>>8&255,C[50]=st>>>16&255,C[51]=st>>>24&255,C[52]=ht>>>0&255,C[53]=ht>>>8&255,C[54]=ht>>>16&255,C[55]=ht>>>24&255,C[56]=pt>>>0&255,C[57]=pt>>>8&255,C[58]=pt>>>16&255,C[59]=pt>>>24&255,C[60]=ct>>>0&255,C[61]=ct>>>8&255,C[62]=ct>>>16&255,C[63]=ct>>>24&255}function ce(C,T,O,w){for(var D=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,H=O[0]&255|(O[1]&255)<<8|(O[2]&255)<<16|(O[3]&255)<<24,Y=O[4]&255|(O[5]&255)<<8|(O[6]&255)<<16|(O[7]&255)<<24,V=O[8]&255|(O[9]&255)<<8|(O[10]&255)<<16|(O[11]&255)<<24,ee=O[12]&255|(O[13]&255)<<8|(O[14]&255)<<16|(O[15]&255)<<24,Ee=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ae=T[0]&255|(T[1]&255)<<8|(T[2]&255)<<16|(T[3]&255)<<24,xe=T[4]&255|(T[5]&255)<<8|(T[6]&255)<<16|(T[7]&255)<<24,we=T[8]&255|(T[9]&255)<<8|(T[10]&255)<<16|(T[11]&255)<<24,je=T[12]&255|(T[13]&255)<<8|(T[14]&255)<<16|(T[15]&255)<<24,ze=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,Ye=O[16]&255|(O[17]&255)<<8|(O[18]&255)<<16|(O[19]&255)<<24,Ge=O[20]&255|(O[21]&255)<<8|(O[22]&255)<<16|(O[23]&255)<<24,Ve=O[24]&255|(O[25]&255)<<8|(O[26]&255)<<16|(O[27]&255)<<24,Je=O[28]&255|(O[29]&255)<<8|(O[30]&255)<<16|(O[31]&255)<<24,$e=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Ie=D,Le=H,Ae=Y,Me=V,Ce=ee,me=Ee,$=ae,X=xe,de=we,oe=je,se=ze,le=Ye,st=Ge,ht=Ve,pt=Je,ct=$e,K,mt=0;mt<20;mt+=2)K=Ie+st|0,Ce^=K<<7|K>>>32-7,K=Ce+Ie|0,de^=K<<9|K>>>32-9,K=de+Ce|0,st^=K<<13|K>>>32-13,K=st+de|0,Ie^=K<<18|K>>>32-18,K=me+Le|0,oe^=K<<7|K>>>32-7,K=oe+me|0,ht^=K<<9|K>>>32-9,K=ht+oe|0,Le^=K<<13|K>>>32-13,K=Le+ht|0,me^=K<<18|K>>>32-18,K=se+$|0,pt^=K<<7|K>>>32-7,K=pt+se|0,Ae^=K<<9|K>>>32-9,K=Ae+pt|0,$^=K<<13|K>>>32-13,K=$+Ae|0,se^=K<<18|K>>>32-18,K=ct+le|0,Me^=K<<7|K>>>32-7,K=Me+ct|0,X^=K<<9|K>>>32-9,K=X+Me|0,le^=K<<13|K>>>32-13,K=le+X|0,ct^=K<<18|K>>>32-18,K=Ie+Me|0,Le^=K<<7|K>>>32-7,K=Le+Ie|0,Ae^=K<<9|K>>>32-9,K=Ae+Le|0,Me^=K<<13|K>>>32-13,K=Me+Ae|0,Ie^=K<<18|K>>>32-18,K=me+Ce|0,$^=K<<7|K>>>32-7,K=$+me|0,X^=K<<9|K>>>32-9,K=X+$|0,Ce^=K<<13|K>>>32-13,K=Ce+X|0,me^=K<<18|K>>>32-18,K=se+oe|0,le^=K<<7|K>>>32-7,K=le+se|0,de^=K<<9|K>>>32-9,K=de+le|0,oe^=K<<13|K>>>32-13,K=oe+de|0,se^=K<<18|K>>>32-18,K=ct+pt|0,st^=K<<7|K>>>32-7,K=st+ct|0,ht^=K<<9|K>>>32-9,K=ht+st|0,pt^=K<<13|K>>>32-13,K=pt+ht|0,ct^=K<<18|K>>>32-18;C[0]=Ie>>>0&255,C[1]=Ie>>>8&255,C[2]=Ie>>>16&255,C[3]=Ie>>>24&255,C[4]=me>>>0&255,C[5]=me>>>8&255,C[6]=me>>>16&255,C[7]=me>>>24&255,C[8]=se>>>0&255,C[9]=se>>>8&255,C[10]=se>>>16&255,C[11]=se>>>24&255,C[12]=ct>>>0&255,C[13]=ct>>>8&255,C[14]=ct>>>16&255,C[15]=ct>>>24&255,C[16]=$>>>0&255,C[17]=$>>>8&255,C[18]=$>>>16&255,C[19]=$>>>24&255,C[20]=X>>>0&255,C[21]=X>>>8&255,C[22]=X>>>16&255,C[23]=X>>>24&255,C[24]=de>>>0&255,C[25]=de>>>8&255,C[26]=de>>>16&255,C[27]=de>>>24&255,C[28]=oe>>>0&255,C[29]=oe>>>8&255,C[30]=oe>>>16&255,C[31]=oe>>>24&255}function ge(C,T,O,w){fe(C,T,O,w)}function ve(C,T,O,w){ce(C,T,O,w)}var Ke=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function be(C,T,O,w,D,H,Y){var V=new Uint8Array(16),ee=new Uint8Array(64),Ee,ae;for(ae=0;ae<16;ae++)V[ae]=0;for(ae=0;ae<8;ae++)V[ae]=H[ae];for(;D>=64;){for(ge(ee,V,Y,Ke),ae=0;ae<64;ae++)C[T+ae]=O[w+ae]^ee[ae];for(Ee=1,ae=8;ae<16;ae++)Ee=Ee+(V[ae]&255)|0,V[ae]=Ee&255,Ee>>>=8;D-=64,T+=64,w+=64}if(D>0)for(ge(ee,V,Y,Ke),ae=0;ae=64;){for(ge(Y,H,D,Ke),ee=0;ee<64;ee++)C[T+ee]=Y[ee];for(V=1,ee=8;ee<16;ee++)V=V+(H[ee]&255)|0,H[ee]=V&255,V>>>=8;O-=64,T+=64}if(O>0)for(ge(Y,H,D,Ke),ee=0;ee>>13|O<<3)&8191,w=C[4]&255|(C[5]&255)<<8,this.r[2]=(O>>>10|w<<6)&7939,D=C[6]&255|(C[7]&255)<<8,this.r[3]=(w>>>7|D<<9)&8191,H=C[8]&255|(C[9]&255)<<8,this.r[4]=(D>>>4|H<<12)&255,this.r[5]=H>>>1&8190,Y=C[10]&255|(C[11]&255)<<8,this.r[6]=(H>>>14|Y<<2)&8191,V=C[12]&255|(C[13]&255)<<8,this.r[7]=(Y>>>11|V<<5)&8065,ee=C[14]&255|(C[15]&255)<<8,this.r[8]=(V>>>8|ee<<8)&8191,this.r[9]=ee>>>5&127,this.pad[0]=C[16]&255|(C[17]&255)<<8,this.pad[1]=C[18]&255|(C[19]&255)<<8,this.pad[2]=C[20]&255|(C[21]&255)<<8,this.pad[3]=C[22]&255|(C[23]&255)<<8,this.pad[4]=C[24]&255|(C[25]&255)<<8,this.pad[5]=C[26]&255|(C[27]&255)<<8,this.pad[6]=C[28]&255|(C[29]&255)<<8,this.pad[7]=C[30]&255|(C[31]&255)<<8};d.prototype.blocks=function(C,T,O){for(var w=this.fin?0:2048,D,H,Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge,Ve,Je,$e,Ie,Le,Ae,Me=this.h[0],Ce=this.h[1],me=this.h[2],$=this.h[3],X=this.h[4],de=this.h[5],oe=this.h[6],se=this.h[7],le=this.h[8],st=this.h[9],ht=this.r[0],pt=this.r[1],ct=this.r[2],K=this.r[3],mt=this.r[4],kt=this.r[5],Ft=this.r[6],bt=this.r[7],Dt=this.r[8],Pt=this.r[9];O>=16;)D=C[T+0]&255|(C[T+1]&255)<<8,Me+=D&8191,H=C[T+2]&255|(C[T+3]&255)<<8,Ce+=(D>>>13|H<<3)&8191,Y=C[T+4]&255|(C[T+5]&255)<<8,me+=(H>>>10|Y<<6)&8191,V=C[T+6]&255|(C[T+7]&255)<<8,$+=(Y>>>7|V<<9)&8191,ee=C[T+8]&255|(C[T+9]&255)<<8,X+=(V>>>4|ee<<12)&8191,de+=ee>>>1&8191,Ee=C[T+10]&255|(C[T+11]&255)<<8,oe+=(ee>>>14|Ee<<2)&8191,ae=C[T+12]&255|(C[T+13]&255)<<8,se+=(Ee>>>11|ae<<5)&8191,xe=C[T+14]&255|(C[T+15]&255)<<8,le+=(ae>>>8|xe<<8)&8191,st+=xe>>>5|w,we=0,je=we,je+=Me*ht,je+=Ce*(5*Pt),je+=me*(5*Dt),je+=$*(5*bt),je+=X*(5*Ft),we=je>>>13,je&=8191,je+=de*(5*kt),je+=oe*(5*mt),je+=se*(5*K),je+=le*(5*ct),je+=st*(5*pt),we+=je>>>13,je&=8191,ze=we,ze+=Me*pt,ze+=Ce*ht,ze+=me*(5*Pt),ze+=$*(5*Dt),ze+=X*(5*bt),we=ze>>>13,ze&=8191,ze+=de*(5*Ft),ze+=oe*(5*kt),ze+=se*(5*mt),ze+=le*(5*K),ze+=st*(5*ct),we+=ze>>>13,ze&=8191,Ye=we,Ye+=Me*ct,Ye+=Ce*pt,Ye+=me*ht,Ye+=$*(5*Pt),Ye+=X*(5*Dt),we=Ye>>>13,Ye&=8191,Ye+=de*(5*bt),Ye+=oe*(5*Ft),Ye+=se*(5*kt),Ye+=le*(5*mt),Ye+=st*(5*K),we+=Ye>>>13,Ye&=8191,Ge=we,Ge+=Me*K,Ge+=Ce*ct,Ge+=me*pt,Ge+=$*ht,Ge+=X*(5*Pt),we=Ge>>>13,Ge&=8191,Ge+=de*(5*Dt),Ge+=oe*(5*bt),Ge+=se*(5*Ft),Ge+=le*(5*kt),Ge+=st*(5*mt),we+=Ge>>>13,Ge&=8191,Ve=we,Ve+=Me*mt,Ve+=Ce*K,Ve+=me*ct,Ve+=$*pt,Ve+=X*ht,we=Ve>>>13,Ve&=8191,Ve+=de*(5*Pt),Ve+=oe*(5*Dt),Ve+=se*(5*bt),Ve+=le*(5*Ft),Ve+=st*(5*kt),we+=Ve>>>13,Ve&=8191,Je=we,Je+=Me*kt,Je+=Ce*mt,Je+=me*K,Je+=$*ct,Je+=X*pt,we=Je>>>13,Je&=8191,Je+=de*ht,Je+=oe*(5*Pt),Je+=se*(5*Dt),Je+=le*(5*bt),Je+=st*(5*Ft),we+=Je>>>13,Je&=8191,$e=we,$e+=Me*Ft,$e+=Ce*kt,$e+=me*mt,$e+=$*K,$e+=X*ct,we=$e>>>13,$e&=8191,$e+=de*pt,$e+=oe*ht,$e+=se*(5*Pt),$e+=le*(5*Dt),$e+=st*(5*bt),we+=$e>>>13,$e&=8191,Ie=we,Ie+=Me*bt,Ie+=Ce*Ft,Ie+=me*kt,Ie+=$*mt,Ie+=X*K,we=Ie>>>13,Ie&=8191,Ie+=de*ct,Ie+=oe*pt,Ie+=se*ht,Ie+=le*(5*Pt),Ie+=st*(5*Dt),we+=Ie>>>13,Ie&=8191,Le=we,Le+=Me*Dt,Le+=Ce*bt,Le+=me*Ft,Le+=$*kt,Le+=X*mt,we=Le>>>13,Le&=8191,Le+=de*K,Le+=oe*ct,Le+=se*pt,Le+=le*ht,Le+=st*(5*Pt),we+=Le>>>13,Le&=8191,Ae=we,Ae+=Me*Pt,Ae+=Ce*Dt,Ae+=me*bt,Ae+=$*Ft,Ae+=X*kt,we=Ae>>>13,Ae&=8191,Ae+=de*mt,Ae+=oe*K,Ae+=se*ct,Ae+=le*pt,Ae+=st*ht,we+=Ae>>>13,Ae&=8191,we=(we<<2)+we|0,we=we+je|0,je=we&8191,we=we>>>13,ze+=we,Me=je,Ce=ze,me=Ye,$=Ge,X=Ve,de=Je,oe=$e,se=Ie,le=Le,st=Ae,T+=16,O-=16;this.h[0]=Me,this.h[1]=Ce,this.h[2]=me,this.h[3]=$,this.h[4]=X,this.h[5]=de,this.h[6]=oe,this.h[7]=se,this.h[8]=le,this.h[9]=st},d.prototype.finish=function(C,T){var O=new Uint16Array(10),w,D,H,Y;if(this.leftover){for(Y=this.leftover,this.buffer[Y++]=1;Y<16;Y++)this.buffer[Y]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(w=this.h[1]>>>13,this.h[1]&=8191,Y=2;Y<10;Y++)this.h[Y]+=w,w=this.h[Y]>>>13,this.h[Y]&=8191;for(this.h[0]+=w*5,w=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=w,w=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=w,O[0]=this.h[0]+5,w=O[0]>>>13,O[0]&=8191,Y=1;Y<10;Y++)O[Y]=this.h[Y]+w,w=O[Y]>>>13,O[Y]&=8191;for(O[9]-=1<<13,D=(w^1)-1,Y=0;Y<10;Y++)O[Y]&=D;for(D=~D,Y=0;Y<10;Y++)this.h[Y]=this.h[Y]&D|O[Y];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,H=this.h[0]+this.pad[0],this.h[0]=H&65535,Y=1;Y<8;Y++)H=(this.h[Y]+this.pad[Y]|0)+(H>>>16)|0,this.h[Y]=H&65535;C[T+0]=this.h[0]>>>0&255,C[T+1]=this.h[0]>>>8&255,C[T+2]=this.h[1]>>>0&255,C[T+3]=this.h[1]>>>8&255,C[T+4]=this.h[2]>>>0&255,C[T+5]=this.h[2]>>>8&255,C[T+6]=this.h[3]>>>0&255,C[T+7]=this.h[3]>>>8&255,C[T+8]=this.h[4]>>>0&255,C[T+9]=this.h[4]>>>8&255,C[T+10]=this.h[5]>>>0&255,C[T+11]=this.h[5]>>>8&255,C[T+12]=this.h[6]>>>0&255,C[T+13]=this.h[6]>>>8&255,C[T+14]=this.h[7]>>>0&255,C[T+15]=this.h[7]>>>8&255},d.prototype.update=function(C,T,O){var w,D;if(this.leftover){for(D=16-this.leftover,D>O&&(D=O),w=0;w=16&&(D=O-O%16,this.blocks(C,T,D),T+=D,O-=D),O){for(w=0;w>16&1),H[O-1]&=65535;H[15]=Y[15]-32767-(H[14]>>16&1),D=H[15]>>16&1,H[14]&=65535,l(Y,H,1-D)}for(O=0;O<16;O++)C[2*O]=Y[O]&255,C[2*O+1]=Y[O]>>8}function A(C,T){var O=new Uint8Array(32),w=new Uint8Array(32);return h(O,C),h(w,T),ie(O,0,w,0)}function q(C){var T=new Uint8Array(32);return h(T,C),T[0]&1}function _(C,T){var O;for(O=0;O<16;O++)C[O]=T[2*O]+(T[2*O+1]<<8);C[15]&=32767}function u(C,T,O){for(var w=0;w<16;w++)C[w]=T[w]+O[w]}function I(C,T,O){for(var w=0;w<16;w++)C[w]=T[w]-O[w]}function j(C,T,O){var w,D,H=0,Y=0,V=0,ee=0,Ee=0,ae=0,xe=0,we=0,je=0,ze=0,Ye=0,Ge=0,Ve=0,Je=0,$e=0,Ie=0,Le=0,Ae=0,Me=0,Ce=0,me=0,$=0,X=0,de=0,oe=0,se=0,le=0,st=0,ht=0,pt=0,ct=0,K=O[0],mt=O[1],kt=O[2],Ft=O[3],bt=O[4],Dt=O[5],Pt=O[6],rr=O[7],Qt=O[8],Jt=O[9],Xt=O[10],Zt=O[11],fr=O[12],mr=O[13],xr=O[14],wr=O[15];w=T[0],H+=w*K,Y+=w*mt,V+=w*kt,ee+=w*Ft,Ee+=w*bt,ae+=w*Dt,xe+=w*Pt,we+=w*rr,je+=w*Qt,ze+=w*Jt,Ye+=w*Xt,Ge+=w*Zt,Ve+=w*fr,Je+=w*mr,$e+=w*xr,Ie+=w*wr,w=T[1],Y+=w*K,V+=w*mt,ee+=w*kt,Ee+=w*Ft,ae+=w*bt,xe+=w*Dt,we+=w*Pt,je+=w*rr,ze+=w*Qt,Ye+=w*Jt,Ge+=w*Xt,Ve+=w*Zt,Je+=w*fr,$e+=w*mr,Ie+=w*xr,Le+=w*wr,w=T[2],V+=w*K,ee+=w*mt,Ee+=w*kt,ae+=w*Ft,xe+=w*bt,we+=w*Dt,je+=w*Pt,ze+=w*rr,Ye+=w*Qt,Ge+=w*Jt,Ve+=w*Xt,Je+=w*Zt,$e+=w*fr,Ie+=w*mr,Le+=w*xr,Ae+=w*wr,w=T[3],ee+=w*K,Ee+=w*mt,ae+=w*kt,xe+=w*Ft,we+=w*bt,je+=w*Dt,ze+=w*Pt,Ye+=w*rr,Ge+=w*Qt,Ve+=w*Jt,Je+=w*Xt,$e+=w*Zt,Ie+=w*fr,Le+=w*mr,Ae+=w*xr,Me+=w*wr,w=T[4],Ee+=w*K,ae+=w*mt,xe+=w*kt,we+=w*Ft,je+=w*bt,ze+=w*Dt,Ye+=w*Pt,Ge+=w*rr,Ve+=w*Qt,Je+=w*Jt,$e+=w*Xt,Ie+=w*Zt,Le+=w*fr,Ae+=w*mr,Me+=w*xr,Ce+=w*wr,w=T[5],ae+=w*K,xe+=w*mt,we+=w*kt,je+=w*Ft,ze+=w*bt,Ye+=w*Dt,Ge+=w*Pt,Ve+=w*rr,Je+=w*Qt,$e+=w*Jt,Ie+=w*Xt,Le+=w*Zt,Ae+=w*fr,Me+=w*mr,Ce+=w*xr,me+=w*wr,w=T[6],xe+=w*K,we+=w*mt,je+=w*kt,ze+=w*Ft,Ye+=w*bt,Ge+=w*Dt,Ve+=w*Pt,Je+=w*rr,$e+=w*Qt,Ie+=w*Jt,Le+=w*Xt,Ae+=w*Zt,Me+=w*fr,Ce+=w*mr,me+=w*xr,$+=w*wr,w=T[7],we+=w*K,je+=w*mt,ze+=w*kt,Ye+=w*Ft,Ge+=w*bt,Ve+=w*Dt,Je+=w*Pt,$e+=w*rr,Ie+=w*Qt,Le+=w*Jt,Ae+=w*Xt,Me+=w*Zt,Ce+=w*fr,me+=w*mr,$+=w*xr,X+=w*wr,w=T[8],je+=w*K,ze+=w*mt,Ye+=w*kt,Ge+=w*Ft,Ve+=w*bt,Je+=w*Dt,$e+=w*Pt,Ie+=w*rr,Le+=w*Qt,Ae+=w*Jt,Me+=w*Xt,Ce+=w*Zt,me+=w*fr,$+=w*mr,X+=w*xr,de+=w*wr,w=T[9],ze+=w*K,Ye+=w*mt,Ge+=w*kt,Ve+=w*Ft,Je+=w*bt,$e+=w*Dt,Ie+=w*Pt,Le+=w*rr,Ae+=w*Qt,Me+=w*Jt,Ce+=w*Xt,me+=w*Zt,$+=w*fr,X+=w*mr,de+=w*xr,oe+=w*wr,w=T[10],Ye+=w*K,Ge+=w*mt,Ve+=w*kt,Je+=w*Ft,$e+=w*bt,Ie+=w*Dt,Le+=w*Pt,Ae+=w*rr,Me+=w*Qt,Ce+=w*Jt,me+=w*Xt,$+=w*Zt,X+=w*fr,de+=w*mr,oe+=w*xr,se+=w*wr,w=T[11],Ge+=w*K,Ve+=w*mt,Je+=w*kt,$e+=w*Ft,Ie+=w*bt,Le+=w*Dt,Ae+=w*Pt,Me+=w*rr,Ce+=w*Qt,me+=w*Jt,$+=w*Xt,X+=w*Zt,de+=w*fr,oe+=w*mr,se+=w*xr,le+=w*wr,w=T[12],Ve+=w*K,Je+=w*mt,$e+=w*kt,Ie+=w*Ft,Le+=w*bt,Ae+=w*Dt,Me+=w*Pt,Ce+=w*rr,me+=w*Qt,$+=w*Jt,X+=w*Xt,de+=w*Zt,oe+=w*fr,se+=w*mr,le+=w*xr,st+=w*wr,w=T[13],Je+=w*K,$e+=w*mt,Ie+=w*kt,Le+=w*Ft,Ae+=w*bt,Me+=w*Dt,Ce+=w*Pt,me+=w*rr,$+=w*Qt,X+=w*Jt,de+=w*Xt,oe+=w*Zt,se+=w*fr,le+=w*mr,st+=w*xr,ht+=w*wr,w=T[14],$e+=w*K,Ie+=w*mt,Le+=w*kt,Ae+=w*Ft,Me+=w*bt,Ce+=w*Dt,me+=w*Pt,$+=w*rr,X+=w*Qt,de+=w*Jt,oe+=w*Xt,se+=w*Zt,le+=w*fr,st+=w*mr,ht+=w*xr,pt+=w*wr,w=T[15],Ie+=w*K,Le+=w*mt,Ae+=w*kt,Me+=w*Ft,Ce+=w*bt,me+=w*Dt,$+=w*Pt,X+=w*rr,de+=w*Qt,oe+=w*Jt,se+=w*Xt,le+=w*Zt,st+=w*fr,ht+=w*mr,pt+=w*xr,ct+=w*wr,H+=38*Le,Y+=38*Ae,V+=38*Me,ee+=38*Ce,Ee+=38*me,ae+=38*$,xe+=38*X,we+=38*de,je+=38*oe,ze+=38*se,Ye+=38*le,Ge+=38*st,Ve+=38*ht,Je+=38*pt,$e+=38*ct,D=1,w=H+D+65535,D=Math.floor(w/65536),H=w-D*65536,w=Y+D+65535,D=Math.floor(w/65536),Y=w-D*65536,w=V+D+65535,D=Math.floor(w/65536),V=w-D*65536,w=ee+D+65535,D=Math.floor(w/65536),ee=w-D*65536,w=Ee+D+65535,D=Math.floor(w/65536),Ee=w-D*65536,w=ae+D+65535,D=Math.floor(w/65536),ae=w-D*65536,w=xe+D+65535,D=Math.floor(w/65536),xe=w-D*65536,w=we+D+65535,D=Math.floor(w/65536),we=w-D*65536,w=je+D+65535,D=Math.floor(w/65536),je=w-D*65536,w=ze+D+65535,D=Math.floor(w/65536),ze=w-D*65536,w=Ye+D+65535,D=Math.floor(w/65536),Ye=w-D*65536,w=Ge+D+65535,D=Math.floor(w/65536),Ge=w-D*65536,w=Ve+D+65535,D=Math.floor(w/65536),Ve=w-D*65536,w=Je+D+65535,D=Math.floor(w/65536),Je=w-D*65536,w=$e+D+65535,D=Math.floor(w/65536),$e=w-D*65536,w=Ie+D+65535,D=Math.floor(w/65536),Ie=w-D*65536,H+=D-1+37*(D-1),D=1,w=H+D+65535,D=Math.floor(w/65536),H=w-D*65536,w=Y+D+65535,D=Math.floor(w/65536),Y=w-D*65536,w=V+D+65535,D=Math.floor(w/65536),V=w-D*65536,w=ee+D+65535,D=Math.floor(w/65536),ee=w-D*65536,w=Ee+D+65535,D=Math.floor(w/65536),Ee=w-D*65536,w=ae+D+65535,D=Math.floor(w/65536),ae=w-D*65536,w=xe+D+65535,D=Math.floor(w/65536),xe=w-D*65536,w=we+D+65535,D=Math.floor(w/65536),we=w-D*65536,w=je+D+65535,D=Math.floor(w/65536),je=w-D*65536,w=ze+D+65535,D=Math.floor(w/65536),ze=w-D*65536,w=Ye+D+65535,D=Math.floor(w/65536),Ye=w-D*65536,w=Ge+D+65535,D=Math.floor(w/65536),Ge=w-D*65536,w=Ve+D+65535,D=Math.floor(w/65536),Ve=w-D*65536,w=Je+D+65535,D=Math.floor(w/65536),Je=w-D*65536,w=$e+D+65535,D=Math.floor(w/65536),$e=w-D*65536,w=Ie+D+65535,D=Math.floor(w/65536),Ie=w-D*65536,H+=D-1+37*(D-1),C[0]=H,C[1]=Y,C[2]=V,C[3]=ee,C[4]=Ee,C[5]=ae,C[6]=xe,C[7]=we,C[8]=je,C[9]=ze,C[10]=Ye,C[11]=Ge,C[12]=Ve,C[13]=Je,C[14]=$e,C[15]=Ie}function S(C,T){j(C,T,T)}function L(C,T){var O=e(),w;for(w=0;w<16;w++)O[w]=T[w];for(w=253;w>=0;w--)S(O,O),w!==2&&w!==4&&j(O,O,T);for(w=0;w<16;w++)C[w]=O[w]}function Q(C,T){var O=e(),w;for(w=0;w<16;w++)O[w]=T[w];for(w=250;w>=0;w--)S(O,O),w!==1&&j(O,O,T);for(w=0;w<16;w++)C[w]=O[w]}function z(C,T,O){var w=new Uint8Array(32),D=new Float64Array(80),H,Y,V=e(),ee=e(),Ee=e(),ae=e(),xe=e(),we=e();for(Y=0;Y<31;Y++)w[Y]=T[Y];for(w[31]=T[31]&127|64,w[0]&=248,_(D,O),Y=0;Y<16;Y++)ee[Y]=D[Y],ae[Y]=V[Y]=Ee[Y]=0;for(V[0]=ae[0]=1,Y=254;Y>=0;--Y)H=w[Y>>>3]>>>(Y&7)&1,l(V,ee,H),l(Ee,ae,H),u(xe,V,Ee),I(V,V,Ee),u(Ee,ee,ae),I(ee,ee,ae),S(ae,xe),S(we,V),j(V,Ee,V),j(Ee,ee,xe),u(xe,V,Ee),I(V,V,Ee),S(ee,V),I(Ee,ae,we),j(V,Ee,c),u(V,V,ae),j(Ee,Ee,V),j(V,ae,we),j(ae,ee,D),S(ee,xe),l(V,ee,H),l(Ee,ae,H);for(Y=0;Y<16;Y++)D[Y+16]=V[Y],D[Y+32]=Ee[Y],D[Y+48]=ee[Y],D[Y+64]=ae[Y];var je=D.subarray(32),ze=D.subarray(16);return L(je,je),j(ze,ze,je),h(C,ze),0}function J(C,T){return z(C,T,n)}function he(C,T){return r(T,32),J(C,T)}function W(C,T,O){var w=new Uint8Array(32);return z(w,O,T),ve(C,i,w,Ke)}var te=p,Qe=f;function ne(C,T,O,w,D,H){var Y=new Uint8Array(32);return W(Y,D,H),te(C,T,O,w,Y)}function ye(C,T,O,w,D,H){var Y=new Uint8Array(32);return W(Y,D,H),Qe(C,T,O,w,Y)}var Rt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Pe(C,T,O,w){for(var D=new Int32Array(16),H=new Int32Array(16),Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge,Ve,Je,$e,Ie,Le,Ae,Me,Ce,me,$,X,de,oe,se,le,st=C[0],ht=C[1],pt=C[2],ct=C[3],K=C[4],mt=C[5],kt=C[6],Ft=C[7],bt=T[0],Dt=T[1],Pt=T[2],rr=T[3],Qt=T[4],Jt=T[5],Xt=T[6],Zt=T[7],fr=0;w>=128;){for(Ce=0;Ce<16;Ce++)me=8*Ce+fr,D[Ce]=O[me+0]<<24|O[me+1]<<16|O[me+2]<<8|O[me+3],H[Ce]=O[me+4]<<24|O[me+5]<<16|O[me+6]<<8|O[me+7];for(Ce=0;Ce<80;Ce++)if(Y=st,V=ht,ee=pt,Ee=ct,ae=K,xe=mt,we=kt,je=Ft,ze=bt,Ye=Dt,Ge=Pt,Ve=rr,Je=Qt,$e=Jt,Ie=Xt,Le=Zt,$=Ft,X=Zt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=(K>>>14|Qt<<32-14)^(K>>>18|Qt<<32-18)^(Qt>>>41-32|K<<32-(41-32)),X=(Qt>>>14|K<<32-14)^(Qt>>>18|K<<32-18)^(K>>>41-32|Qt<<32-(41-32)),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=K&mt^~K&kt,X=Qt&Jt^~Qt&Xt,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=Rt[Ce*2],X=Rt[Ce*2+1],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=D[Ce%16],X=H[Ce%16],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,Ae=se&65535|le<<16,Me=de&65535|oe<<16,$=Ae,X=Me,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=(st>>>28|bt<<32-28)^(bt>>>34-32|st<<32-(34-32))^(bt>>>39-32|st<<32-(39-32)),X=(bt>>>28|st<<32-28)^(st>>>34-32|bt<<32-(34-32))^(st>>>39-32|bt<<32-(39-32)),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=st&ht^st&pt^ht&pt,X=bt&Dt^bt&Pt^Dt&Pt,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,je=se&65535|le<<16,Le=de&65535|oe<<16,$=Ee,X=Ve,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=Ae,X=Me,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,Ee=se&65535|le<<16,Ve=de&65535|oe<<16,ht=Y,pt=V,ct=ee,K=Ee,mt=ae,kt=xe,Ft=we,st=je,Dt=ze,Pt=Ye,rr=Ge,Qt=Ve,Jt=Je,Xt=$e,Zt=Ie,bt=Le,Ce%16===15)for(me=0;me<16;me++)$=D[me],X=H[me],de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=D[(me+9)%16],X=H[(me+9)%16],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,Ae=D[(me+1)%16],Me=H[(me+1)%16],$=(Ae>>>1|Me<<32-1)^(Ae>>>8|Me<<32-8)^Ae>>>7,X=(Me>>>1|Ae<<32-1)^(Me>>>8|Ae<<32-8)^(Me>>>7|Ae<<32-7),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,Ae=D[(me+14)%16],Me=H[(me+14)%16],$=(Ae>>>19|Me<<32-19)^(Me>>>61-32|Ae<<32-(61-32))^Ae>>>6,X=(Me>>>19|Ae<<32-19)^(Ae>>>61-32|Me<<32-(61-32))^(Me>>>6|Ae<<32-6),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,D[me]=se&65535|le<<16,H[me]=de&65535|oe<<16;$=st,X=bt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[0],X=T[0],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[0]=st=se&65535|le<<16,T[0]=bt=de&65535|oe<<16,$=ht,X=Dt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[1],X=T[1],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[1]=ht=se&65535|le<<16,T[1]=Dt=de&65535|oe<<16,$=pt,X=Pt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[2],X=T[2],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[2]=pt=se&65535|le<<16,T[2]=Pt=de&65535|oe<<16,$=ct,X=rr,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[3],X=T[3],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[3]=ct=se&65535|le<<16,T[3]=rr=de&65535|oe<<16,$=K,X=Qt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[4],X=T[4],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[4]=K=se&65535|le<<16,T[4]=Qt=de&65535|oe<<16,$=mt,X=Jt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[5],X=T[5],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[5]=mt=se&65535|le<<16,T[5]=Jt=de&65535|oe<<16,$=kt,X=Xt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[6],X=T[6],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[6]=kt=se&65535|le<<16,T[6]=Xt=de&65535|oe<<16,$=Ft,X=Zt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[7],X=T[7],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[7]=Ft=se&65535|le<<16,T[7]=Zt=de&65535|oe<<16,fr+=128,w-=128}return w}function We(C,T,O){var w=new Int32Array(8),D=new Int32Array(8),H=new Uint8Array(256),Y,V=O;for(w[0]=1779033703,w[1]=3144134277,w[2]=1013904242,w[3]=2773480762,w[4]=1359893119,w[5]=2600822924,w[6]=528734635,w[7]=1541459225,D[0]=4089235720,D[1]=2227873595,D[2]=4271175723,D[3]=1595750129,D[4]=2917565137,D[5]=725511199,D[6]=4215389547,D[7]=327033209,Pe(w,D,T,O),O%=128,Y=0;Y=0;--D)w=O[D/8|0]>>(D&7)&1,Ue(C,T,w),It(T,C),It(C,C),Ue(C,T,w)}function Re(C,T){var O=[e(),e(),e(),e()];s(O[0],B),s(O[1],R),s(O[2],o),j(O[3],B,R),St(C,O,T)}function rt(C,T,O){var w=new Uint8Array(64),D=[e(),e(),e(),e()],H;for(O||r(T,32),We(w,T,32),w[0]&=248,w[31]&=127,w[31]|=64,Re(D,w),tt(C,D),H=0;H<32;H++)T[H+32]=C[H];return 0}var Et=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Oe(C,T){var O,w,D,H;for(w=63;w>=32;--w){for(O=0,D=w-32,H=w-12;D>4)*Et[D],O=T[D]>>8,T[D]&=255;for(D=0;D<32;D++)T[D]-=O*Et[D];for(w=0;w<32;w++)T[w+1]+=T[w]>>8,C[w]=T[w]&255}function it(C){var T=new Float64Array(64),O;for(O=0;O<64;O++)T[O]=C[O];for(O=0;O<64;O++)C[O]=0;Oe(C,T)}function Tt(C,T,O,w){var D=new Uint8Array(64),H=new Uint8Array(64),Y=new Uint8Array(64),V,ee,Ee=new Float64Array(64),ae=[e(),e(),e(),e()];We(D,w,32),D[0]&=248,D[31]&=127,D[31]|=64;var xe=O+64;for(V=0;V>7&&I(C[0],a,C[0]),j(C[3],C[0],C[1]),0)}function nt(C,T,O,w){var D,H=new Uint8Array(32),Y=new Uint8Array(64),V=[e(),e(),e(),e()],ee=[e(),e(),e(),e()];if(O<64||ke(ee,w))return-1;for(D=0;D=0},t.sign.keyPair=function(){var C=new Uint8Array(Se),T=new Uint8Array(Xe);return rt(C,T),{publicKey:C,secretKey:T}},t.sign.keyPair.fromSecretKey=function(C){if(_e(C),C.length!==Xe)throw new Error("bad secret key size");for(var T=new Uint8Array(Se),O=0;O{g();(function(t,e){"use strict";typeof Uh<"u"&&Uh.exports?Uh.exports=e(O_()):t.ed2curve=e(t.nacl)})(D_,function(t){"use strict";if(!t)throw new Error("tweetnacl not loaded");var e=function(k){var d,b=new Float64Array(16);if(k)for(d=0;d=0;E--)F(b,b),E!==2&&E!==4&&R(b,b,d);for(E=0;E<16;E++)k[E]=b[E]}function G(k,d){var b,E,p,f=e(),s=e();for(b=0;b<16;b++)s[b]=d[b];for(o(s),o(s),o(s),E=0;E<2;E++){for(f[0]=s[0]-65517,b=1;b<15;b++)f[b]=s[b]-65535-(f[b-1]>>16&1),f[b-1]&=65535;f[15]=s[15]-32767-(f[14]>>16&1),p=f[15]>>16&1,f[14]&=65535,c(s,f,1-p)}for(b=0;b<16;b++)k[2*b]=s[b]&255,k[2*b+1]=s[b]>>8}function Z(k){var d=new Uint8Array(32);return G(d,k),d[0]&1}function ie(k,d,b,E,p){var f,s=0;for(f=0;f>>8)-1}function fe(k,d,b,E){return ie(k,d,b,E,32)}function ce(k,d){var b=new Uint8Array(32),E=new Uint8Array(32);return G(b,k),G(E,d),fe(b,0,E,0)}function ge(k,d){var b=e(),E;for(E=0;E<16;E++)b[E]=d[E];for(E=250;E>=0;E--)F(b,b),E!==1&&R(b,b,d);for(E=0;E<16;E++)k[E]=b[E]}function ve(k,d){var b;for(b=0;b<16;b++)k[b]=d[b]|0}function Ke(k,d){var b=e(),E=e(),p=e(),f=e(),s=e(),v=e(),l=e();return ve(k[2],i),m(k[1],d),F(p,k[1]),R(f,p,n),B(p,p,k[2]),M(f,k[2],f),F(s,f),F(v,s),R(l,v,s),R(b,l,p),R(b,b,f),ge(b,b),R(b,b,p),R(b,b,f),R(b,b,f),R(k[0],b,f),F(E,k[0]),R(E,E,f),ce(E,p)&&R(k[0],k[0],a),F(E,k[0]),R(E,E,f),ce(E,p)?-1:(Z(k[0])===d[31]>>7&&B(k[0],r,k[0]),R(k[3],k[0],k[1]),0)}function be(k){var d=new Uint8Array(32),b=[e(),e(),e(),e()],E=e(),p=e();if(Ke(b,k))return null;var f=b[1];return M(E,i,f),B(p,i,f),N(p,p),R(E,E,p),G(d,E),d}function pe(k){var d=new Uint8Array(64),b=new Uint8Array(32),E;for(t.lowlevel.crypto_hash(d,k,32),d[0]&=248,d[31]&=127,d[31]|=64,E=0;E<32;E++)b[E]=d[E];for(E=0;E<64;E++)d[E]=0;return b}function Ne(k){var d=be(k.publicKey);return d?{publicKey:d,secretKey:pe(k.secretKey)}:null}return{convertPublicKey:be,convertSecretKey:pe,convertKeyPair:Ne}})});var K_=P(yv=>{"use strict";g();Object.defineProperty(yv,"__esModule",{value:!0});function pj(t){var e=4,r=t.length,i=r%e;if(!i)return t;var n=r,a=e-i,o=r+a,c=U.alloc(o);for(c.write(t);a--;)c.write("=",n++);return c.toString()}yv.default=pj});var H_=P(wv=>{"use strict";g();Object.defineProperty(wv,"__esModule",{value:!0});var vj=K_();function j_(t,e){return e===void 0&&(e="utf8"),U.isBuffer(t)?mv(t.toString("base64")):mv(U.from(t,e).toString("base64"))}function bj(t,e){return e===void 0&&(e="utf8"),U.from(xv(t),"base64").toString(e)}function xv(t){return t=t.toString(),vj.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function mv(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function gj(t){return U.from(xv(t),"base64")}var ao=j_;ao.encode=j_;ao.decode=bj;ao.toBase64=xv;ao.fromBase64=mv;ao.toBuffer=gj;wv.default=ao});var z_=P((Gie,Yh)=>{g();Yh.exports=H_().default;Yh.exports.default=Yh.exports});g();g();var bn=$r(oc(),1),xa=$r(Rl(),1);var Z4={};Sv(Z4,{concatUint8Arrays:()=>Kt,decodeInt32:()=>Tl,encodeInt32:()=>ji,encodeInt64:()=>Z0,fromBigInt:()=>YO,hexToUint8Array:()=>Nt,isHex:()=>Mt,originPrivateKey:()=>zO,toBigInt:()=>GO,toByteArray:()=>Hn,uint8ArrayToHex:()=>jt});g();var X4=[];for(let t=0;t<=255;++t){let e=t.toString(16).padStart(2,"0");X4.push(e)}var zO="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function Mt(t){return/^([0-9A-Fa-f])*$/.test(t)}function Nt(t){return new Uint8Array(t.match(/.{1,2}/g).map(e=>parseInt(e,16)))}function jt(t){let e=new Uint8Array(t),r=new Array(e.length);for(let i=0;ii+n.byteLength,0),{buffer:r}=t.reduce(({buffer:i,pos:n},a)=>(i.set(new Uint8Array(a),n),{buffer:i,pos:n+a.byteLength}),{buffer:new Uint8Array(e),pos:0});return r}function ji(t){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,t,!0),new Uint8Array(e).reverse()}function Z0(t){let e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,BigInt(t),!0),new Uint8Array(e).reverse()}function Tl(t){let e=0;for(let r=0;r=256;)t=t>>>8,e.unshift(t&255);return e}async function e5(t){let e=new URL("/api",t);return(0,bn.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { +var L_=Object.create;var nl=Object.defineProperty;var N_=Object.getOwnPropertyDescriptor;var F_=Object.getOwnPropertyNames;var K_=Object.getPrototypeOf,Q_=Object.prototype.hasOwnProperty;var jp=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var H_=(e,t)=>()=>(e&&(t=e(e=0)),t);var P=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),zp=(e,t)=>{for(var r in t)nl(e,r,{get:t[r],enumerable:!0})},j_=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of F_(t))!Q_.call(e,n)&&n!==r&&nl(e,n,{get:()=>t[n],enumerable:!(a=N_(t,n))||a.enumerable});return e};var $r=(e,t,r)=>(r=e!=null?L_(K_(e)):{},j_(t||!e||!e.__esModule?nl(r,"default",{value:e,enumerable:!0}):r,e));var Gp=P(Gs=>{"use strict";M();Gs.byteLength=V_;Gs.toByteArray=G_;Gs.fromByteArray=W_;var Li=[],Zr=[],z_=typeof Uint8Array<"u"?Uint8Array:Array,fl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(df=0,Vp=fl.length;df0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var a=r===t?0:4-r%4;return[r,a]}function V_(e){var t=Yp(e),r=t[0],a=t[1];return(r+a)*3/4-a}function Y_(e,t,r){return(t+r)*3/4-r}function G_(e){var t,r=Yp(e),a=r[0],n=r[1],d=new z_(Y_(e,a,n)),m=0,b=n>0?a-4:a,A;for(A=0;A>16&255,d[m++]=t>>8&255,d[m++]=t&255;return n===2&&(t=Zr[e.charCodeAt(A)]<<2|Zr[e.charCodeAt(A+1)]>>4,d[m++]=t&255),n===1&&(t=Zr[e.charCodeAt(A)]<<10|Zr[e.charCodeAt(A+1)]<<4|Zr[e.charCodeAt(A+2)]>>2,d[m++]=t>>8&255,d[m++]=t&255),d}function $_(e){return Li[e>>18&63]+Li[e>>12&63]+Li[e>>6&63]+Li[e&63]}function Z_(e,t,r){for(var a,n=[],d=t;db?b:m+d));return a===1?(t=e[r-1],n.push(Li[t>>2]+Li[t<<4&63]+"==")):a===2&&(t=(e[r-2]<<8)+e[r-1],n.push(Li[t>>10]+Li[t>>4&63]+Li[t<<2&63]+"=")),n.join("")}});var $p=P(al=>{M();al.read=function(e,t,r,a,n){var d,m,b=n*8-a-1,A=(1<>1,C=-7,D=r?n-1:0,K=r?-1:1,j=e[t+D];for(D+=K,d=j&(1<<-C)-1,j>>=-C,C+=b;C>0;d=d*256+e[t+D],D+=K,C-=8);for(m=d&(1<<-C)-1,d>>=-C,C+=a;C>0;m=m*256+e[t+D],D+=K,C-=8);if(d===0)d=1-B;else{if(d===A)return m?NaN:(j?-1:1)*(1/0);m=m+Math.pow(2,a),d=d-B}return(j?-1:1)*m*Math.pow(2,d-a)};al.write=function(e,t,r,a,n,d){var m,b,A,B=d*8-n-1,C=(1<>1,K=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,j=a?0:d-1,Z=a?1:-1,qt=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(b=isNaN(t)?1:0,m=C):(m=Math.floor(Math.log(t)/Math.LN2),t*(A=Math.pow(2,-m))<1&&(m--,A*=2),m+D>=1?t+=K/A:t+=K*Math.pow(2,1-D),t*A>=2&&(m++,A/=2),m+D>=C?(b=0,m=C):m+D>=1?(b=(t*A-1)*Math.pow(2,n),m=m+D):(b=t*Math.pow(2,D-1)*Math.pow(2,n),m=0));n>=8;e[r+j]=b&255,j+=Z,b/=256,n-=8);for(m=m<0;e[r+j]=m&255,j+=Z,m/=256,B-=8);e[r+j-Z]|=qt*128}});var On=P(ua=>{"use strict";M();var ol=Gp(),sa=$p(),Zp=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;ua.Buffer=Tt;ua.SlowBuffer=iI;ua.INSPECT_MAX_BYTES=50;var $s=2147483647;ua.kMaxLength=$s;Tt.TYPED_ARRAY_SUPPORT=J_();!Tt.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function J_(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}Object.defineProperty(Tt.prototype,"parent",{enumerable:!0,get:function(){if(!!Tt.isBuffer(this))return this.buffer}});Object.defineProperty(Tt.prototype,"offset",{enumerable:!0,get:function(){if(!!Tt.isBuffer(this))return this.byteOffset}});function nn(e){if(e>$s)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,Tt.prototype),t}function Tt(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ll(e)}return t2(e,t,r)}Tt.poolSize=8192;function t2(e,t,r){if(typeof e=="string")return tI(e,t);if(ArrayBuffer.isView(e))return eI(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(Ni(e,ArrayBuffer)||e&&Ni(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Ni(e,SharedArrayBuffer)||e&&Ni(e.buffer,SharedArrayBuffer)))return hl(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let a=e.valueOf&&e.valueOf();if(a!=null&&a!==e)return Tt.from(a,t,r);let n=rI(e);if(n)return n;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return Tt.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}Tt.from=function(e,t,r){return t2(e,t,r)};Object.setPrototypeOf(Tt.prototype,Uint8Array.prototype);Object.setPrototypeOf(Tt,Uint8Array);function e2(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function X_(e,t,r){return e2(e),e<=0?nn(e):t!==void 0?typeof r=="string"?nn(e).fill(t,r):nn(e).fill(t):nn(e)}Tt.alloc=function(e,t,r){return X_(e,t,r)};function ll(e){return e2(e),nn(e<0?0:cl(e)|0)}Tt.allocUnsafe=function(e){return ll(e)};Tt.allocUnsafeSlow=function(e){return ll(e)};function tI(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!Tt.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=r2(e,t)|0,a=nn(r),n=a.write(e,t);return n!==r&&(a=a.slice(0,n)),a}function sl(e){let t=e.length<0?0:cl(e.length)|0,r=nn(t);for(let a=0;a=$s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+$s.toString(16)+" bytes");return e|0}function iI(e){return+e!=e&&(e=0),Tt.alloc(+e)}Tt.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==Tt.prototype};Tt.compare=function(t,r){if(Ni(t,Uint8Array)&&(t=Tt.from(t,t.offset,t.byteLength)),Ni(r,Uint8Array)&&(r=Tt.from(r,r.offset,r.byteLength)),!Tt.isBuffer(t)||!Tt.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;let a=t.length,n=r.length;for(let d=0,m=Math.min(a,n);dn.length?(Tt.isBuffer(m)||(m=Tt.from(m)),m.copy(n,d)):Uint8Array.prototype.set.call(n,m,d);else if(Tt.isBuffer(m))m.copy(n,d);else throw new TypeError('"list" argument must be an Array of Buffers');d+=m.length}return n};function r2(e,t){if(Tt.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||Ni(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,a=arguments.length>2&&arguments[2]===!0;if(!a&&r===0)return 0;let n=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return ul(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return l2(e).length;default:if(n)return a?-1:ul(e).length;t=(""+t).toLowerCase(),n=!0}}Tt.byteLength=r2;function nI(e,t,r){let a=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return vI(this,t,r);case"utf8":case"utf-8":return n2(this,t,r);case"ascii":return cI(this,t,r);case"latin1":case"binary":return dI(this,t,r);case"base64":return uI(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return pI(this,t,r);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}Tt.prototype._isBuffer=!0;function vf(e,t,r){let a=e[t];e[t]=e[r],e[r]=a}Tt.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(t+=" ... "),""};Zp&&(Tt.prototype[Zp]=Tt.prototype.inspect);Tt.prototype.compare=function(t,r,a,n,d){if(Ni(t,Uint8Array)&&(t=Tt.from(t,t.offset,t.byteLength)),!Tt.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(r===void 0&&(r=0),a===void 0&&(a=t?t.length:0),n===void 0&&(n=0),d===void 0&&(d=this.length),r<0||a>t.length||n<0||d>this.length)throw new RangeError("out of range index");if(n>=d&&r>=a)return 0;if(n>=d)return-1;if(r>=a)return 1;if(r>>>=0,a>>>=0,n>>>=0,d>>>=0,this===t)return 0;let m=d-n,b=a-r,A=Math.min(m,b),B=this.slice(n,d),C=t.slice(r,a);for(let D=0;D2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,vl(r)&&(r=n?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(n)return-1;r=e.length-1}else if(r<0)if(n)r=0;else return-1;if(typeof t=="string"&&(t=Tt.from(t,a)),Tt.isBuffer(t))return t.length===0?-1:Wp(e,t,r,a,n);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?n?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Wp(e,[t],r,a,n);throw new TypeError("val must be string, number or Buffer")}function Wp(e,t,r,a,n){let d=1,m=e.length,b=t.length;if(a!==void 0&&(a=String(a).toLowerCase(),a==="ucs2"||a==="ucs-2"||a==="utf16le"||a==="utf-16le")){if(e.length<2||t.length<2)return-1;d=2,m/=2,b/=2,r/=2}function A(C,D){return d===1?C[D]:C.readUInt16BE(D*d)}let B;if(n){let C=-1;for(B=r;Bm&&(r=m-b),B=r;B>=0;B--){let C=!0;for(let D=0;Dn&&(a=n)):a=n;let d=t.length;a>d/2&&(a=d/2);let m;for(m=0;m>>0,isFinite(a)?(a=a>>>0,n===void 0&&(n="utf8")):(n=a,a=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let d=this.length-r;if((a===void 0||a>d)&&(a=d),t.length>0&&(a<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let m=!1;for(;;)switch(n){case"hex":return fI(this,t,r,a);case"utf8":case"utf-8":return aI(this,t,r,a);case"ascii":case"latin1":case"binary":return oI(this,t,r,a);case"base64":return sI(this,t,r,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return hI(this,t,r,a);default:if(m)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),m=!0}};Tt.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function uI(e,t,r){return t===0&&r===e.length?ol.fromByteArray(e):ol.fromByteArray(e.slice(t,r))}function n2(e,t,r){r=Math.min(e.length,r);let a=[],n=t;for(;n239?4:d>223?3:d>191?2:1;if(n+b<=r){let A,B,C,D;switch(b){case 1:d<128&&(m=d);break;case 2:A=e[n+1],(A&192)===128&&(D=(d&31)<<6|A&63,D>127&&(m=D));break;case 3:A=e[n+1],B=e[n+2],(A&192)===128&&(B&192)===128&&(D=(d&15)<<12|(A&63)<<6|B&63,D>2047&&(D<55296||D>57343)&&(m=D));break;case 4:A=e[n+1],B=e[n+2],C=e[n+3],(A&192)===128&&(B&192)===128&&(C&192)===128&&(D=(d&15)<<18|(A&63)<<12|(B&63)<<6|C&63,D>65535&&D<1114112&&(m=D))}}m===null?(m=65533,b=1):m>65535&&(m-=65536,a.push(m>>>10&1023|55296),m=56320|m&1023),a.push(m),n+=b}return lI(a)}var Jp=4096;function lI(e){let t=e.length;if(t<=Jp)return String.fromCharCode.apply(String,e);let r="",a=0;for(;aa)&&(r=a);let n="";for(let d=t;da&&(t=a),r<0?(r+=a,r<0&&(r=0)):r>a&&(r=a),rr)throw new RangeError("Trying to access beyond buffer length")}Tt.prototype.readUintLE=Tt.prototype.readUIntLE=function(t,r,a){t=t>>>0,r=r>>>0,a||or(t,r,this.length);let n=this[t],d=1,m=0;for(;++m>>0,r=r>>>0,a||or(t,r,this.length);let n=this[t+--r],d=1;for(;r>0&&(d*=256);)n+=this[t+--r]*d;return n};Tt.prototype.readUint8=Tt.prototype.readUInt8=function(t,r){return t=t>>>0,r||or(t,1,this.length),this[t]};Tt.prototype.readUint16LE=Tt.prototype.readUInt16LE=function(t,r){return t=t>>>0,r||or(t,2,this.length),this[t]|this[t+1]<<8};Tt.prototype.readUint16BE=Tt.prototype.readUInt16BE=function(t,r){return t=t>>>0,r||or(t,2,this.length),this[t]<<8|this[t+1]};Tt.prototype.readUint32LE=Tt.prototype.readUInt32LE=function(t,r){return t=t>>>0,r||or(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};Tt.prototype.readUint32BE=Tt.prototype.readUInt32BE=function(t,r){return t=t>>>0,r||or(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};Tt.prototype.readBigUInt64LE=Tn(function(t){t=t>>>0,ha(t,"offset");let r=this[t],a=this[t+7];(r===void 0||a===void 0)&&co(t,this.length-8);let n=r+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,d=this[++t]+this[++t]*2**8+this[++t]*2**16+a*2**24;return BigInt(n)+(BigInt(d)<>>0,ha(t,"offset");let r=this[t],a=this[t+7];(r===void 0||a===void 0)&&co(t,this.length-8);let n=r*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],d=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+a;return(BigInt(n)<>>0,r=r>>>0,a||or(t,r,this.length);let n=this[t],d=1,m=0;for(;++m=d&&(n-=Math.pow(2,8*r)),n};Tt.prototype.readIntBE=function(t,r,a){t=t>>>0,r=r>>>0,a||or(t,r,this.length);let n=r,d=1,m=this[t+--n];for(;n>0&&(d*=256);)m+=this[t+--n]*d;return d*=128,m>=d&&(m-=Math.pow(2,8*r)),m};Tt.prototype.readInt8=function(t,r){return t=t>>>0,r||or(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};Tt.prototype.readInt16LE=function(t,r){t=t>>>0,r||or(t,2,this.length);let a=this[t]|this[t+1]<<8;return a&32768?a|4294901760:a};Tt.prototype.readInt16BE=function(t,r){t=t>>>0,r||or(t,2,this.length);let a=this[t+1]|this[t]<<8;return a&32768?a|4294901760:a};Tt.prototype.readInt32LE=function(t,r){return t=t>>>0,r||or(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};Tt.prototype.readInt32BE=function(t,r){return t=t>>>0,r||or(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};Tt.prototype.readBigInt64LE=Tn(function(t){t=t>>>0,ha(t,"offset");let r=this[t],a=this[t+7];(r===void 0||a===void 0)&&co(t,this.length-8);let n=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(a<<24);return(BigInt(n)<>>0,ha(t,"offset");let r=this[t],a=this[t+7];(r===void 0||a===void 0)&&co(t,this.length-8);let n=(r<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(n)<>>0,r||or(t,4,this.length),sa.read(this,t,!0,23,4)};Tt.prototype.readFloatBE=function(t,r){return t=t>>>0,r||or(t,4,this.length),sa.read(this,t,!1,23,4)};Tt.prototype.readDoubleLE=function(t,r){return t=t>>>0,r||or(t,8,this.length),sa.read(this,t,!0,52,8)};Tt.prototype.readDoubleBE=function(t,r){return t=t>>>0,r||or(t,8,this.length),sa.read(this,t,!1,52,8)};function Or(e,t,r,a,n,d){if(!Tt.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||te.length)throw new RangeError("Index out of range")}Tt.prototype.writeUintLE=Tt.prototype.writeUIntLE=function(t,r,a,n){if(t=+t,r=r>>>0,a=a>>>0,!n){let b=Math.pow(2,8*a)-1;Or(this,t,r,a,b,0)}let d=1,m=0;for(this[r]=t&255;++m>>0,a=a>>>0,!n){let b=Math.pow(2,8*a)-1;Or(this,t,r,a,b,0)}let d=a-1,m=1;for(this[r+d]=t&255;--d>=0&&(m*=256);)this[r+d]=t/m&255;return r+a};Tt.prototype.writeUint8=Tt.prototype.writeUInt8=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,1,255,0),this[r]=t&255,r+1};Tt.prototype.writeUint16LE=Tt.prototype.writeUInt16LE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,2,65535,0),this[r]=t&255,this[r+1]=t>>>8,r+2};Tt.prototype.writeUint16BE=Tt.prototype.writeUInt16BE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=t&255,r+2};Tt.prototype.writeUint32LE=Tt.prototype.writeUInt32LE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255,r+4};Tt.prototype.writeUint32BE=Tt.prototype.writeUInt32BE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};function f2(e,t,r,a,n){u2(t,a,n,e,r,7);let d=Number(t&BigInt(4294967295));e[r++]=d,d=d>>8,e[r++]=d,d=d>>8,e[r++]=d,d=d>>8,e[r++]=d;let m=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=m,m=m>>8,e[r++]=m,m=m>>8,e[r++]=m,m=m>>8,e[r++]=m,r}function a2(e,t,r,a,n){u2(t,a,n,e,r,7);let d=Number(t&BigInt(4294967295));e[r+7]=d,d=d>>8,e[r+6]=d,d=d>>8,e[r+5]=d,d=d>>8,e[r+4]=d;let m=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=m,m=m>>8,e[r+2]=m,m=m>>8,e[r+1]=m,m=m>>8,e[r]=m,r+8}Tt.prototype.writeBigUInt64LE=Tn(function(t,r=0){return f2(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});Tt.prototype.writeBigUInt64BE=Tn(function(t,r=0){return a2(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});Tt.prototype.writeIntLE=function(t,r,a,n){if(t=+t,r=r>>>0,!n){let A=Math.pow(2,8*a-1);Or(this,t,r,a,A-1,-A)}let d=0,m=1,b=0;for(this[r]=t&255;++d>0)-b&255;return r+a};Tt.prototype.writeIntBE=function(t,r,a,n){if(t=+t,r=r>>>0,!n){let A=Math.pow(2,8*a-1);Or(this,t,r,a,A-1,-A)}let d=a-1,m=1,b=0;for(this[r+d]=t&255;--d>=0&&(m*=256);)t<0&&b===0&&this[r+d+1]!==0&&(b=1),this[r+d]=(t/m>>0)-b&255;return r+a};Tt.prototype.writeInt8=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=t&255,r+1};Tt.prototype.writeInt16LE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,2,32767,-32768),this[r]=t&255,this[r+1]=t>>>8,r+2};Tt.prototype.writeInt16BE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=t&255,r+2};Tt.prototype.writeInt32LE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,4,2147483647,-2147483648),this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4};Tt.prototype.writeInt32BE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};Tt.prototype.writeBigInt64LE=Tn(function(t,r=0){return f2(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});Tt.prototype.writeBigInt64BE=Tn(function(t,r=0){return a2(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function o2(e,t,r,a,n,d){if(r+a>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function s2(e,t,r,a,n){return t=+t,r=r>>>0,n||o2(e,t,r,4,34028234663852886e22,-34028234663852886e22),sa.write(e,t,r,a,23,4),r+4}Tt.prototype.writeFloatLE=function(t,r,a){return s2(this,t,r,!0,a)};Tt.prototype.writeFloatBE=function(t,r,a){return s2(this,t,r,!1,a)};function h2(e,t,r,a,n){return t=+t,r=r>>>0,n||o2(e,t,r,8,17976931348623157e292,-17976931348623157e292),sa.write(e,t,r,a,52,8),r+8}Tt.prototype.writeDoubleLE=function(t,r,a){return h2(this,t,r,!0,a)};Tt.prototype.writeDoubleBE=function(t,r,a){return h2(this,t,r,!1,a)};Tt.prototype.copy=function(t,r,a,n){if(!Tt.isBuffer(t))throw new TypeError("argument should be a Buffer");if(a||(a=0),!n&&n!==0&&(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r>>0,a=a===void 0?this.length:a>>>0,t||(t=0);let d;if(typeof t=="number")for(d=r;d2**32?n=Xp(String(r)):typeof r=="bigint"&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Xp(n)),n+="n"),a+=` It must be ${t}. Received ${n}`,a},RangeError);function Xp(e){let t="",r=e.length,a=e[0]==="-"?1:0;for(;r>=a+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function gI(e,t,r){ha(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&co(t,e.length-(r+1))}function u2(e,t,r,a,n,d){if(e>r||e3?t===0||t===BigInt(0)?b=`>= 0${m} and < 2${m} ** ${(d+1)*8}${m}`:b=`>= -(2${m} ** ${(d+1)*8-1}${m}) and < 2 ** ${(d+1)*8-1}${m}`:b=`>= ${t}${m} and <= ${r}${m}`,new oa.ERR_OUT_OF_RANGE("value",b,e)}gI(a,n,d)}function ha(e,t){if(typeof e!="number")throw new oa.ERR_INVALID_ARG_TYPE(t,"number",e)}function co(e,t,r){throw Math.floor(e)!==e?(ha(e,r),new oa.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new oa.ERR_BUFFER_OUT_OF_BOUNDS:new oa.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var mI=/[^+/0-9A-Za-z-_]/g;function bI(e){if(e=e.split("=")[0],e=e.trim().replace(mI,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function ul(e,t){t=t||1/0;let r,a=e.length,n=null,d=[];for(let m=0;m55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&d.push(239,191,189);continue}else if(m+1===a){(t-=3)>-1&&d.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&d.push(239,191,189),n=r;continue}r=(n-55296<<10|r-56320)+65536}else n&&(t-=3)>-1&&d.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;d.push(r)}else if(r<2048){if((t-=2)<0)break;d.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;d.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;d.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return d}function yI(e){let t=[];for(let r=0;r>8,n=r%256,d.push(n),d.push(a);return d}function l2(e){return ol.toByteArray(bI(e))}function Zs(e,t,r,a){let n;for(n=0;n=t.length||n>=e.length);++n)t[n+r]=e[n];return n}function Ni(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function vl(e){return e!==e}var wI=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let a=r*16;for(let n=0;n<16;++n)t[a+n]=e[r]+e[n]}return t}();function Tn(e){return typeof BigInt>"u"?MI:e}function MI(){throw new Error("BigInt not supported")}});var U,M=H_(()=>{U=On().Buffer});var pl=P((fn,d2)=>{M();var c2=typeof self<"u"?self:fn,Ws=function(){function e(){this.fetch=!1,this.DOMException=c2.DOMException}return e.prototype=c2,new e}();(function(e){var t=function(r){var a={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};function n(v){return v&&DataView.prototype.isPrototypeOf(v)}if(a.arrayBuffer)var d=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],m=ArrayBuffer.isView||function(v){return v&&d.indexOf(Object.prototype.toString.call(v))>-1};function b(v){if(typeof v!="string"&&(v=String(v)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(v))throw new TypeError("Invalid character in header field name");return v.toLowerCase()}function A(v){return typeof v!="string"&&(v=String(v)),v}function B(v){var i={next:function(){var o=v.shift();return{done:o===void 0,value:o}}};return a.iterable&&(i[Symbol.iterator]=function(){return i}),i}function C(v){this.map={},v instanceof C?v.forEach(function(i,o){this.append(o,i)},this):Array.isArray(v)?v.forEach(function(i){this.append(i[0],i[1])},this):v&&Object.getOwnPropertyNames(v).forEach(function(i){this.append(i,v[i])},this)}C.prototype.append=function(v,i){v=b(v),i=A(i);var o=this.map[v];this.map[v]=o?o+", "+i:i},C.prototype.delete=function(v){delete this.map[b(v)]},C.prototype.get=function(v){return v=b(v),this.has(v)?this.map[v]:null},C.prototype.has=function(v){return this.map.hasOwnProperty(b(v))},C.prototype.set=function(v,i){this.map[b(v)]=A(i)},C.prototype.forEach=function(v,i){for(var o in this.map)this.map.hasOwnProperty(o)&&v.call(i,this.map[o],o,this)},C.prototype.keys=function(){var v=[];return this.forEach(function(i,o){v.push(o)}),B(v)},C.prototype.values=function(){var v=[];return this.forEach(function(i){v.push(i)}),B(v)},C.prototype.entries=function(){var v=[];return this.forEach(function(i,o){v.push([o,i])}),B(v)},a.iterable&&(C.prototype[Symbol.iterator]=C.prototype.entries);function D(v){if(v.bodyUsed)return Promise.reject(new TypeError("Already read"));v.bodyUsed=!0}function K(v){return new Promise(function(i,o){v.onload=function(){i(v.result)},v.onerror=function(){o(v.error)}})}function j(v){var i=new FileReader,o=K(i);return i.readAsArrayBuffer(v),o}function Z(v){var i=new FileReader,o=K(i);return i.readAsText(v),o}function qt(v){for(var i=new Uint8Array(v),o=new Array(i.length),h=0;h-1?i:v}function Lt(v,i){i=i||{};var o=i.body;if(v instanceof Lt){if(v.bodyUsed)throw new TypeError("Already read");this.url=v.url,this.credentials=v.credentials,i.headers||(this.headers=new C(v.headers)),this.method=v.method,this.mode=v.mode,this.signal=v.signal,!o&&v._bodyInit!=null&&(o=v._bodyInit,v.bodyUsed=!0)}else this.url=String(v);if(this.credentials=i.credentials||this.credentials||"same-origin",(i.headers||!this.headers)&&(this.headers=new C(i.headers)),this.method=ht(i.method||this.method||"GET"),this.mode=i.mode||this.mode||null,this.signal=i.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&o)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(o)}Lt.prototype.clone=function(){return new Lt(this,{body:this._bodyInit})};function ee(v){var i=new FormData;return v.trim().split("&").forEach(function(o){if(o){var h=o.split("="),s=h.shift().replace(/\+/g," "),u=h.join("=").replace(/\+/g," ");i.append(decodeURIComponent(s),decodeURIComponent(u))}}),i}function $t(v){var i=new C,o=v.replace(/\r?\n[\t ]+/g," ");return o.split(/\r?\n/).forEach(function(h){var s=h.split(":"),u=s.shift().trim();if(u){var p=s.join(":").trim();i.append(u,p)}}),i}J.call(Lt.prototype);function Gt(v,i){i||(i={}),this.type="default",this.status=i.status===void 0?200:i.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in i?i.statusText:"OK",this.headers=new C(i.headers),this.url=i.url||"",this._initBody(v)}J.call(Gt.prototype),Gt.prototype.clone=function(){return new Gt(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new C(this.headers),url:this.url})},Gt.error=function(){var v=new Gt(null,{status:0,statusText:""});return v.type="error",v};var tt=[301,302,303,307,308];Gt.redirect=function(v,i){if(tt.indexOf(i)===-1)throw new RangeError("Invalid status code");return new Gt(null,{status:i,headers:{location:v}})},r.DOMException=e.DOMException;try{new r.DOMException}catch{r.DOMException=function(i,o){this.message=i,this.name=o;var h=Error(i);this.stack=h.stack},r.DOMException.prototype=Object.create(Error.prototype),r.DOMException.prototype.constructor=r.DOMException}function rt(v,i){return new Promise(function(o,h){var s=new Lt(v,i);if(s.signal&&s.signal.aborted)return h(new r.DOMException("Aborted","AbortError"));var u=new XMLHttpRequest;function p(){u.abort()}u.onload=function(){var g={status:u.status,statusText:u.statusText,headers:$t(u.getAllResponseHeaders()||"")};g.url="responseURL"in u?u.responseURL:g.headers.get("X-Request-URL");var l="response"in u?u.response:u.responseText;o(new Gt(l,g))},u.onerror=function(){h(new TypeError("Network request failed"))},u.ontimeout=function(){h(new TypeError("Network request failed"))},u.onabort=function(){h(new r.DOMException("Aborted","AbortError"))},u.open(s.method,s.url,!0),s.credentials==="include"?u.withCredentials=!0:s.credentials==="omit"&&(u.withCredentials=!1),"responseType"in u&&a.blob&&(u.responseType="blob"),s.headers.forEach(function(g,l){u.setRequestHeader(l,g)}),s.signal&&(s.signal.addEventListener("abort",p),u.onreadystatechange=function(){u.readyState===4&&s.signal.removeEventListener("abort",p)}),u.send(typeof s._bodyInit>"u"?null:s._bodyInit)})}return rt.polyfill=!0,e.fetch||(e.fetch=rt,e.Headers=C,e.Request=Lt,e.Response=Gt),r.Headers=C,r.Request=Lt,r.Response=Gt,r.fetch=rt,Object.defineProperty(r,"__esModule",{value:!0}),r}({})})(Ws);Ws.fetch.ponyfill=!0;delete Ws.fetch.polyfill;var la=Ws;fn=la.fetch;fn.default=la.fetch;fn.fetch=la.fetch;fn.Headers=la.Headers;fn.Request=la.Request;fn.Response=la.Response;d2.exports=fn});var bl=P((bz,m2)=>{M();var ml=Object.defineProperty,AI=Object.getOwnPropertyDescriptor,_I=Object.getOwnPropertyNames,II=Object.prototype.hasOwnProperty,EI=(e,t)=>{for(var r in t)ml(e,r,{get:t[r],enumerable:!0})},SI=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of _I(t))!II.call(e,n)&&n!==r&&ml(e,n,{get:()=>t[n],enumerable:!(a=AI(t,n))||a.enumerable});return e},BI=e=>SI(ml({},"__esModule",{value:!0}),e),v2={};EI(v2,{Channel:()=>g2,LongPoll:()=>Xs,Presence:()=>po,Serializer:()=>go,Socket:()=>DI});m2.exports=BI(v2);var mo=e=>typeof e=="function"?e:function(){return e},CI=typeof self<"u"?self:null,vo=typeof window<"u"?window:null,bo=CI||vo||bo,qI="2.0.0",Fi={connecting:0,open:1,closing:2,closed:3},RI=1e4,TI=1e3,Kr={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},an={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},gl={longpoll:"longpoll",websocket:"websocket"},OI={complete:4},Js=class{constructor(e,t,r,a){this.channel=e,this.event=t,this.payload=r||function(){return{}},this.receivedResp=null,this.timeout=a,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(e){this.timeout=e,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(e,t){return this.hasReceived(e)&&t(this.receivedResp.response),this.recHooks.push({status:e,callback:t}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:e,response:t,_ref:r}){this.recHooks.filter(a=>a.status===e).forEach(a=>a.callback(t))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,e=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=e,this.matchReceive(e)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}trigger(e,t){this.channel.trigger(this.refEvent,{status:e,response:t})}},p2=class{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},g2=class{constructor(e,t,r){this.state=Kr.closed,this.topic=e,this.params=mo(t||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new Js(this,an.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new p2(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Kr.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(a=>a.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=Kr.closed,this.socket.remove(this)}),this.onError(a=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,a),this.isJoining()&&this.joinPush.reset(),this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new Js(this,an.leave,mo({}),this.timeout).send(),this.state=Kr.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(an.reply,(a,n)=>{this.trigger(this.replyEventName(n),a)})}join(e=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=e,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(e){this.on(an.close,e)}onError(e){return this.on(an.error,t=>e(t))}on(e,t){let r=this.bindingRef++;return this.bindings.push({event:e,ref:r,callback:t}),r}off(e,t){this.bindings=this.bindings.filter(r=>!(r.event===e&&(typeof t>"u"||t===r.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,r=this.timeout){if(t=t||{},!this.joinedOnce)throw new Error(`tried to push '${e}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let a=new Js(this,e,function(){return t},r);return this.canPush()?a.send():(a.startTimeout(),this.pushBuffer.push(a)),a}leave(e=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Kr.leaving;let t=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(an.close,"leave")},r=new Js(this,an.leave,mo({}),e);return r.receive("ok",()=>t()).receive("timeout",()=>t()),r.send(),this.canPush()||r.trigger("ok",{}),r}onMessage(e,t,r){return t}isMember(e,t,r,a){return this.topic!==e?!1:a&&a!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:e,event:t,payload:r,joinRef:a}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Kr.joining,this.joinPush.resend(e))}trigger(e,t,r,a){let n=this.onMessage(e,t,r,a);if(t&&!n)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let d=this.bindings.filter(m=>m.event===e);for(let m=0;m{let b=this.parseJSON(e.responseText);m&&m(b)},d&&(e.ontimeout=d),e.onprogress=()=>{},e.send(a),e}static xhrRequest(e,t,r,a,n,d,m,b){return e.open(t,r,!0),e.timeout=d,e.setRequestHeader("Content-Type",a),e.onerror=()=>b&&b(null),e.onreadystatechange=()=>{if(e.readyState===OI.complete&&b){let A=this.parseJSON(e.responseText);b(A)}},m&&(e.ontimeout=m),e.send(n),e}static parseJSON(e){if(!e||e==="")return null;try{return JSON.parse(e)}catch{return console&&console.log("failed to parse JSON response",e),null}}static serialize(e,t){let r=[];for(var a in e){if(!Object.prototype.hasOwnProperty.call(e,a))continue;let n=t?`${t}[${a}]`:a,d=e[a];typeof d=="object"?r.push(this.serialize(d,n)):r.push(encodeURIComponent(n)+"="+encodeURIComponent(d))}return r.join("&")}static appendParams(e,t){if(Object.keys(t).length===0)return e;let r=e.match(/\?/)?"&":"?";return`${e}${r}${this.serialize(t)}`}},Xs=class{constructor(e){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(e),this.readyState=Fi.connecting,this.poll()}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+gl.websocket),"$1/"+gl.longpoll)}endpointURL(){return t0.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,r){this.close(e,t,r),this.readyState=Fi.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===Fi.open||this.readyState===Fi.connecting}poll(){this.ajax("GET",null,()=>this.ontimeout(),e=>{if(e){var{status:t,token:r,messages:a}=e;this.token=r}else t=0;switch(t){case 200:a.forEach(n=>{setTimeout(()=>this.onmessage({data:n}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Fi.open,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${t}`)}})}send(e){this.ajax("POST",e,()=>this.onerror("timeout"),t=>{(!t||t.status!==200)&&(this.onerror(t&&t.status),this.closeAndRetry(1011,"internal server error",!1))})}close(e,t,r){for(let n of this.reqs)n.abort();this.readyState=Fi.closed;let a=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:e,reason:t,wasClean:r});typeof CloseEvent<"u"?this.onclose(new CloseEvent("close",a)):this.onclose(a)}ajax(e,t,r,a){let n,d=()=>{this.reqs.delete(n),r()};n=t0.request(e,this.endpointURL(),"application/json",t,this.timeout,d,m=>{this.reqs.delete(n),this.isActive()&&a(m)}),this.reqs.add(n)}},po=class{constructor(e,t={}){let r=t.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=e,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(r.state,a=>{let{onJoin:n,onLeave:d,onSync:m}=this.caller;this.joinRef=this.channel.joinRef(),this.state=po.syncState(this.state,a,n,d),this.pendingDiffs.forEach(b=>{this.state=po.syncDiff(this.state,b,n,d)}),this.pendingDiffs=[],m()}),this.channel.on(r.diff,a=>{let{onJoin:n,onLeave:d,onSync:m}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(a):(this.state=po.syncDiff(this.state,a,n,d),m())})}onJoin(e){this.caller.onJoin=e}onLeave(e){this.caller.onLeave=e}onSync(e){this.caller.onSync=e}list(e){return po.list(this.state,e)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(e,t,r,a){let n=this.clone(e),d={},m={};return this.map(n,(b,A)=>{t[b]||(m[b]=A)}),this.map(t,(b,A)=>{let B=n[b];if(B){let C=A.metas.map(Z=>Z.phx_ref),D=B.metas.map(Z=>Z.phx_ref),K=A.metas.filter(Z=>D.indexOf(Z.phx_ref)<0),j=B.metas.filter(Z=>C.indexOf(Z.phx_ref)<0);K.length>0&&(d[b]=A,d[b].metas=K),j.length>0&&(m[b]=this.clone(B),m[b].metas=j)}else d[b]=A}),this.syncDiff(n,{joins:d,leaves:m},r,a)}static syncDiff(e,t,r,a){let{joins:n,leaves:d}=this.clone(t);return r||(r=function(){}),a||(a=function(){}),this.map(n,(m,b)=>{let A=e[m];if(e[m]=this.clone(b),A){let B=e[m].metas.map(D=>D.phx_ref),C=A.metas.filter(D=>B.indexOf(D.phx_ref)<0);e[m].metas.unshift(...C)}r(m,A,b)}),this.map(d,(m,b)=>{let A=e[m];if(!A)return;let B=b.metas.map(C=>C.phx_ref);A.metas=A.metas.filter(C=>B.indexOf(C.phx_ref)<0),a(m,A,b),A.metas.length===0&&delete e[m]}),e}static list(e,t){return t||(t=function(r,a){return a}),this.map(e,(r,a)=>t(r,a))}static map(e,t){return Object.getOwnPropertyNames(e).map(r=>t(r,e[r]))}static clone(e){return JSON.parse(JSON.stringify(e))}},go={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(e,t){if(e.payload.constructor===ArrayBuffer)return t(this.binaryEncode(e));{let r=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(r))}},decode(e,t){if(e.constructor===ArrayBuffer)return t(this.binaryDecode(e));{let[r,a,n,d,m]=JSON.parse(e);return t({join_ref:r,ref:a,topic:n,event:d,payload:m})}},binaryEncode(e){let{join_ref:t,ref:r,event:a,topic:n,payload:d}=e,m=this.META_LENGTH+t.length+r.length+n.length+a.length,b=new ArrayBuffer(this.HEADER_LENGTH+m),A=new DataView(b),B=0;A.setUint8(B++,this.KINDS.push),A.setUint8(B++,t.length),A.setUint8(B++,r.length),A.setUint8(B++,n.length),A.setUint8(B++,a.length),Array.from(t,D=>A.setUint8(B++,D.charCodeAt(0))),Array.from(r,D=>A.setUint8(B++,D.charCodeAt(0))),Array.from(n,D=>A.setUint8(B++,D.charCodeAt(0))),Array.from(a,D=>A.setUint8(B++,D.charCodeAt(0)));var C=new Uint8Array(b.byteLength+d.byteLength);return C.set(new Uint8Array(b),0),C.set(new Uint8Array(d),b.byteLength),C.buffer},binaryDecode(e){let t=new DataView(e),r=t.getUint8(0),a=new TextDecoder;switch(r){case this.KINDS.push:return this.decodePush(e,t,a);case this.KINDS.reply:return this.decodeReply(e,t,a);case this.KINDS.broadcast:return this.decodeBroadcast(e,t,a)}},decodePush(e,t,r){let a=t.getUint8(1),n=t.getUint8(2),d=t.getUint8(3),m=this.HEADER_LENGTH+this.META_LENGTH-1,b=r.decode(e.slice(m,m+a));m=m+a;let A=r.decode(e.slice(m,m+n));m=m+n;let B=r.decode(e.slice(m,m+d));m=m+d;let C=e.slice(m,e.byteLength);return{join_ref:b,ref:null,topic:A,event:B,payload:C}},decodeReply(e,t,r){let a=t.getUint8(1),n=t.getUint8(2),d=t.getUint8(3),m=t.getUint8(4),b=this.HEADER_LENGTH+this.META_LENGTH,A=r.decode(e.slice(b,b+a));b=b+a;let B=r.decode(e.slice(b,b+n));b=b+n;let C=r.decode(e.slice(b,b+d));b=b+d;let D=r.decode(e.slice(b,b+m));b=b+m;let K=e.slice(b,e.byteLength),j={status:D,response:K};return{join_ref:A,ref:B,topic:C,event:an.reply,payload:j}},decodeBroadcast(e,t,r){let a=t.getUint8(1),n=t.getUint8(2),d=this.HEADER_LENGTH+2,m=r.decode(e.slice(d,d+a));d=d+a;let b=r.decode(e.slice(d,d+n));d=d+n;let A=e.slice(d,e.byteLength);return{join_ref:null,ref:null,topic:m,event:b,payload:A}}},DI=class{constructor(e,t={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=t.timeout||RI,this.transport=t.transport||bo.WebSocket||Xs,this.establishedConnections=0,this.defaultEncoder=go.encode.bind(go),this.defaultDecoder=go.decode.bind(go),this.closeWasClean=!1,this.binaryType=t.binaryType||"arraybuffer",this.connectClock=1,this.transport!==Xs?(this.encode=t.encode||this.defaultEncoder,this.decode=t.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let r=null;vo&&vo.addEventListener&&(vo.addEventListener("pagehide",a=>{this.conn&&(this.disconnect(),r=this.connectClock)}),vo.addEventListener("pageshow",a=>{r===this.connectClock&&(r=null,this.connect())})),this.heartbeatIntervalMs=t.heartbeatIntervalMs||3e4,this.rejoinAfterMs=a=>t.rejoinAfterMs?t.rejoinAfterMs(a):[1e3,2e3,5e3][a-1]||1e4,this.reconnectAfterMs=a=>t.reconnectAfterMs?t.reconnectAfterMs(a):[10,50,100,150,200,250,500,1e3,2e3][a-1]||5e3,this.logger=t.logger||null,this.longpollerTimeout=t.longpollerTimeout||2e4,this.params=mo(t.params||{}),this.endPoint=`${e}/${gl.websocket}`,this.vsn=t.vsn||qI,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new p2(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}getLongPollTransport(){return Xs}replaceTransport(e){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.sendBuffer=[],this.conn&&(this.conn.close(),this.conn=null),this.transport=e}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let e=t0.appendParams(t0.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return e.charAt(0)!=="/"?e:e.charAt(1)==="/"?`${this.protocol()}:${e}`:`${this.protocol()}://${location.host}${e}`}disconnect(e,t,r){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(e,t,r)}connect(e){e&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=mo(e)),!this.conn&&(this.connectClock++,this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=t=>this.onConnError(t),this.conn.onmessage=t=>this.onConnMessage(t),this.conn.onclose=t=>this.onConnClose(t))}log(e,t,r){this.logger(e,t,r)}hasLogger(){return this.logger!==null}onOpen(e){let t=this.makeRef();return this.stateChangeCallbacks.open.push([t,e]),t}onClose(e){let t=this.makeRef();return this.stateChangeCallbacks.close.push([t,e]),t}onError(e){let t=this.makeRef();return this.stateChangeCallbacks.error.push([t,e]),t}onMessage(e){let t=this.makeRef();return this.stateChangeCallbacks.message.push([t,e]),t}ping(e){if(!this.isConnected())return!1;let t=this.makeRef(),r=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:t});let a=this.onMessage(n=>{n.ref===t&&(this.off([a]),e(Date.now()-r))});return!0}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,e])=>e())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.triggerChanError(),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),TI,"heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(e,t,r){if(!this.conn)return e&&e();this.waitForBufferDone(()=>{this.conn&&(t?this.conn.close(t,r||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null),e&&e()})})}waitForBufferDone(e,t=1){if(t===5||!this.conn||!this.conn.bufferedAmount){e();return}setTimeout(()=>{this.waitForBufferDone(e,t+1)},150*t)}waitForSocketClosed(e,t=1){if(t===5||!this.conn||this.conn.readyState===Fi.closed){e();return}setTimeout(()=>{this.waitForSocketClosed(e,t+1)},150*t)}onConnClose(e){let t=e&&e.code;this.hasLogger()&&this.log("transport","close",e),this.triggerChanError(),this.clearHeartbeats(),!this.closeWasClean&&t!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,r])=>r(e))}onConnError(e){this.hasLogger()&&this.log("transport",e);let t=this.transport,r=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,a])=>{a(e,t,r)}),(t===this.transport||r>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(e=>{e.isErrored()||e.isLeaving()||e.isClosed()||e.trigger(an.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case Fi.connecting:return"connecting";case Fi.open:return"open";case Fi.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(e){this.off(e.stateChangeRefs),this.channels=this.channels.filter(t=>t.joinRef()!==e.joinRef())}off(e){for(let t in this.stateChangeCallbacks)this.stateChangeCallbacks[t]=this.stateChangeCallbacks[t].filter(([r])=>e.indexOf(r)===-1)}channel(e,t={}){let r=new g2(e,t,this);return this.channels.push(r),r}push(e){if(this.hasLogger()){let{topic:t,event:r,payload:a,ref:n,join_ref:d}=e;this.log("push",`${t} ${r} (${d}, ${n})`,a)}this.isConnected()?this.encode(e,t=>this.conn.send(t)):this.sendBuffer.push(()=>this.encode(e,t=>this.conn.send(t)))}makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(e=>e()),this.sendBuffer=[])}onConnMessage(e){this.decode(e.data,t=>{let{topic:r,event:a,payload:n,ref:d,join_ref:m}=t;d&&d===this.pendingHeartbeatRef&&(this.clearHeartbeats(),this.pendingHeartbeatRef=null,this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${n.status||""} ${r} ${a} ${d&&"("+d+")"||""}`,n);for(let b=0;br.topic===e&&(r.isJoined()||r.isJoining()));t&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${e}"`),t.leave())}}});var y2=P((Sz,b2)=>{M();var ca=null;typeof WebSocket<"u"?ca=WebSocket:typeof MozWebSocket<"u"?ca=MozWebSocket:typeof global<"u"?ca=global.WebSocket||global.MozWebSocket:typeof window<"u"?ca=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(ca=self.WebSocket||self.MozWebSocket);b2.exports=ca});var Dn=P((Cz,x2)=>{M();var kI=x2.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=kI)});var e0=P((Rz,w2)=>{M();var PI=w2.exports={version:"2.6.0"};typeof __e=="number"&&(__e=PI)});var pf=P((Oz,M2)=>{M();M2.exports=function(e){return typeof e=="object"?e!==null:typeof e=="function"}});var da=P((kz,A2)=>{M();var UI=pf();A2.exports=function(e){if(!UI(e))throw TypeError(e+" is not an object!");return e}});var yo=P((Uz,_2)=>{M();_2.exports=function(e){try{return!!e()}catch{return!0}}});var va=P((Nz,I2)=>{M();I2.exports=!yo()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var xl=P((Kz,S2)=>{M();var E2=pf(),yl=Dn().document,LI=E2(yl)&&E2(yl.createElement);S2.exports=function(e){return LI?yl.createElement(e):{}}});var C2=P((Hz,B2)=>{M();B2.exports=!va()&&!yo()(function(){return Object.defineProperty(xl()("div"),"a",{get:function(){return 7}}).a!=7})});var R2=P((zz,q2)=>{M();var r0=pf();q2.exports=function(e,t){if(!r0(e))return e;var r,a;if(t&&typeof(r=e.toString)=="function"&&!r0(a=r.call(e))||typeof(r=e.valueOf)=="function"&&!r0(a=r.call(e))||!t&&typeof(r=e.toString)=="function"&&!r0(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}});var xo=P(O2=>{M();var T2=da(),NI=C2(),FI=R2(),KI=Object.defineProperty;O2.f=va()?Object.defineProperty:function(t,r,a){if(T2(t),r=FI(r,!0),T2(a),NI)try{return KI(t,r,a)}catch{}if("get"in a||"set"in a)throw TypeError("Accessors not supported!");return"value"in a&&(t[r]=a.value),t}});var wl=P(($z,D2)=>{M();D2.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}});var kn=P((Wz,k2)=>{M();var QI=xo(),HI=wl();k2.exports=va()?function(e,t,r){return QI.f(e,t,HI(1,r))}:function(e,t,r){return e[t]=r,e}});var wo=P((Xz,P2)=>{M();var jI={}.hasOwnProperty;P2.exports=function(e,t){return jI.call(e,t)}});var i0=P((eV,U2)=>{M();var zI=0,VI=Math.random();U2.exports=function(e){return"Symbol(".concat(e===void 0?"":e,")_",(++zI+VI).toString(36))}});var Mo=P((iV,N2)=>{M();var YI=Dn(),n0=kn(),L2=wo(),Ml=i0()("src"),Al="toString",_l=Function[Al],GI=(""+_l).split(Al);e0().inspectSource=function(e){return _l.call(e)};(N2.exports=function(e,t,r,a){var n=typeof r=="function";n&&(L2(r,"name")||n0(r,"name",t)),e[t]!==r&&(n&&(L2(r,Ml)||n0(r,Ml,e[t]?""+e[t]:GI.join(String(t)))),e===YI?e[t]=r:a?e[t]?e[t]=r:n0(e,t,r):(delete e[t],n0(e,t,r)))})(Function.prototype,Al,function(){return typeof this=="function"&&this[Ml]||_l.call(this)})});var Il=P((fV,F2)=>{M();F2.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}});var El=P((oV,K2)=>{M();var $I=Il();K2.exports=function(e,t,r){if($I(e),t===void 0)return e;switch(r){case 1:return function(a){return e.call(t,a)};case 2:return function(a,n){return e.call(t,a,n)};case 3:return function(a,n,d){return e.call(t,a,n,d)}}return function(){return e.apply(t,arguments)}}});var Wr=P((hV,H2)=>{M();var pa=Dn(),f0=e0(),ZI=kn(),WI=Mo(),Q2=El(),Sl="prototype",Br=function(e,t,r){var a=e&Br.F,n=e&Br.G,d=e&Br.S,m=e&Br.P,b=e&Br.B,A=n?pa:d?pa[t]||(pa[t]={}):(pa[t]||{})[Sl],B=n?f0:f0[t]||(f0[t]={}),C=B[Sl]||(B[Sl]={}),D,K,j,Z;n&&(r=t);for(D in r)K=!a&&A&&A[D]!==void 0,j=(K?A:r)[D],Z=b&&K?Q2(j,pa):m&&typeof j=="function"?Q2(Function.call,j):j,A&&WI(A,D,j,e&Br.U),B[D]!=j&&ZI(B,D,Z),m&&C[D]!=j&&(C[D]=j)};pa.core=f0;Br.F=1;Br.G=2;Br.S=4;Br.P=8;Br.B=16;Br.W=32;Br.U=64;Br.R=128;H2.exports=Br});var Ao=P((lV,j2)=>{M();var JI={}.toString;j2.exports=function(e){return JI.call(e).slice(8,-1)}});var Bl=P((dV,z2)=>{M();var XI=Ao();z2.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return XI(e)=="String"?e.split(""):Object(e)}});var ga=P((pV,V2)=>{M();V2.exports=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e}});var Cl=P((mV,Y2)=>{M();var tE=ga();Y2.exports=function(e){return Object(tE(e))}});var a0=P((yV,G2)=>{M();var eE=Math.ceil,rE=Math.floor;G2.exports=function(e){return isNaN(e=+e)?0:(e>0?rE:eE)(e)}});var o0=P((wV,$2)=>{M();var iE=a0(),nE=Math.min;$2.exports=function(e){return e>0?nE(iE(e),9007199254740991):0}});var W2=P((AV,Z2)=>{M();var fE=Ao();Z2.exports=Array.isArray||function(t){return fE(t)=="Array"}});var ql=P((IV,J2)=>{M();J2.exports=!1});var Rl=P((SV,rg)=>{M();var aE=e0(),X2=Dn(),tg="__core-js_shared__",eg=X2[tg]||(X2[tg]={});(rg.exports=function(e,t){return eg[e]||(eg[e]=t!==void 0?t:{})})("versions",[]).push({version:aE.version,mode:ql()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var mi=P((CV,ng)=>{M();var Tl=Rl()("wks"),oE=i0(),Ol=Dn().Symbol,ig=typeof Ol=="function",sE=ng.exports=function(e){return Tl[e]||(Tl[e]=ig&&Ol[e]||(ig?Ol:oE)("Symbol."+e))};sE.store=Tl});var og=P((RV,ag)=>{M();var hE=pf(),fg=W2(),uE=mi()("species");ag.exports=function(e){var t;return fg(e)&&(t=e.constructor,typeof t=="function"&&(t===Array||fg(t.prototype))&&(t=void 0),hE(t)&&(t=t[uE],t===null&&(t=void 0))),t===void 0?Array:t}});var hg=P((OV,sg)=>{M();var lE=og();sg.exports=function(e,t){return new(lE(e))(t)}});var ma=P((kV,ug)=>{M();var cE=El(),dE=Bl(),vE=Cl(),pE=o0(),gE=hg();ug.exports=function(e,t){var r=e==1,a=e==2,n=e==3,d=e==4,m=e==6,b=e==5||m,A=t||gE;return function(B,C,D){for(var K=vE(B),j=dE(K),Z=cE(C,D,3),qt=pE(j.length),Rt=0,J=r?A(B,qt):a?A(B,0):void 0,Ot,ht;qt>Rt;Rt++)if((b||Rt in j)&&(Ot=j[Rt],ht=Z(Ot,Rt,K),e)){if(r)J[Rt]=ht;else if(ht)switch(e){case 3:return!0;case 5:return Ot;case 6:return Rt;case 2:J.push(Ot)}else if(d)return!1}return m?-1:n||d?d:J}}});var _o=P((UV,lg)=>{M();var Dl=mi()("unscopables"),kl=Array.prototype;kl[Dl]==null&&kn()(kl,Dl,{});lg.exports=function(e){kl[Dl][e]=!0}});var dg=P(()=>{"use strict";M();var Pl=Wr(),mE=ma()(6),Ul="findIndex",cg=!0;Ul in[]&&Array(1)[Ul](function(){cg=!1});Pl(Pl.P+Pl.F*cg,"Array",{findIndex:function(t){return mE(this,t,arguments.length>1?arguments[1]:void 0)}});_o()(Ul)});var pg=P(()=>{"use strict";M();var Ll=Wr(),bE=ma()(5),Nl="find",vg=!0;Nl in[]&&Array(1)[Nl](function(){vg=!1});Ll(Ll.P+Ll.F*vg,"Array",{find:function(t){return bE(this,t,arguments.length>1?arguments[1]:void 0)}});_o()(Nl)});var bg=P(()=>{M();var yE=xo().f,gg=Function.prototype,xE=/^\s*function ([^ (]*)/,mg="name";mg in gg||va()&&yE(gg,mg,{configurable:!0,get:function(){try{return(""+this).match(xE)[1]}catch{return""}}})});var Kl=P(Fl=>{"use strict";M();Fl.__esModule=!0;Fl.default=function(e,t){if(e!==t)throw new TypeError("Cannot instantiate an arrow function")}});var xg=P(Pn=>{"use strict";M();Object.defineProperty(Pn,"__esModule",{value:!0});Pn.flip=wE;Pn.constant=ME;Pn.on=AE;Pn.compose=_E;Pn.pipe=IE;Pn.curry=EE;function wE(e){return function(t,r){return e(r,t)}}function ME(e){return function(){return e}}function AE(e,t){return function(r,a){return e(t(r),t(a))}}function _E(){for(var e=this,t=arguments.length,r=Array(t),a=0;a-1;b--)m=r[b].call(e,m);return m}}function IE(){for(var e=this,t=arguments.length,r=Array(t),a=0;a=t?e.apply(this,a):yg(e,t,a)}}function EE(e){return yg(e,e.length,[])}});var s0=P((JV,wg)=>{M();var SE=Math.ceil,BE=Math.floor;wg.exports=function(e){return isNaN(e=+e)?0:(e>0?BE:SE)(e)}});var h0=P((tY,Mg)=>{M();Mg.exports=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e}});var _g=P((rY,Ag)=>{M();var CE=s0(),qE=h0();Ag.exports=function(e){return function(t,r){var a=String(qE(t)),n=CE(r),d=a.length,m,b;return n<0||n>=d?e?"":void 0:(m=a.charCodeAt(n),m<55296||m>56319||n+1===d||(b=a.charCodeAt(n+1))<56320||b>57343?e?a.charAt(n):m:e?a.slice(n,n+2):(m-55296<<10)+(b-56320)+65536)}}});var Io=P((nY,Ig)=>{M();Ig.exports=!0});var on=P((aY,Eg)=>{M();var RE=Eg.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=RE)});var Cr=P((sY,Sg)=>{M();var TE=Sg.exports={version:"2.6.0"};typeof __e=="number"&&(__e=TE)});var Cg=P((uY,Bg)=>{M();Bg.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}});var Ql=P((cY,qg)=>{M();var OE=Cg();qg.exports=function(e,t,r){if(OE(e),t===void 0)return e;switch(r){case 1:return function(a){return e.call(t,a)};case 2:return function(a,n){return e.call(t,a,n)};case 3:return function(a,n,d){return e.call(t,a,n,d)}}return function(){return e.apply(t,arguments)}}});var gf=P((vY,Rg)=>{M();Rg.exports=function(e){return typeof e=="object"?e!==null:typeof e=="function"}});var mf=P((gY,Tg)=>{M();var DE=gf();Tg.exports=function(e){if(!DE(e))throw TypeError(e+" is not an object!");return e}});var bf=P((bY,Og)=>{M();Og.exports=function(e){try{return!!e()}catch{return!0}}});var Un=P((xY,Dg)=>{M();Dg.exports=!bf()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var jl=P((MY,Pg)=>{M();var kg=gf(),Hl=on().document,kE=kg(Hl)&&kg(Hl.createElement);Pg.exports=function(e){return kE?Hl.createElement(e):{}}});var zl=P((_Y,Ug)=>{M();Ug.exports=!Un()&&!bf()(function(){return Object.defineProperty(jl()("div"),"a",{get:function(){return 7}}).a!=7})});var l0=P((EY,Lg)=>{M();var u0=gf();Lg.exports=function(e,t){if(!u0(e))return e;var r,a;if(t&&typeof(r=e.toString)=="function"&&!u0(a=r.call(e))||typeof(r=e.valueOf)=="function"&&!u0(a=r.call(e))||!t&&typeof(r=e.toString)=="function"&&!u0(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}});var sn=P(Fg=>{M();var Ng=mf(),PE=zl(),UE=l0(),LE=Object.defineProperty;Fg.f=Un()?Object.defineProperty:function(t,r,a){if(Ng(t),r=UE(r,!0),Ng(a),PE)try{return LE(t,r,a)}catch{}if("get"in a||"set"in a)throw TypeError("Accessors not supported!");return"value"in a&&(t[r]=a.value),t}});var ba=P((qY,Kg)=>{M();Kg.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}});var yf=P((TY,Qg)=>{M();var NE=sn(),FE=ba();Qg.exports=Un()?function(e,t,r){return NE.f(e,t,FE(1,r))}:function(e,t,r){return e[t]=r,e}});var Ln=P((DY,Hg)=>{M();var KE={}.hasOwnProperty;Hg.exports=function(e,t){return KE.call(e,t)}});var hn=P((PY,zg)=>{M();var c0=on(),Vl=Cr(),jg=Ql(),QE=yf(),HE=Ln(),d0="prototype",xr=function(e,t,r){var a=e&xr.F,n=e&xr.G,d=e&xr.S,m=e&xr.P,b=e&xr.B,A=e&xr.W,B=n?Vl:Vl[t]||(Vl[t]={}),C=B[d0],D=n?c0:d?c0[t]:(c0[t]||{})[d0],K,j,Z;n&&(r=t);for(K in r)j=!a&&D&&D[K]!==void 0,!(j&&HE(B,K))&&(Z=j?D[K]:r[K],B[K]=n&&typeof D[K]!="function"?r[K]:b&&j?jg(Z,c0):A&&D[K]==Z?function(qt){var Rt=function(J,Ot,ht){if(this instanceof qt){switch(arguments.length){case 0:return new qt;case 1:return new qt(J);case 2:return new qt(J,Ot)}return new qt(J,Ot,ht)}return qt.apply(this,arguments)};return Rt[d0]=qt[d0],Rt}(Z):m&&typeof Z=="function"?jg(Function.call,Z):Z,m&&((B.virtual||(B.virtual={}))[K]=Z,e&xr.R&&C&&!C[K]&&QE(C,K,Z)))};xr.F=1;xr.G=2;xr.S=4;xr.P=8;xr.B=16;xr.W=32;xr.U=64;xr.R=128;zg.exports=xr});var Yl=P((LY,Vg)=>{M();Vg.exports=yf()});var xf=P((FY,Yg)=>{M();Yg.exports={}});var v0=P((QY,Gg)=>{M();var jE={}.toString;Gg.exports=function(e){return jE.call(e).slice(8,-1)}});var Gl=P((jY,$g)=>{M();var zE=v0();$g.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return zE(e)=="String"?e.split(""):Object(e)}});var Nn=P((VY,Zg)=>{M();var VE=Gl(),YE=h0();Zg.exports=function(e){return VE(YE(e))}});var $l=P((GY,Wg)=>{M();var GE=s0(),$E=Math.min;Wg.exports=function(e){return e>0?$E(GE(e),9007199254740991):0}});var Xg=P((ZY,Jg)=>{M();var ZE=s0(),WE=Math.max,JE=Math.min;Jg.exports=function(e,t){return e=ZE(e),e<0?WE(e+t,0):JE(e,t)}});var em=P((JY,tm)=>{M();var XE=Nn(),tS=$l(),eS=Xg();tm.exports=function(e){return function(t,r,a){var n=XE(t),d=tS(n.length),m=eS(a,d),b;if(e&&r!=r){for(;d>m;)if(b=n[m++],b!=b)return!0}else for(;d>m;m++)if((e||m in n)&&n[m]===r)return e||m||0;return!e&&-1}}});var p0=P((tG,fm)=>{M();var rS=Cr(),rm=on(),im="__core-js_shared__",nm=rm[im]||(rm[im]={});(fm.exports=function(e,t){return nm[e]||(nm[e]=t!==void 0?t:{})})("versions",[]).push({version:rS.version,mode:Io()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var Eo=P((rG,am)=>{M();var iS=0,nS=Math.random();am.exports=function(e){return"Symbol(".concat(e===void 0?"":e,")_",(++iS+nS).toString(36))}});var g0=P((nG,sm)=>{M();var om=p0()("keys"),fS=Eo();sm.exports=function(e){return om[e]||(om[e]=fS(e))}});var Zl=P((aG,um)=>{M();var hm=Ln(),aS=Nn(),oS=em()(!1),sS=g0()("IE_PROTO");um.exports=function(e,t){var r=aS(e),a=0,n=[],d;for(d in r)d!=sS&&hm(r,d)&&n.push(d);for(;t.length>a;)hm(r,d=t[a++])&&(~oS(n,d)||n.push(d));return n}});var m0=P((sG,lm)=>{M();lm.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var wf=P((uG,cm)=>{M();var hS=Zl(),uS=m0();cm.exports=Object.keys||function(t){return hS(t,uS)}});var vm=P((cG,dm)=>{M();var lS=sn(),cS=mf(),dS=wf();dm.exports=Un()?Object.defineProperties:function(t,r){cS(t);for(var a=dS(r),n=a.length,d=0,m;n>d;)lS.f(t,m=a[d++],r[m]);return t}});var mm=P((vG,gm)=>{M();var pm=on().document;gm.exports=pm&&pm.documentElement});var Xl=P((gG,ym)=>{M();var vS=mf(),pS=vm(),bm=m0(),gS=g0()("IE_PROTO"),Wl=function(){},Jl="prototype",b0=function(){var e=jl()("iframe"),t=bm.length,r="<",a=">",n;for(e.style.display="none",mm().appendChild(e),e.src="javascript:",n=e.contentWindow.document,n.open(),n.write(r+"script"+a+"document.F=Object"+r+"/script"+a),n.close(),b0=n.F;t--;)delete b0[Jl][bm[t]];return b0()};ym.exports=Object.create||function(t,r){var a;return t!==null?(Wl[Jl]=vS(t),a=new Wl,Wl[Jl]=null,a[gS]=t):a=b0(),r===void 0?a:pS(a,r)}});var Jr=P((bG,wm)=>{M();var tc=p0()("wks"),mS=Eo(),ec=on().Symbol,xm=typeof ec=="function",bS=wm.exports=function(e){return tc[e]||(tc[e]=xm&&ec[e]||(xm?ec:mS)("Symbol."+e))};bS.store=tc});var y0=P((xG,Am)=>{M();var yS=sn().f,xS=Ln(),Mm=Jr()("toStringTag");Am.exports=function(e,t,r){e&&!xS(e=r?e:e.prototype,Mm)&&yS(e,Mm,{configurable:!0,value:t})}});var Em=P((MG,Im)=>{"use strict";M();var wS=Xl(),MS=ba(),AS=y0(),_m={};yf()(_m,Jr()("iterator"),function(){return this});Im.exports=function(e,t,r){e.prototype=wS(_m,{next:MS(1,r)}),AS(e,t+" Iterator")}});var So=P((_G,Sm)=>{M();var _S=h0();Sm.exports=function(e){return Object(_S(e))}});var qm=P((EG,Cm)=>{M();var IS=Ln(),ES=So(),Bm=g0()("IE_PROTO"),SS=Object.prototype;Cm.exports=Object.getPrototypeOf||function(e){return e=ES(e),IS(e,Bm)?e[Bm]:typeof e.constructor=="function"&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?SS:null}});var nc=P((BG,Pm)=>{"use strict";M();var Rm=Io(),rc=hn(),BS=Yl(),Tm=yf(),Om=xf(),CS=Em(),qS=y0(),RS=qm(),Bo=Jr()("iterator"),ic=!([].keys&&"next"in[].keys()),TS="@@iterator",Dm="keys",x0="values",km=function(){return this};Pm.exports=function(e,t,r,a,n,d,m){CS(r,t,a);var b=function(ht){if(!ic&&ht in D)return D[ht];switch(ht){case Dm:return function(){return new r(this,ht)};case x0:return function(){return new r(this,ht)}}return function(){return new r(this,ht)}},A=t+" Iterator",B=n==x0,C=!1,D=e.prototype,K=D[Bo]||D[TS]||n&&D[n],j=K||b(n),Z=n?B?b("entries"):j:void 0,qt=t=="Array"&&D.entries||K,Rt,J,Ot;if(qt&&(Ot=RS(qt.call(new e)),Ot!==Object.prototype&&Ot.next&&(qS(Ot,A,!0),!Rm&&typeof Ot[Bo]!="function"&&Tm(Ot,Bo,km))),B&&K&&K.name!==x0&&(C=!0,j=function(){return K.call(this)}),(!Rm||m)&&(ic||C||!D[Bo])&&Tm(D,Bo,j),Om[t]=j,Om[A]=km,n)if(Rt={values:B?j:b(x0),keys:d?j:b(Dm),entries:Z},m)for(J in Rt)J in D||BS(D,J,Rt[J]);else rc(rc.P+rc.F*(ic||C),t,Rt);return Rt}});var Co=P(()=>{"use strict";M();var OS=_g()(!0);nc()(String,"String",function(e){this._t=String(e),this._i=0},function(){var e=this._t,t=this._i,r;return t>=e.length?{value:void 0,done:!0}:(r=OS(e,t),this._i+=r.length,{value:r,done:!1})})});var Lm=P((OG,Um)=>{M();Um.exports=function(){}});var Fm=P((kG,Nm)=>{M();Nm.exports=function(e,t){return{value:t,done:!!e}}});var Hm=P((UG,Qm)=>{"use strict";M();var fc=Lm(),w0=Fm(),Km=xf(),DS=Nn();Qm.exports=nc()(Array,"Array",function(e,t){this._t=DS(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,w0(1)):t=="keys"?w0(0,r):t=="values"?w0(0,e[r]):w0(0,[r,e[r]])},"values");Km.Arguments=Km.Array;fc("keys");fc("values");fc("entries")});var I0=P(()=>{M();Hm();var kS=on(),PS=yf(),jm=xf(),zm=Jr()("toStringTag"),Vm="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(M0=0;M0{M();Ym.f=Jr()});var $m=P((jG,Gm)=>{M();Co();I0();Gm.exports=E0().f("iterator")});var Wm=P((VG,Zm)=>{M();Zm.exports={default:$m(),__esModule:!0}});var Xm=P((GG,Jm)=>{M();var Mf=Eo()("meta"),US=gf(),oc=Ln(),LS=sn().f,NS=0,S0=Object.isExtensible||function(){return!0},FS=!bf()(function(){return S0(Object.preventExtensions({}))}),sc=function(e){LS(e,Mf,{value:{i:"O"+ ++NS,w:{}}})},KS=function(e,t){if(!US(e))return typeof e=="symbol"?e:(typeof e=="string"?"S":"P")+e;if(!oc(e,Mf)){if(!S0(e))return"F";if(!t)return"E";sc(e)}return e[Mf].i},QS=function(e,t){if(!oc(e,Mf)){if(!S0(e))return!0;if(!t)return!1;sc(e)}return e[Mf].w},HS=function(e){return FS&&jS.NEED&&S0(e)&&!oc(e,Mf)&&sc(e),e},jS=Jm.exports={KEY:Mf,NEED:!1,fastKey:KS,getWeak:QS,onFreeze:HS}});var B0=P((ZG,eb)=>{M();var zS=on(),tb=Cr(),VS=Io(),YS=E0(),GS=sn().f;eb.exports=function(e){var t=tb.Symbol||(tb.Symbol=VS?{}:zS.Symbol||{});e.charAt(0)!="_"&&!(e in t)&&GS(t,e,{value:YS.f(e)})}});var C0=P(rb=>{M();rb.f=Object.getOwnPropertySymbols});var ya=P(ib=>{M();ib.f={}.propertyIsEnumerable});var fb=P((r$,nb)=>{M();var $S=wf(),ZS=C0(),WS=ya();nb.exports=function(e){var t=$S(e),r=ZS.f;if(r)for(var a=r(e),n=WS.f,d=0,m;a.length>d;)n.call(e,m=a[d++])&&t.push(m);return t}});var ob=P((n$,ab)=>{M();var JS=v0();ab.exports=Array.isArray||function(t){return JS(t)=="Array"}});var hc=P(sb=>{M();var XS=Zl(),tB=m0().concat("length","prototype");sb.f=Object.getOwnPropertyNames||function(t){return XS(t,tB)}});var cb=P((s$,lb)=>{M();var eB=Nn(),hb=hc().f,rB={}.toString,ub=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],iB=function(e){try{return hb(e)}catch{return ub.slice()}};lb.exports.f=function(t){return ub&&rB.call(t)=="[object Window]"?iB(t):hb(eB(t))}});var pb=P(vb=>{M();var nB=ya(),fB=ba(),aB=Nn(),oB=l0(),sB=Ln(),hB=zl(),db=Object.getOwnPropertyDescriptor;vb.f=Un()?db:function(t,r){if(t=aB(t),r=oB(r,!0),hB)try{return db(t,r)}catch{}if(sB(t,r))return fB(!nB.f.call(t,r),t[r])}});var qb=P(()=>{"use strict";M();var T0=on(),sr=Ln(),pc=Un(),Qr=hn(),gb=Yl(),uB=Xm().KEY,xb=bf(),wc=p0(),Mc=y0(),lB=Eo(),To=Jr(),cB=E0(),dB=B0(),vB=fb(),pB=ob(),gc=mf(),gB=gf(),O0=Nn(),Ac=l0(),mc=ba(),Ro=Xl(),wb=cb(),Mb=pb(),Ab=sn(),mB=wf(),_b=Mb.f,Af=Ab.f,Ib=wb.f,kr=T0.Symbol,R0=T0.JSON,q0=R0&&R0.stringify,Fn="prototype",Dr=To("_hidden"),mb=To("toPrimitive"),bB={}.propertyIsEnumerable,qo=wc("symbol-registry"),un=wc("symbols"),Oo=wc("op-symbols"),Xr=Object[Fn],xa=typeof kr=="function",uc=T0.QObject,bc=!uc||!uc[Fn]||!uc[Fn].findChild,yc=pc&&xb(function(){return Ro(Af({},"a",{get:function(){return Af(this,"a",{value:7}).a}})).a!=7})?function(e,t,r){var a=_b(Xr,t);a&&delete Xr[t],Af(e,t,r),a&&e!==Xr&&Af(Xr,t,a)}:Af,bb=function(e){var t=un[e]=Ro(kr[Fn]);return t._k=e,t},xc=xa&&typeof kr.iterator=="symbol"?function(e){return typeof e=="symbol"}:function(e){return e instanceof kr},D0=function(t,r,a){return t===Xr&&D0(Oo,r,a),gc(t),r=Ac(r,!0),gc(a),sr(un,r)?(a.enumerable?(sr(t,Dr)&&t[Dr][r]&&(t[Dr][r]=!1),a=Ro(a,{enumerable:mc(0,!1)})):(sr(t,Dr)||Af(t,Dr,mc(1,{})),t[Dr][r]=!0),yc(t,r,a)):Af(t,r,a)},Eb=function(t,r){gc(t);for(var a=vB(r=O0(r)),n=0,d=a.length,m;d>n;)D0(t,m=a[n++],r[m]);return t},yB=function(t,r){return r===void 0?Ro(t):Eb(Ro(t),r)},yb=function(t){var r=bB.call(this,t=Ac(t,!0));return this===Xr&&sr(un,t)&&!sr(Oo,t)?!1:r||!sr(this,t)||!sr(un,t)||sr(this,Dr)&&this[Dr][t]?r:!0},Sb=function(t,r){if(t=O0(t),r=Ac(r,!0),!(t===Xr&&sr(un,r)&&!sr(Oo,r))){var a=_b(t,r);return a&&sr(un,r)&&!(sr(t,Dr)&&t[Dr][r])&&(a.enumerable=!0),a}},Bb=function(t){for(var r=Ib(O0(t)),a=[],n=0,d;r.length>n;)!sr(un,d=r[n++])&&d!=Dr&&d!=uB&&a.push(d);return a},Cb=function(t){for(var r=t===Xr,a=Ib(r?Oo:O0(t)),n=[],d=0,m;a.length>d;)sr(un,m=a[d++])&&(r?sr(Xr,m):!0)&&n.push(un[m]);return n};xa||(kr=function(){if(this instanceof kr)throw TypeError("Symbol is not a constructor!");var t=lB(arguments.length>0?arguments[0]:void 0),r=function(a){this===Xr&&r.call(Oo,a),sr(this,Dr)&&sr(this[Dr],t)&&(this[Dr][t]=!1),yc(this,t,mc(1,a))};return pc&&bc&&yc(Xr,t,{configurable:!0,set:r}),bb(t)},gb(kr[Fn],"toString",function(){return this._k}),Mb.f=Sb,Ab.f=D0,hc().f=wb.f=Bb,ya().f=yb,C0().f=Cb,pc&&!Io()&&gb(Xr,"propertyIsEnumerable",yb,!0),cB.f=function(e){return bb(To(e))});Qr(Qr.G+Qr.W+Qr.F*!xa,{Symbol:kr});for(lc="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),cc=0;lc.length>cc;)To(lc[cc++]);var lc,cc;for(dc=mB(To.store),vc=0;dc.length>vc;)dB(dc[vc++]);var dc,vc;Qr(Qr.S+Qr.F*!xa,"Symbol",{for:function(e){return sr(qo,e+="")?qo[e]:qo[e]=kr(e)},keyFor:function(t){if(!xc(t))throw TypeError(t+" is not a symbol!");for(var r in qo)if(qo[r]===t)return r},useSetter:function(){bc=!0},useSimple:function(){bc=!1}});Qr(Qr.S+Qr.F*!xa,"Object",{create:yB,defineProperty:D0,defineProperties:Eb,getOwnPropertyDescriptor:Sb,getOwnPropertyNames:Bb,getOwnPropertySymbols:Cb});R0&&Qr(Qr.S+Qr.F*(!xa||xb(function(){var e=kr();return q0([e])!="[null]"||q0({a:e})!="{}"||q0(Object(e))!="{}"})),"JSON",{stringify:function(t){for(var r=[t],a=1,n,d;arguments.length>a;)r.push(arguments[a++]);if(d=n=r[1],!(!gB(n)&&t===void 0||xc(t)))return pB(n)||(n=function(m,b){if(typeof d=="function"&&(b=d.call(this,m,b)),!xc(b))return b}),r[1]=n,q0.apply(R0,r)}});kr[Fn][mb]||yf()(kr[Fn],mb,kr[Fn].valueOf);Mc(kr,"Symbol");Mc(Math,"Math",!0);Mc(T0.JSON,"JSON",!0)});var Rb=P(()=>{M()});var Tb=P(()=>{M();B0()("asyncIterator")});var Ob=P(()=>{M();B0()("observable")});var kb=P((_$,Db)=>{M();qb();Rb();Tb();Ob();Db.exports=Cr().Symbol});var _c=P((E$,Pb)=>{M();Pb.exports={default:kb(),__esModule:!0}});var Nb=P(Ec=>{"use strict";M();Ec.__esModule=!0;var xB=Wm(),Ub=Lb(xB),wB=_c(),Kn=Lb(wB),Ic=typeof Kn.default=="function"&&typeof Ub.default=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Kn.default=="function"&&e.constructor===Kn.default&&e!==Kn.default.prototype?"symbol":typeof e};function Lb(e){return e&&e.__esModule?e:{default:e}}Ec.default=typeof Kn.default=="function"&&Ic(Ub.default)==="symbol"?function(e){return typeof e>"u"?"undefined":Ic(e)}:function(e){return e&&typeof Kn.default=="function"&&e.constructor===Kn.default&&e!==Kn.default.prototype?"symbol":typeof e>"u"?"undefined":Ic(e)}});var Qb=P((q$,Kb)=>{M();var Fb=mf();Kb.exports=function(e,t,r,a){try{return a?t(Fb(r)[0],r[1]):t(r)}catch(d){var n=e.return;throw n!==void 0&&Fb(n.call(e)),d}}});var jb=P((T$,Hb)=>{M();var MB=xf(),AB=Jr()("iterator"),_B=Array.prototype;Hb.exports=function(e){return e!==void 0&&(MB.Array===e||_B[AB]===e)}});var Vb=P((D$,zb)=>{"use strict";M();var IB=sn(),EB=ba();zb.exports=function(e,t,r){t in e?IB.f(e,t,EB(0,r)):e[t]=r}});var Bc=P((P$,Yb)=>{M();var Sc=v0(),SB=Jr()("toStringTag"),BB=Sc(function(){return arguments}())=="Arguments",CB=function(e,t){try{return e[t]}catch{}};Yb.exports=function(e){var t,r,a;return e===void 0?"Undefined":e===null?"Null":typeof(r=CB(t=Object(e),SB))=="string"?r:BB?Sc(t):(a=Sc(t))=="Object"&&typeof t.callee=="function"?"Arguments":a}});var Cc=P((L$,Gb)=>{M();var qB=Bc(),RB=Jr()("iterator"),TB=xf();Gb.exports=Cr().getIteratorMethod=function(e){if(e!=null)return e[RB]||e["@@iterator"]||TB[qB(e)]}});var Wb=P((F$,Zb)=>{M();var Rc=Jr()("iterator"),$b=!1;try{qc=[7][Rc](),qc.return=function(){$b=!0},Array.from(qc,function(){throw 2})}catch{}var qc;Zb.exports=function(e,t){if(!t&&!$b)return!1;var r=!1;try{var a=[7],n=a[Rc]();n.next=function(){return{done:r=!0}},a[Rc]=function(){return n},e(a)}catch{}return r}});var Xb=P(()=>{"use strict";M();var OB=Ql(),Tc=hn(),DB=So(),kB=Qb(),PB=jb(),UB=$l(),Jb=Vb(),LB=Cc();Tc(Tc.S+Tc.F*!Wb()(function(e){Array.from(e)}),"Array",{from:function(t){var r=DB(t),a=typeof this=="function"?this:Array,n=arguments.length,d=n>1?arguments[1]:void 0,m=d!==void 0,b=0,A=LB(r),B,C,D,K;if(m&&(d=OB(d,n>2?arguments[2]:void 0,2)),A!=null&&!(a==Array&&PB(A)))for(K=A.call(r),C=new a;!(D=K.next()).done;b++)Jb(C,b,m?kB(K,d,[D.value,b],!0):D.value);else for(B=UB(r.length),C=new a(B);B>b;b++)Jb(C,b,m?d(r[b],b):r[b]);return C.length=b,C}})});var e6=P((z$,t6)=>{M();Co();Xb();t6.exports=Cr().Array.from});var Oc=P((Y$,r6)=>{M();r6.exports={default:e6(),__esModule:!0}});var kc=P(Dc=>{"use strict";M();Dc.__esModule=!0;var NB=Oc(),FB=KB(NB);function KB(e){return e&&e.__esModule?e:{default:e}}Dc.default=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t{"use strict";M();Object.defineProperty(Qn,"__esModule",{value:!0});Qn.flip=QB;Qn.constant=HB;Qn.on=jB;Qn.compose=zB;Qn.pipe=VB;Qn.curry=YB;function QB(e){return function(t,r){return e(r,t)}}function HB(e){return function(){return e}}function jB(e,t){return function(r,a){return e(t(r),t(a))}}function zB(){for(var e=this,t=arguments.length,r=Array(t),a=0;a-1;b--)m=r[b].call(e,m);return m}}function VB(){for(var e=this,t=arguments.length,r=Array(t),a=0;a=t?e.apply(this,a):i6(e,t,a)}}function YB(e){return i6(e,e.length,[])}});var o6=P((X$,a6)=>{"use strict";M();var f6=wf(),GB=C0(),$B=ya(),ZB=So(),WB=Gl(),k0=Object.assign;a6.exports=!k0||bf()(function(){var e={},t={},r=Symbol(),a="abcdefghijklmnopqrst";return e[r]=7,a.split("").forEach(function(n){t[n]=n}),k0({},e)[r]!=7||Object.keys(k0({},t)).join("")!=a})?function(t,r){for(var a=ZB(t),n=arguments.length,d=1,m=GB.f,b=$B.f;n>d;)for(var A=WB(arguments[d++]),B=m?f6(A).concat(m(A)):f6(A),C=B.length,D=0,K;C>D;)b.call(A,K=B[D++])&&(a[K]=A[K]);return a}:k0});var s6=P(()=>{M();var Pc=hn();Pc(Pc.S+Pc.F,"Object",{assign:o6()})});var u6=P((nZ,h6)=>{M();s6();h6.exports=Cr().Object.assign});var c6=P((aZ,l6)=>{M();l6.exports={default:u6(),__esModule:!0}});var Lc=P(Uc=>{"use strict";M();Uc.__esModule=!0;var JB=c6(),XB=tC(JB);function tC(e){return e&&e.__esModule?e:{default:e}}Uc.default=XB.default||function(e){for(var t=1;t{M();var Nc=hn(),eC=Cr(),rC=bf();d6.exports=function(e,t){var r=(eC.Object||{})[e]||Object[e],a={};a[e]=t(r),Nc(Nc.S+Nc.F*rC(function(){r(1)}),"Object",a)}});var p6=P(()=>{M();var iC=So(),nC=wf();v6()("keys",function(){return function(t){return nC(iC(t))}})});var m6=P((pZ,g6)=>{M();p6();g6.exports=Cr().Object.keys});var Fc=P((mZ,b6)=>{M();b6.exports={default:m6(),__esModule:!0}});var x6=P((yZ,y6)=>{M();var fC=gf(),aC=Math.floor;y6.exports=function(t){return!fC(t)&&isFinite(t)&&aC(t)===t}});var M6=P(()=>{M();var w6=hn();w6(w6.S,"Number",{isInteger:x6()})});var _6=P((_Z,A6)=>{M();M6();A6.exports=Cr().Number.isInteger});var E6=P((EZ,I6)=>{M();I6.exports={default:_6(),__esModule:!0}});var Qc=P(Kc=>{"use strict";M();Kc.__esModule=!0;Kc.default=function(e,t){var r={};for(var a in e)t.indexOf(a)>=0||!Object.prototype.hasOwnProperty.call(e,a)||(r[a]=e[a]);return r}});var Hc=P(dr=>{"use strict";M();Object.defineProperty(dr,"__esModule",{value:!0});function _f(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Pr=_f(kc()),rr=_f(Kl()),bi=n6(),oC=_f(Lc()),sC=_f(Oc()),q6=_f(Fc()),hC=_f(E6()),uC=_f(Qc()),lC=void 0,cC=function(e,t){return rr(this,lC),[].concat(Pr(t),Pr(e))}.bind(void 0),dC=bi.curry(cC),vC=void 0,pC=function(e){return rr(this,vC),Array.isArray(e)?e:[e]}.bind(void 0),gC=void 0,mC=function(e,t){return rr(this,gC),t===e.length-1}.bind(void 0),R6=bi.curry(mC),bC=void 0,yC=function(e,t){return rr(this,bC),R6(e,t)?0:t+1}.bind(void 0),xC=bi.curry(yC),T6=void 0,wC=function(e){return rr(this,T6),Math.max.apply(Math,Pr(q6(e)))+1}.bind(void 0),MC=function(e){return rr(this,T6),sC("length"in e?e:oC({},e,{length:wC(e)}))}.bind(void 0),AC=void 0,_C=function(e,t,r){return rr(this,AC),[].concat(Pr(r.slice(0,e)),Pr(t),Pr(r.slice(e+1)))}.bind(void 0),IC=bi.curry(_C),O6=void 0,EC=function(e,t){return rr(this,O6),hC(e)&&e>=t}.bind(void 0),D6=function(e){return rr(this,O6),EC(Number(e),0)}.bind(void 0),SC=void 0,BC=function(e){var t=e.length,r=uC(e,["length"]);return rr(this,SC),q6(r).every(D6)}.bind(void 0),CC=void 0,qC=function(e,t){return rr(this,CC),[].concat(Pr(e),Pr(t))}.bind(void 0),RC=bi.curry(qC),S6=void 0,TC=function(e,t,r,a){return rr(this,S6),a.reduce(function(n,d,m){return rr(this,S6),e(d,m,n)?t(n,d,m):n}.bind(this),r)}.bind(void 0),OC=bi.curry(TC),B6=void 0,DC=function(e,t,r,a){rr(this,B6);var n=r;return a.every(function(d,m){rr(this,B6);var b=e(d,m,n);return b&&(n=t(n,d,m)),b}.bind(this)),n}.bind(void 0),kC=bi.curry(DC),PC=void 0,UC=function(e,t,r){return rr(this,PC),[].concat(Pr(r.slice(0,e)),Pr(r.slice(e+t)))}.bind(void 0),LC=bi.curry(UC),C6=void 0,NC=function(e,t){return rr(this,C6),[].concat(Pr(Array(e))).map(function(){return rr(this,C6),t}.bind(this))}.bind(void 0),FC=bi.curry(NC),KC=void 0,QC=function(e,t,r){return rr(this,KC),[].concat(Pr(r.slice(0,e)),Pr(t),Pr(r.slice(e+t.length)))}.bind(void 0),HC=bi.curry(QC),jC=void 0,zC=function(e,t){return rr(this,jC),t<0?e.length-t:t}.bind(void 0),VC=bi.curry(zC);dr.append=dC;dr.convertIfNot=pC;dr.cycleNext=xC;dr.fromObject=MC;dr.insert=IC;dr.isKey=D6;dr.isLastIndex=R6;dr.isPossibleFromObject=BC;dr.prepend=RC;dr.reduceIf=OC;dr.reduceWhile=kC;dr.remove=LC;dr.repeat=FC;dr.replace=HC;dr.resolveIndex=VC});var P6=P((TZ,k6)=>{"use strict";M();k6.exports=function e(t,r){if(t===r)return!0;var a=Array.isArray(t),n=Array.isArray(r),d;if(a&&n){if(t.length!=r.length)return!1;for(d=0;d{M();var jc=hn();jc(jc.S+jc.F*!Un(),"Object",{defineProperty:sn().f})});var N6=P((UZ,L6)=>{M();U6();var YC=Cr().Object;L6.exports=function(t,r,a){return YC.defineProperty(t,r,a)}});var K6=P((NZ,F6)=>{M();F6.exports={default:N6(),__esModule:!0}});var Q6=P(zc=>{"use strict";M();zc.__esModule=!0;var GC=K6(),$C=ZC(GC);function ZC(e){return e&&e.__esModule?e:{default:e}}zc.default=function(e,t,r){return t in e?(0,$C.default)(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}});var j6=P((HZ,H6)=>{M();var WC=Bc(),JC=Jr()("iterator"),XC=xf();H6.exports=Cr().isIterable=function(e){var t=Object(e);return t[JC]!==void 0||"@@iterator"in t||XC.hasOwnProperty(WC(t))}});var V6=P((zZ,z6)=>{M();I0();Co();z6.exports=j6()});var G6=P((YZ,Y6)=>{M();Y6.exports={default:V6(),__esModule:!0}});var Z6=P(($Z,$6)=>{M();var tq=mf(),eq=Cc();$6.exports=Cr().getIterator=function(e){var t=eq(e);if(typeof t!="function")throw TypeError(e+" is not iterable!");return tq(t.call(e))}});var J6=P((WZ,W6)=>{M();I0();Co();W6.exports=Z6()});var ty=P((XZ,X6)=>{M();X6.exports={default:J6(),__esModule:!0}});var ry=P(Vc=>{"use strict";M();Vc.__esModule=!0;var rq=G6(),iq=ey(rq),nq=ty(),fq=ey(nq);function ey(e){return e&&e.__esModule?e:{default:e}}Vc.default=function(){function e(t,r){var a=[],n=!0,d=!1,m=void 0;try{for(var b=(0,fq.default)(t),A;!(n=(A=b.next()).done)&&(a.push(A.value),!(r&&a.length===r));n=!0);}catch(B){d=!0,m=B}finally{try{!n&&b.return&&b.return()}finally{if(d)throw m}}return a}return function(t,r){if(Array.isArray(t))return t;if((0,iq.default)(Object(t)))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var ny=P((iW,iy)=>{M();var aq=wf(),oq=Nn(),sq=ya().f;iy.exports=function(e){return function(t){for(var r=oq(t),a=aq(r),n=a.length,d=0,m=[],b;n>d;)sq.call(r,b=a[d++])&&m.push(e?[b,r[b]]:r[b]);return m}}});var ay=P(()=>{M();var fy=hn(),hq=ny()(!0);fy(fy.S,"Object",{entries:function(t){return hq(t)}})});var sy=P((sW,oy)=>{M();ay();oy.exports=Cr().Object.entries});var uy=P((uW,hy)=>{M();hy.exports={default:sy(),__esModule:!0}});var Sy=P(fr=>{"use strict";M();function xi(e){return e&&typeof e=="object"&&"default"in e?e.default:e}Object.defineProperty(fr,"__esModule",{value:!0});var ye=xi(Kl()),ti=xg(),dy=xi(Nb()),Gc=Hc(),uq=xi(Fc()),vy=xi(kc()),lq=xi(P6()),cq=xi(Q6()),Do=xi(Lc()),dq=xi(ry()),vq=xi(uy()),pq=xi(Qc()),gq=xi(_c()),mq=void 0,bq=function(e,t){return ye(this,mq),t[e]}.bind(void 0),If=ti.curry(bq),py=void 0,yq=function(e){return ye(this,py),e!==null&&(e===void 0?"undefined":dy(e))==="object"}.bind(void 0),gy=function(e){return ye(this,py),Array.isArray(e)||yq(e)}.bind(void 0),ko=void 0,xq=function(e,t,r){return ye(this,ko),Gc.isLastIndex(t,e)?r:my(e+1,t,r)}.bind(void 0),wq=function(e,t,r){return ye(this,ko),"Expected to find a composite at ["+String(t.join(", "))+"]["+String(e)+"], but instead got: "+(r===void 0?"undefined":dy(r))}.bind(void 0),Mq=function(e,t,r){if(ye(this,ko),gy(r))return r;throw new Error(wq(e,t,r))}.bind(void 0),my=function(e,t,r){return ye(this,ko),r===void 0?void 0:xq(e,t,If(t[e],Mq(e,t,r)))}.bind(void 0),Aq=function(e,t){return ye(this,ko),e.length===0?void 0:my(0,e,t)}.bind(void 0),by=ti.curry(Aq),_q=void 0,P0=function(e){return ye(this,_q),Array.isArray(e)?[].concat(vy(e.keys())):uq(e)}.bind(void 0),Iq=void 0,Eq=function(e,t,r){return ye(this,Iq),lq(by(e,r),t)}.bind(void 0),Sq=ti.curry(Eq),Bq=void 0,Cq=function(e,t){return ye(this,Bq),Object.prototype.hasOwnProperty.call(t,e)}.bind(void 0),$c=ti.curry(Cq),ly=void 0,qq=function(e,t){ye(this,ly);var r=P0(e);return r.length===P0(t).length&&r.every(function(a){return ye(this,ly),$c(a,t)&&If(a,e)===If(a,t)}.bind(this))}.bind(void 0),yy=ti.curry(qq),Rq=void 0,xy=function(e){return ye(this,Rq),P0(e).length===0}.bind(void 0),Yc=void 0,Tq=function(e,t){return ye(this,Yc),vq(t).reduce(function(r,a){var n=dq(a,2),d=n[0],m=n[1];return ye(this,Yc),Do({},r,cq({},d,e(m,d,t)))}.bind(this),{})}.bind(void 0),Oq=function(e,t){return ye(this,Yc),Array.isArray(t)?t.map(e):Tq(e,t)}.bind(void 0),Dq=ti.curry(Oq),wy=void 0,kq=function(e,t){t[e];var r=pq(t,[e]);return ye(this,wy),r}.bind(void 0),Pq=function(e,t){return ye(this,wy),Array.isArray(t)?Gc.remove(e,1,t):kq(e,t)}.bind(void 0),My=ti.curry(Pq),Uq=void 0,U0=function(e){return ye(this,Uq),Array.isArray(e)?[].concat(vy(e)):Do({},e)}.bind(void 0),yi=void 0,Lq=function(e){ye(this,yi);var t=U0(e);return{origin:t,current:t,previous:void 0}}.bind(void 0),Ay=function(e,t,r){return ye(this,yi),r[e]=t,If(e,r)}.bind(void 0),Nq=function(e,t,r,a){return ye(this,yi),Do({},a,{current:Ay(e[t],r,a.current),previous:a.current})}.bind(void 0),Fq=function(e,t,r){ye(this,yi);var a=My(e[t],r.current);return t===0?Do({},r,{current:a,origin:a}):Do({},r,{previous:Ay(e[t-1],a,r.previous)})}.bind(void 0),_y=gq("composite.updateIn.removeAction"),Kq=function(e,t,r,a){return ye(this,yi),r===_y?Fq(e,t,a):Nq(e,t,r,a)}.bind(void 0),Qq=function(e){return ye(this,yi),typeof e=="number"?[]:{}}.bind(void 0),Hq=function(e,t,r){return ye(this,yi),$c(e,r)?U0(If(e,r)):Qq(t)}.bind(void 0),jq=function(e,t,r,a){return ye(this,yi),Gc.isLastIndex(e,r)?t(If(e[r],a)):Hq(e[r],e[r+1],a)}.bind(void 0),zq=function(e,t){return ye(this,yi),function(r,a,n){return ye(this,yi),Kq(e,n,jq(e,t,n,r.current),r)}.bind(this)}.bind(void 0),Vq=function(e,t,r){return ye(this,yi),e.length===0?r:e.reduce(zq(e,t),Lq(r)).origin}.bind(void 0),Po=ti.curry(Vq);Po.remove=_y;var Iy=void 0,Yq=function(){return ye(this,Iy),Po.remove}.bind(void 0),Gq=function(e,t){return ye(this,Iy),Po(e,Yq,t)}.bind(void 0),$q=ti.curry(Gq),Zq=void 0,Wq=function(e,t,r){ye(this,Zq);var a=U0(r);return a[e]=t,a}.bind(void 0),Jq=ti.curry(Wq),cy=void 0,Xq=function(e,t,r){return ye(this,cy),Po(e,function(){return ye(this,cy),t}.bind(this),r)}.bind(void 0),tR=ti.curry(Xq),Ey=void 0,eR=function(e,t){return ye(this,Ey),Boolean(Number(e)^Number(t))}.bind(void 0),rR=function(e,t){return ye(this,Ey),e===t||!eR(Array.isArray(e),Array.isArray(t))&&yy(e,t)}.bind(void 0),iR=ti.curry(rR),nR=void 0,fR=function(e){return ye(this,nR),xy(e)?void 0:e}.bind(void 0);fr.get=If,fr.getIn=by,fr.getKeys=P0,fr.hasIn=Sq,fr.hasKey=$c,fr.haveSameProps=yy,fr.is=gy,fr.isEmpty=xy,fr.map=Dq,fr.remove=My,fr.removeIn=$q,fr.set=Jq,fr.setIn=tR,fr.shallowCopy=U0,fr.shallowEqual=iR,fr.toUndefinedIfEmpty=fR,fr.updateIn=Po});var Cy=P((vW,By)=>{M();By.exports=function(e,t){return{value:t,done:!!e}}});var L0=P((gW,qy)=>{M();qy.exports={}});var N0=P((bW,Ry)=>{M();var aR=Bl(),oR=ga();Ry.exports=function(e){return aR(oR(e))}});var Oy=P((xW,Ty)=>{M();var sR=a0(),hR=Math.max,uR=Math.min;Ty.exports=function(e,t){return e=sR(e),e<0?hR(e+t,0):uR(e,t)}});var F0=P((MW,Dy)=>{M();var lR=N0(),cR=o0(),dR=Oy();Dy.exports=function(e){return function(t,r,a){var n=lR(t),d=cR(n.length),m=dR(a,d),b;if(e&&r!=r){for(;d>m;)if(b=n[m++],b!=b)return!0}else for(;d>m;m++)if((e||m in n)&&n[m]===r)return e||m||0;return!e&&-1}}});var K0=P((_W,Py)=>{M();var ky=Rl()("keys"),vR=i0();Py.exports=function(e){return ky[e]||(ky[e]=vR(e))}});var Ny=P((EW,Ly)=>{M();var Uy=wo(),pR=N0(),gR=F0()(!1),mR=K0()("IE_PROTO");Ly.exports=function(e,t){var r=pR(e),a=0,n=[],d;for(d in r)d!=mR&&Uy(r,d)&&n.push(d);for(;t.length>a;)Uy(r,d=t[a++])&&(~gR(n,d)||n.push(d));return n}});var Zc=P((BW,Fy)=>{M();Fy.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var Wc=P((qW,Ky)=>{M();var bR=Ny(),yR=Zc();Ky.exports=Object.keys||function(t){return bR(t,yR)}});var Hy=P((TW,Qy)=>{M();var xR=xo(),wR=da(),MR=Wc();Qy.exports=va()?Object.defineProperties:function(t,r){wR(t);for(var a=MR(r),n=a.length,d=0,m;n>d;)xR.f(t,m=a[d++],r[m]);return t}});var Vy=P((DW,zy)=>{M();var jy=Dn().document;zy.exports=jy&&jy.documentElement});var $y=P((PW,Gy)=>{M();var AR=da(),_R=Hy(),Yy=Zc(),IR=K0()("IE_PROTO"),Jc=function(){},Xc="prototype",Q0=function(){var e=xl()("iframe"),t=Yy.length,r="<",a=">",n;for(e.style.display="none",Vy().appendChild(e),e.src="javascript:",n=e.contentWindow.document,n.open(),n.write(r+"script"+a+"document.F=Object"+r+"/script"+a),n.close(),Q0=n.F;t--;)delete Q0[Xc][Yy[t]];return Q0()};Gy.exports=Object.create||function(t,r){var a;return t!==null?(Jc[Xc]=AR(t),a=new Jc,Jc[Xc]=null,a[IR]=t):a=Q0(),r===void 0?a:_R(a,r)}});var td=P((LW,Wy)=>{M();var ER=xo().f,SR=wo(),Zy=mi()("toStringTag");Wy.exports=function(e,t,r){e&&!SR(e=r?e:e.prototype,Zy)&&ER(e,Zy,{configurable:!0,value:t})}});var t3=P((FW,Xy)=>{"use strict";M();var BR=$y(),CR=wl(),qR=td(),Jy={};kn()(Jy,mi()("iterator"),function(){return this});Xy.exports=function(e,t,r){e.prototype=BR(Jy,{next:CR(1,r)}),qR(e,t+" Iterator")}});var i3=P((QW,r3)=>{M();var RR=wo(),TR=Cl(),e3=K0()("IE_PROTO"),OR=Object.prototype;r3.exports=Object.getPrototypeOf||function(e){return e=TR(e),RR(e,e3)?e[e3]:typeof e.constructor=="function"&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?OR:null}});var u3=P((jW,h3)=>{"use strict";M();var n3=ql(),ed=Wr(),DR=Mo(),f3=kn(),a3=L0(),kR=t3(),PR=td(),UR=i3(),Uo=mi()("iterator"),rd=!([].keys&&"next"in[].keys()),LR="@@iterator",o3="keys",H0="values",s3=function(){return this};h3.exports=function(e,t,r,a,n,d,m){kR(r,t,a);var b=function(ht){if(!rd&&ht in D)return D[ht];switch(ht){case o3:return function(){return new r(this,ht)};case H0:return function(){return new r(this,ht)}}return function(){return new r(this,ht)}},A=t+" Iterator",B=n==H0,C=!1,D=e.prototype,K=D[Uo]||D[LR]||n&&D[n],j=K||b(n),Z=n?B?b("entries"):j:void 0,qt=t=="Array"&&D.entries||K,Rt,J,Ot;if(qt&&(Ot=UR(qt.call(new e)),Ot!==Object.prototype&&Ot.next&&(PR(Ot,A,!0),!n3&&typeof Ot[Uo]!="function"&&f3(Ot,Uo,s3))),B&&K&&K.name!==H0&&(C=!0,j=function(){return K.call(this)}),(!n3||m)&&(rd||C||!D[Uo])&&f3(D,Uo,j),a3[t]=j,a3[A]=s3,n)if(Rt={values:B?j:b(H0),keys:d?j:b(o3),entries:Z},m)for(J in Rt)J in D||DR(D,J,Rt[J]);else ed(ed.P+ed.F*(rd||C),t,Rt);return Rt}});var d3=P((VW,c3)=>{"use strict";M();var id=_o(),j0=Cy(),l3=L0(),NR=N0();c3.exports=u3()(Array,"Array",function(e,t){this._t=NR(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,j0(1)):t=="keys"?j0(0,r):t=="values"?j0(0,e[r]):j0(0,[r,e[r]])},"values");l3.Arguments=l3.Array;id("keys");id("values");id("entries")});var A3=P(()=>{M();var v3=d3(),FR=Wc(),KR=Mo(),QR=Dn(),p3=kn(),w3=L0(),M3=mi(),g3=M3("iterator"),m3=M3("toStringTag"),b3=w3.Array,y3={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(nd=FR(y3),z0=0;z0{"use strict";M();var HR=yo();_3.exports=function(e,t){return!!e&&HR(function(){t?e.call(null,function(){},1):e.call(null)})}});var I3=P(()=>{"use strict";M();var ad=Wr(),jR=ma()(0),zR=Fo()([].forEach,!0);ad(ad.P+ad.F*!zR,"Array",{forEach:function(t){return jR(this,t,arguments[1])}})});var S3=P((rJ,E3)=>{M();function VR(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t{M();function YR(e){if(Symbol.iterator in Object(e)||Object.prototype.toString.call(e)==="[object Arguments]")return Array.from(e)}B3.exports=YR});var R3=P((aJ,q3)=>{M();function GR(){throw new TypeError("Invalid attempt to spread non-iterable instance")}q3.exports=GR});var O3=P((sJ,T3)=>{M();var $R=S3(),ZR=C3(),WR=R3();function JR(e){return $R(e)||ZR(e)||WR()}T3.exports=JR});var D3=P(()=>{"use strict";M();var od=Wr(),XR=ma()(1);od(od.P+od.F*!Fo()([].map,!0),"Array",{map:function(t){return XR(this,t,arguments[1])}})});var P3=P((dJ,k3)=>{M();var tT=a0(),eT=ga();k3.exports=function(e){return function(t,r){var a=String(eT(t)),n=tT(r),d=a.length,m,b;return n<0||n>=d?e?"":void 0:(m=a.charCodeAt(n),m<55296||m>56319||n+1===d||(b=a.charCodeAt(n+1))<56320||b>57343?e?a.charAt(n):m:e?a.slice(n,n+2):(m-55296<<10)+(b-56320)+65536)}}});var L3=P((pJ,U3)=>{"use strict";M();var rT=P3()(!0);U3.exports=function(e,t,r){return t+(r?rT(e,t).length:1)}});var F3=P((mJ,N3)=>{M();var sd=Ao(),iT=mi()("toStringTag"),nT=sd(function(){return arguments}())=="Arguments",fT=function(e,t){try{return e[t]}catch{}};N3.exports=function(e){var t,r,a;return e===void 0?"Undefined":e===null?"Null":typeof(r=fT(t=Object(e),iT))=="string"?r:nT?sd(t):(a=sd(t))=="Object"&&typeof t.callee=="function"?"Arguments":a}});var Q3=P((yJ,K3)=>{"use strict";M();var aT=F3(),oT=RegExp.prototype.exec;K3.exports=function(e,t){var r=e.exec;if(typeof r=="function"){var a=r.call(e,t);if(typeof a!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return a}if(aT(e)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return oT.call(e,t)}});var j3=P((wJ,H3)=>{"use strict";M();var sT=da();H3.exports=function(){var e=sT(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}});var ld=P((AJ,V3)=>{"use strict";M();var hT=j3(),V0=RegExp.prototype.exec,uT=String.prototype.replace,z3=V0,Y0="lastIndex",hd=function(){var e=/a/,t=/b*/g;return V0.call(e,"a"),V0.call(t,"a"),e[Y0]!==0||t[Y0]!==0}(),ud=/()??/.exec("")[1]!==void 0,lT=hd||ud;lT&&(z3=function(t){var r=this,a,n,d,m;return ud&&(n=new RegExp("^"+r.source+"$(?!\\s)",hT.call(r))),hd&&(a=r[Y0]),d=V0.call(r,t),hd&&d&&(r[Y0]=r.global?d.index+d[0].length:a),ud&&d&&d.length>1&&uT.call(d[0],n,function(){for(m=1;m{"use strict";M();var Y3=ld();Wr()({target:"RegExp",proto:!0,forced:Y3!==/./.exec},{exec:Y3})});var W3=P((BJ,Z3)=>{"use strict";M();G3();var cT=Mo(),dT=kn(),cd=yo(),vT=ga(),$3=mi(),pT=ld(),gT=$3("species"),mT=!cd(function(){var e=/./;return e.exec=function(){var t=[];return t.groups={a:"7"},t},"".replace(e,"$")!=="7"}),bT=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return r.length===2&&r[0]==="a"&&r[1]==="b"}();Z3.exports=function(e,t,r){var a=$3(e),n=!cd(function(){var C={};return C[a]=function(){return 7},""[e](C)!=7}),d=n?!cd(function(){var C=!1,D=/a/;return D.exec=function(){return C=!0,null},e==="split"&&(D.constructor={},D.constructor[gT]=function(){return D}),D[a](""),!C}):void 0;if(!n||!d||e==="replace"&&!mT||e==="split"&&!bT){var m=/./[a],b=r(vT,a,""[e],function(D,K,j,Z,qt){return K.exec===pT?n&&!qt?{done:!0,value:m.call(K,j,Z)}:{done:!0,value:D.call(j,K,Z)}:{done:!1}}),A=b[0],B=b[1];cT(String.prototype,e,A),dT(RegExp.prototype,a,t==2?function(C,D){return B.call(C,this,D)}:function(C){return B.call(C,this)})}}});var X3=P(()=>{"use strict";M();var yT=da(),xT=o0(),wT=L3(),J3=Q3();W3()("match",1,function(e,t,r,a){return[function(d){var m=e(this),b=d?.[t];return b!==void 0?b.call(d,m):new RegExp(d)[t](String(m))},function(n){var d=a(r,n,this);if(d.done)return d.value;var m=yT(n),b=String(this);if(!m.global)return J3(m,b);var A=m.unicode;m.lastIndex=0;for(var B=[],C=0,D;(D=J3(m,b))!==null;){var K=String(D[0]);B[C]=K,K===""&&(m.lastIndex=wT(b,xT(m.lastIndex),A)),C++}return C===0?null:B}]})});var t4=P(()=>{"use strict";M();var dd=Wr(),MT=ma()(3);dd(dd.P+dd.F*!Fo()([].some,!0),"Array",{some:function(t){return MT(this,t,arguments[1])}})});var r4=P((PJ,e4)=>{M();e4.exports=function(e,t,r){var a=r===void 0;switch(t.length){case 0:return a?e():e.call(r);case 1:return a?e(t[0]):e.call(r,t[0]);case 2:return a?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return a?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return a?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}});var f4=P((LJ,n4)=>{"use strict";M();var AT=Il(),_T=pf(),IT=r4(),i4=[].slice,vd={},ET=function(e,t,r){if(!(t in vd)){for(var a=[],n=0;n{M();var a4=Wr();a4(a4.P,"Function",{bind:f4()})});var gd=P((HJ,o4)=>{M();function ST(e,t){if(e!==t)throw new TypeError("Cannot instantiate an arrow function")}o4.exports=ST});var u4=P(Ef=>{"use strict";M();Object.defineProperty(Ef,"__esModule",{value:!0});function BT(e){return e&&typeof e=="object"&&"default"in e?e.default:e}D3();X3();t4();pd();var Ki=BT(gd()),md=void 0,CT=function(t){var r=this;return Ki(this,md),t.map(function(a){var n=a.column,d=a.line;return Ki(this,r),"".concat(d,":").concat(n)}.bind(this)).join("; ")}.bind(void 0),qT=function(t){var r=t.message,a=t.locations;return Ki(this,md),r+(a?" (".concat(CT(a),")"):"")}.bind(void 0),RT=function(t){return Ki(this,md),t.map(qT).join(` +`)}.bind(void 0),s4=void 0,TT=/^\s*(query|mutation|subscription|\{)/,OT=function(t){return Ki(this,s4),t==="{"?"query":t}.bind(void 0),DT=function(t){Ki(this,s4);var r=t.match(TT);if(!r)throw new TypeError(`Invalid operation: +`.concat(t));return OT(r[1])}.bind(void 0),h4=void 0,kT=function(t){return Ki(this,h4),t.kind==="OperationDefinition"&&t.operation==="subscription"}.bind(void 0),PT=function(t){return Ki(this,h4),t.definitions.some(kT)}.bind(void 0),UT=void 0,LT=function(t){var r=t.query,a=t.variables;return Ki(this,UT),a?{operation:r,variables:a}:{operation:r}}.bind(void 0),NT=void 0,FT=function(t){var r=t.operation,a=t.variables;return Ki(this,NT),a?{query:r,variables:a}:{query:r}}.bind(void 0);Ef.errorsToString=RT;Ef.getOperationType=DT;Ef.hasSubscription=PT;Ef.requestFromCompat=LT;Ef.requestToCompat=FT});var v4=P(Sd=>{"use strict";M();Object.defineProperty(Sd,"__esModule",{value:!0});var wd=function(){function e(t,r){for(var a=0;a1,m=!1,b=arguments[1],A=b;return new n(function(B){return a.subscribe({next:function(C){var D=!m;if(m=!0,!D||d)try{A=r(A,C)}catch(K){return B.error(K)}else A=C},error:function(C){B.error(C)},complete:function(){if(!m&&!d)return B.error(new TypeError("Cannot reduce an empty sequence"));B.next(A),B.complete()}})})}},{key:"concat",value:function(){for(var r=this,a=arguments.length,n=Array(a),d=0;d=0&&m.splice(D,1),A()}});m.push(C)},error:function(B){d.error(B)},complete:function(){A()}});function A(){b.closed&&m.length===0&&d.complete()}return function(){m.forEach(function(B){return B.unsubscribe()}),b.unsubscribe()}})}},{key:yd,value:function(){return this}}],[{key:"from",value:function(r){var a=typeof this=="function"?this:e;if(r==null)throw new TypeError(r+" is not an object");var n=$0(r,yd);if(n){var d=n.call(r);if(Object(d)!==d)throw new TypeError(d+" is not an object");return QT(d)&&d.constructor===a?d:new a(function(m){return d.subscribe(m)})}if(_d("iterator")&&(n=$0(r,KT),n))return new a(function(m){G0(function(){if(!m.closed){var b=!0,A=!1,B=void 0;try{for(var C=n.call(r)[Symbol.iterator](),D;!(b=(D=C.next()).done);b=!0){var K=D.value;if(m.next(K),m.closed)return}}catch(j){A=!0,B=j}finally{try{!b&&C.return&&C.return()}finally{if(A)throw B}}m.complete()}})});if(Array.isArray(r))return new a(function(m){G0(function(){if(!m.closed){for(var b=0;b{M();p4.exports=v4().Observable});var b4=P(()=>{"use strict";M();var m4=Wr(),VT=F0()(!0);m4(m4.P,"Array",{includes:function(t){return VT(this,t,arguments.length>1?arguments[1]:void 0)}});_o()("includes")});var x4=P((tX,y4)=>{M();var YT=pf(),GT=Ao(),$T=mi()("match");y4.exports=function(e){var t;return YT(e)&&((t=e[$T])!==void 0?!!t:GT(e)=="RegExp")}});var M4=P((rX,w4)=>{M();var ZT=x4(),WT=ga();w4.exports=function(e,t,r){if(ZT(t))throw TypeError("String#"+r+" doesn't accept regex!");return String(WT(e))}});var _4=P((nX,A4)=>{M();var JT=mi()("match");A4.exports=function(e){var t=/./;try{"/./"[e](t)}catch{try{return t[JT]=!1,!"/./"[e](t)}catch{}}return!0}});var E4=P(()=>{"use strict";M();var Bd=Wr(),XT=M4(),I4="includes";Bd(Bd.P+Bd.F*_4()(I4),"String",{includes:function(t){return!!~XT(this,t,I4).indexOf(t,arguments.length>1?arguments[1]:void 0)}})});var B4=P((hX,S4)=>{M();function tO(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}S4.exports=tO});var q4=P((lX,C4)=>{M();var eO=B4();function rO(e){for(var t=1;t{M();function iO(e,t){if(e==null)return{};var r={},a=Object.keys(e),n,d;for(d=0;d=0)&&(r[n]=e[n]);return r}R4.exports=iO});var D4=P((pX,O4)=>{M();var nO=T4();function fO(e,t){if(e==null)return{};var r=nO(e,t),a,n;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&(!Object.prototype.propertyIsEnumerable.call(e,a)||(r[a]=e[a]))}return r}O4.exports=fO});var P4=P(()=>{"use strict";M();var Cd=Wr(),aO=F0()(!1),qd=[].indexOf,k4=!!qd&&1/[1].indexOf(1,-0)<0;Cd(Cd.P+Cd.F*(k4||!Fo()(qd)),"Array",{indexOf:function(t){return k4?qd.apply(this,arguments)||0:aO(this,t,arguments[1])}})});var p8=P(vn=>{"use strict";M();Object.defineProperty(vn,"__esModule",{value:!0});function Ho(e){return e&&typeof e=="object"&&"default"in e?e.default:e}dg();pg();bg();var Rd=Sy();bl();A3();I3();var Qo=Ho(O3()),Td=u4(),oO=Ho(g4());b4();E4();var wi=Ho(q4()),Z0=Ho(D4());P4();var W0=Hc();pd();var Pt=Ho(gd()),sO=void 0,Od=function(t){var r=t.activeObservers,a=t.canceledObservers,n=Z0(t,["activeObservers","canceledObservers"]);return Pt(this,sO),wi({},n,{isActive:!1,activeObservers:[],canceledObservers:Qo(r).concat(Qo(a))})}.bind(void 0),Dd=void 0,hO=function(t,r){var a=this;return Pt(this,Dd),function(n){return Pt(this,a),n[t]&&n[t](r)}.bind(this)}.bind(void 0),uO=function(t){var r=t.name;return Pt(this,Dd),"on".concat(r)}.bind(void 0),kd=function(t,r){return Pt(this,Dd),t.forEach(hO(uO(r),r.payload))}.bind(void 0),lO=void 0,F4=function(t,r){return Pt(this,lO),kd(t.canceledObservers,r),t}.bind(void 0),jo={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},zo=void 0,cO=function(t){return Pt(this,zo),{payload:t,name:jo.start}}.bind(void 0),dO=function(t){return Pt(this,zo),{payload:t,name:jo.result}}.bind(void 0),J0=function(t){return Pt(this,zo),{payload:t,name:jo.error}}.bind(void 0),vO=function(){return Pt(this,zo),{name:jo.cancel,payload:void 0}}.bind(void 0),pO=function(t){return Pt(this,zo),{payload:t,name:jo.abort}}.bind(void 0),K4=void 0,gO=function(t){return Pt(this,K4),wi({},t,{canceledObservers:[]})}.bind(void 0),Vo=function(t){return Pt(this,K4),t.canceledObservers.length>0?gO(F4(t,vO())):t}.bind(void 0),mO=void 0,Q4=function(t,r,a){return Pt(this,mO),t.findIndex(Rd.hasIn([r],a))}.bind(void 0),bO=void 0,Pd=function(t){var r=this;return Pt(this,bO),function(a){return Pt(this,r),W0.replace(Q4(a,"request",t.request),[t],a)}.bind(this)}.bind(void 0),yO=void 0,Yo=function(t){var r=this;return Pt(this,yO),function(a){return Pt(this,r),W0.remove(Q4(a,"request",t.request),1,a)}.bind(this)}.bind(void 0),xO=void 0,ln=function(t,r){return Pt(this,xO),t.notifiers=r(t.notifiers),t}.bind(void 0),wO=void 0,cn=function(t,r){return Pt(this,wO),ln(t,Pd(r)),r}.bind(void 0),Mi={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},H4=void 0,MO=function(t){var r=t.activeObservers,a=t.canceledObservers;return Pt(this,H4),Qo(r).concat(Qo(a))}.bind(void 0),j4=function(t,r){return Pt(this,H4),kd(MO(t),r),t}.bind(void 0),AO=void 0,Ud=function(t,r,a){return Pt(this,AO),ln(t,Yo(j4(r,pO(a))))}.bind(void 0),_O=void 0,X0=function(t,r,a){return Pt(this,_O),t.find(Rd.hasIn([r],a))}.bind(void 0),IO=void 0,th=function(t,r){return Pt(this,IO),kd(t.activeObservers,r),t}.bind(void 0),EO=void 0,z4=function(t,r){return Pt(this,EO),th(t,dO(r))}.bind(void 0),SO=void 0,V4=function(t){return Pt(this,SO),th(t,cO(t))}.bind(void 0),BO=void 0,Y4=function(t){return Pt(this,BO),Vo(wi({},t,{isActive:!0,requestStatus:Mi.pending,subscriptionId:void 0}))}.bind(void 0),CO=void 0,G4=function(t,r){return Pt(this,CO),t.receive("ok",r.onSucceed).receive("error",r.onError).receive("timeout",r.onTimeout)}.bind(void 0),Ld=void 0,qO=function(t,r){var a=this;return Pt(this,Ld),function(n){var d=this;return Pt(this,a),function(){Pt(this,d);var m=X0(t.notifiers,"request",r);if(m){for(var b=arguments.length,A=new Array(b),B=0;B0}.bind(void 0),lD=function(t){var r=this;return Pt(this,Qi),function(){Pt(this,r),uD(t)&&a8(t)}.bind(this)}.bind(void 0),cD="__absinthe__:control",dD=function(t){Pt(this,Qi);var r={phoenixSocket:t,channel:t.channel(cD),channelJoinCreated:!1,notifiers:[]};return t.onOpen(lD(r)),t.onClose(hD(r)),t.onMessage(fD(r)),r}.bind(void 0),vD=void 0,pD=function(t,r){var a=t.activeObservers,n=Z0(t,["activeObservers"]);return Pt(this,vD),wi({},n,{activeObservers:Qo(a).concat([r]),isActive:!0})}.bind(void 0),gD=void 0,h8=function(t,r,a){return Pt(this,gD),cn(t,pD(r,a))}.bind(void 0),u8=void 0,mD=function(t,r){return Pt(this,u8),{operationType:r,request:t,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:Mi.pending,subscriptionId:void 0}}.bind(void 0),bD=function(t){return Pt(this,u8),mD(t,Td.getOperationType(t.operation))}.bind(void 0),yD=void 0,xD=function(t){return Pt(this,yD),t.isActive?t:wi({},t,{isActive:!0})}.bind(void 0),Bf=void 0,wD=function(t){Pt(this,Bf),t.phoenixSocket.isConnected()?a8(t):t.phoenixSocket.connect()}.bind(void 0),MD=function(t,r){Pt(this,Bf);var a=bD(r);return ln(t,W0.append([a])),t.channelJoinCreated?f8(t,a):wD(t),a}.bind(void 0),N4=function(t,r){return Pt(this,Bf),cn(t,xD(r))}.bind(void 0),AD=function(t,r){return Pt(this,Bf),r.requestStatus===Mi.sending?N4(t,Vo(r)):N4(t,r)}.bind(void 0),_D=function(t,r){return Pt(this,Bf),r.isActive?r:AD(t,r)}.bind(void 0),ID=function(t,r){Pt(this,Bf);var a=X0(t.notifiers,"request",r);return a&&_D(t,a)}.bind(void 0),ED=function(t,r){return Pt(this,Bf),ID(t,r)||MD(t,r)}.bind(void 0),ih=void 0,SD=function(t,r,a,n){var d=this,m=r.request;return Pt(this,ih),function(){Pt(this,d);var b=X0(t.notifiers,"request",m);n(t,b,b?a:void 0)}.bind(this)}.bind(void 0),BD=function(t,r){var a=this,n=t.operationType;return Pt(this,ih),function(d){Pt(this,a),r.next(d),n!=="subscription"&&r.complete()}.bind(this)}.bind(void 0),CD=function(t,r,a){return Pt(this,ih),wi({},r,{onAbort:a.error.bind(a),onResult:BD(t,a)})}.bind(void 0),qD=function(t,r){var a=this,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},d=n.unsubscribe,m=Z0(n,["unsubscribe"]);return Pt(this,ih),new oO(function(b){Pt(this,a);var A=CD(r,m,b);return h8(t,r,A),d&&SD(t,r,A,d)}.bind(this))}.bind(void 0),l8=void 0,RD=function(t,r){return Pt(this,l8),W0.remove(t.indexOf(r),1,t)}.bind(void 0),TD=function(t,r){var a=t.activeObservers,n=Z0(t,["activeObservers"]);return Pt(this,l8),wi({},n,{activeObservers:RD(a,r)})}.bind(void 0),c8=void 0,OD=function(t,r){if(Pt(this,c8),t.activeObservers.includes(r))return t;throw new Error("Observer is not attached to notifier")}.bind(void 0),d8=function(t,r,a){return Pt(this,c8),ln(t,Pd(TD(OD(r,a),a)))}.bind(void 0),v8=void 0,DD=function(t,r,a){return Pt(this,v8),r.activeObservers.length===1?n8(t,r):d8(t,r,a)}.bind(void 0),kD=function(t,r,a){return Pt(this,v8),r.isActive?DD(t,r,a):t}.bind(void 0);vn.cancel=n8;vn.create=dD;vn.observe=h8;vn.send=ED;vn.toObservable=qD;vn.unobserve=d8;vn.unobserveOrCancel=kD});var Nd=P((MX,$o)=>{M();var{Socket:PD}=bl(),UD=y2(),Go=p8();$o.exports.absintheCreate=function(e){let t=new PD(e,{transport:UD});return Go.create(t)};$o.exports.absintheSend=function(e,t){return Go.send(e,{operation:t})};$o.exports.absintheObserve=function(e,t,r){return new Promise((a,n)=>{Go.observe(e,t,{onStart:function(){a(t)},onError:function(d){Go.cancel(e,t),n(d)},onResult:function(d){r(d)}})})};$o.exports.absintheCancel=function(e,t){Go.cancel(e,t)}});var ve=P((Kd,C8)=>{M();var fh=On(),ji=fh.Buffer;function B8(e,t){for(var r in e)t[r]=e[r]}ji.from&&ji.alloc&&ji.allocUnsafe&&ji.allocUnsafeSlow?C8.exports=fh:(B8(fh,Kd),Kd.Buffer=Cf);function Cf(e,t,r){return ji(e,t,r)}Cf.prototype=Object.create(ji.prototype);B8(ji,Cf);Cf.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ji(e,t,r)};Cf.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var a=ji(e);return t!==void 0?typeof r=="string"?a.fill(t,r):a.fill(t):a.fill(0),a};Cf.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ji(e)};Cf.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return fh.SlowBuffer(e)}});var qf=P((BX,Hd)=>{"use strict";M();var Qd=65536,KD=4294967295;function QD(){throw new Error(`Secure random number generation is not supported by this browser. +Use Chrome, Firefox or Internet Explorer 11`)}var HD=ve().Buffer,ah=global.crypto||global.msCrypto;ah&&ah.getRandomValues?Hd.exports=jD:Hd.exports=QD;function jD(e,t){if(e>KD)throw new RangeError("requested too many random bytes");var r=HD.allocUnsafe(e);if(e>0)if(e>Qd)for(var a=0;a{M();typeof Object.create=="function"?jd.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:jd.exports=function(t,r){if(r){t.super_=r;var a=function(){};a.prototype=r.prototype,t.prototype=new a,t.prototype.constructor=t}}});var hh=P((TX,zd)=>{"use strict";M();var Aa=typeof Reflect=="object"?Reflect:null,q8=Aa&&typeof Aa.apply=="function"?Aa.apply:function(t,r,a){return Function.prototype.apply.call(t,r,a)},oh;Aa&&typeof Aa.ownKeys=="function"?oh=Aa.ownKeys:Object.getOwnPropertySymbols?oh=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:oh=function(t){return Object.getOwnPropertyNames(t)};function zD(e){console&&console.warn&&console.warn(e)}var T8=Number.isNaN||function(t){return t!==t};function He(){He.init.call(this)}zd.exports=He;zd.exports.once=$D;He.EventEmitter=He;He.prototype._events=void 0;He.prototype._eventsCount=0;He.prototype._maxListeners=void 0;var R8=10;function sh(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(He,"defaultMaxListeners",{enumerable:!0,get:function(){return R8},set:function(e){if(typeof e!="number"||e<0||T8(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");R8=e}});He.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};He.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||T8(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function O8(e){return e._maxListeners===void 0?He.defaultMaxListeners:e._maxListeners}He.prototype.getMaxListeners=function(){return O8(this)};He.prototype.emit=function(t){for(var r=[],a=1;a0&&(m=r[0]),m instanceof Error)throw m;var b=new Error("Unhandled error."+(m?" ("+m.message+")":""));throw b.context=m,b}var A=d[t];if(A===void 0)return!1;if(typeof A=="function")q8(A,this,r);else for(var B=A.length,C=L8(A,B),a=0;a0&&m.length>n&&!m.warned){m.warned=!0;var b=new Error("Possible EventEmitter memory leak detected. "+m.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");b.name="MaxListenersExceededWarning",b.emitter=e,b.type=t,b.count=m.length,zD(b)}return e}He.prototype.addListener=function(t,r){return D8(this,t,r,!1)};He.prototype.on=He.prototype.addListener;He.prototype.prependListener=function(t,r){return D8(this,t,r,!0)};function VD(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function k8(e,t,r){var a={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},n=VD.bind(a);return n.listener=r,a.wrapFn=n,n}He.prototype.once=function(t,r){return sh(r),this.on(t,k8(this,t,r)),this};He.prototype.prependOnceListener=function(t,r){return sh(r),this.prependListener(t,k8(this,t,r)),this};He.prototype.removeListener=function(t,r){var a,n,d,m,b;if(sh(r),n=this._events,n===void 0)return this;if(a=n[t],a===void 0)return this;if(a===r||a.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete n[t],n.removeListener&&this.emit("removeListener",t,a.listener||r));else if(typeof a!="function"){for(d=-1,m=a.length-1;m>=0;m--)if(a[m]===r||a[m].listener===r){b=a[m].listener,d=m;break}if(d<0)return this;d===0?a.shift():YD(a,d),a.length===1&&(n[t]=a[0]),n.removeListener!==void 0&&this.emit("removeListener",t,b||r)}return this};He.prototype.off=He.prototype.removeListener;He.prototype.removeAllListeners=function(t){var r,a,n;if(a=this._events,a===void 0)return this;if(a.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):a[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete a[t]),this;if(arguments.length===0){var d=Object.keys(a),m;for(n=0;n=0;n--)this.removeListener(t,r[n]);return this};function P8(e,t,r){var a=e._events;if(a===void 0)return[];var n=a[t];return n===void 0?[]:typeof n=="function"?r?[n.listener||n]:[n]:r?GD(n):L8(n,n.length)}He.prototype.listeners=function(t){return P8(this,t,!0)};He.prototype.rawListeners=function(t){return P8(this,t,!1)};He.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):U8.call(e,t)};He.prototype.listenerCount=U8;function U8(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}He.prototype.eventNames=function(){return this._eventsCount>0?oh(this._events):[]};function L8(e,t){for(var r=new Array(t),a=0;a{M();F8.exports=hh().EventEmitter});var Yd=P(()=>{M()});var j8=P((NX,H8)=>{"use strict";M();function K8(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),r.push.apply(r,a)}return r}function WD(e){for(var t=1;t0?this.tail.next=a:this.head=a,this.tail=a,++this.length}},{key:"unshift",value:function(r){var a={data:r,next:this.head};this.length===0&&(this.tail=a),this.head=a,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var a=this.head,n=""+a.data;a=a.next;)n+=r+a.data;return n}},{key:"concat",value:function(r){if(this.length===0)return uh.alloc(0);for(var a=uh.allocUnsafe(r>>>0),n=this.head,d=0;n;)nk(n.data,a,d),d+=n.data.length,n=n.next;return a}},{key:"consume",value:function(r,a){var n;return rm.length?m.length:r;if(b===m.length?d+=m:d+=m.slice(0,r),r-=b,r===0){b===m.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=m.slice(b));break}++n}return this.length-=n,d}},{key:"_getBuffer",value:function(r){var a=uh.allocUnsafe(r),n=this.head,d=1;for(n.data.copy(a),r-=n.data.length;n=n.next;){var m=n.data,b=r>m.length?m.length:r;if(m.copy(a,a.length-r,0,b),r-=b,r===0){b===m.length?(++d,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=m.slice(b));break}++d}return this.length-=d,a}},{key:ik,value:function(r,a){return Gd(this,WD({},a,{depth:0,customInspect:!1}))}}]),e}()});var Zd=P((KX,V8)=>{"use strict";M();function fk(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return a||n?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick($d,this,e)):process.nextTick($d,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(d){!t&&d?r._writableState?r._writableState.errorEmitted?process.nextTick(lh,r):(r._writableState.errorEmitted=!0,process.nextTick(z8,r,d)):process.nextTick(z8,r,d):t?(process.nextTick(lh,r),t(d)):process.nextTick(lh,r)}),this)}function z8(e,t){$d(e,t),lh(e)}function lh(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function ak(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function $d(e,t){e.emit("error",t)}function ok(e,t){var r=e._readableState,a=e._writableState;r&&r.autoDestroy||a&&a.autoDestroy?e.destroy(t):e.emit("error",t)}V8.exports={destroy:fk,undestroy:ak,errorOrDestroy:ok}});var Rf=P((HX,$8)=>{"use strict";M();function sk(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var G8={};function ei(e,t,r){r||(r=Error);function a(d,m,b){return typeof t=="string"?t:t(d,m,b)}var n=function(d){sk(m,d);function m(b,A,B){return d.call(this,a(b,A,B))||this}return m}(r);n.prototype.name=r.name,n.prototype.code=e,G8[e]=n}function Y8(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(a){return String(a)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function hk(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function uk(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function lk(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}ei("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);ei("ERR_INVALID_ARG_TYPE",function(e,t,r){var a;typeof t=="string"&&hk(t,"not ")?(a="must not be",t=t.replace(/^not /,"")):a="must be";var n;if(uk(e," argument"))n="The ".concat(e," ").concat(a," ").concat(Y8(t,"type"));else{var d=lk(e,".")?"property":"argument";n='The "'.concat(e,'" ').concat(d," ").concat(a," ").concat(Y8(t,"type"))}return n+=". Received type ".concat(typeof r),n},TypeError);ei("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");ei("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});ei("ERR_STREAM_PREMATURE_CLOSE","Premature close");ei("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});ei("ERR_MULTIPLE_CALLBACK","Callback called multiple times");ei("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");ei("ERR_STREAM_WRITE_AFTER_END","write after end");ei("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);ei("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);ei("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");$8.exports.codes=G8});var Wd=P((zX,Z8)=>{"use strict";M();var ck=Rf().codes.ERR_INVALID_OPT_VALUE;function dk(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function vk(e,t,r,a){var n=dk(t,a,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var d=a?r:"highWaterMark";throw new ck(d,n)}return Math.floor(n)}return e.objectMode?16:16*1024}Z8.exports={getHighWaterMark:vk}});var J8=P((YX,W8)=>{M();W8.exports=pk;function pk(e,t){if(Jd("noDeprecation"))return e;var r=!1;function a(){if(!r){if(Jd("throwDeprecation"))throw new Error(t);Jd("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return a}function Jd(e){try{if(!global.localStorage)return!1}catch{return!1}var t=global.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var vh=P(($X,nx)=>{"use strict";M();nx.exports=Xe;function tx(e){var t=this;this.next=null,this.entry=null,this.finish=function(){Qk(t,e)}}var _a;Xe.WritableState=Wo;var gk={deprecate:J8()},ex=Vd(),dh=On().Buffer,mk=global.Uint8Array||function(){};function bk(e){return dh.from(e)}function yk(e){return dh.isBuffer(e)||e instanceof mk}var t1=Zd(),xk=Wd(),wk=xk.getHighWaterMark,Vn=Rf().codes,Mk=Vn.ERR_INVALID_ARG_TYPE,Ak=Vn.ERR_METHOD_NOT_IMPLEMENTED,_k=Vn.ERR_MULTIPLE_CALLBACK,Ik=Vn.ERR_STREAM_CANNOT_PIPE,Ek=Vn.ERR_STREAM_DESTROYED,Sk=Vn.ERR_STREAM_NULL_VALUES,Bk=Vn.ERR_STREAM_WRITE_AFTER_END,Ck=Vn.ERR_UNKNOWN_ENCODING,Ia=t1.errorOrDestroy;ge()(Xe,ex);function qk(){}function Wo(e,t,r){_a=_a||Yn(),e=e||{},typeof r!="boolean"&&(r=t instanceof _a),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=wk(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=e.decodeStrings===!1;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){Uk(t,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new tx(this)}Wo.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(Wo.prototype,"buffer",{get:gk.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var ch;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(ch=Function.prototype[Symbol.hasInstance],Object.defineProperty(Xe,Symbol.hasInstance,{value:function(t){return ch.call(this,t)?!0:this!==Xe?!1:t&&t._writableState instanceof Wo}})):ch=function(t){return t instanceof this};function Xe(e){_a=_a||Yn();var t=this instanceof _a;if(!t&&!ch.call(Xe,this))return new Xe(e);this._writableState=new Wo(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),ex.call(this)}Xe.prototype.pipe=function(){Ia(this,new Ik)};function Rk(e,t){var r=new Bk;Ia(e,r),process.nextTick(t,r)}function Tk(e,t,r,a){var n;return r===null?n=new Sk:typeof r!="string"&&!t.objectMode&&(n=new Mk("chunk",["string","Buffer"],r)),n?(Ia(e,n),process.nextTick(a,n),!1):!0}Xe.prototype.write=function(e,t,r){var a=this._writableState,n=!1,d=!a.objectMode&&yk(e);return d&&!dh.isBuffer(e)&&(e=bk(e)),typeof t=="function"&&(r=t,t=null),d?t="buffer":t||(t=a.defaultEncoding),typeof r!="function"&&(r=qk),a.ending?Rk(this,r):(d||Tk(this,a,e,r))&&(a.pendingcb++,n=Dk(this,a,d,e,t,r)),n};Xe.prototype.cork=function(){this._writableState.corked++};Xe.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&rx(this,e))};Xe.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new Ck(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(Xe.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Ok(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=dh.from(t,r)),t}Object.defineProperty(Xe.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Dk(e,t,r,a,n,d){if(!r){var m=Ok(t,a,n);a!==m&&(r=!0,n="buffer",a=m)}var b=t.objectMode?1:a.length;t.length+=b;var A=t.length{"use strict";M();var Hk=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};ax.exports=zi;var fx=mh(),r1=vh();ge()(zi,fx);for(e1=Hk(r1.prototype),ph=0;ph{"use strict";M();var n1=ve().Buffer,ox=n1.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Vk(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function Yk(e){var t=Vk(e);if(typeof t!="string"&&(n1.isEncoding===ox||!ox(e)))throw new Error("Unknown encoding: "+e);return t||e}sx.StringDecoder=Jo;function Jo(e){this.encoding=Yk(e);var t;switch(this.encoding){case"utf16le":this.text=Xk,this.end=tP,t=4;break;case"utf8":this.fillLast=Zk,t=4;break;case"base64":this.text=eP,this.end=rP,t=3;break;default:this.write=iP,this.end=nP;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=n1.allocUnsafe(t)}Jo.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function Gk(e,t,r){var a=t.length-1;if(a=0?(n>0&&(e.lastNeed=n-1),n):--a=0?(n>0&&(e.lastNeed=n-2),n):--a=0?(n>0&&(n===2?n=0:e.lastNeed=n-3),n):0))}function $k(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function Zk(e){var t=this.lastTotal-this.lastNeed,r=$k(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function Wk(e,t){var r=Gk(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var a=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,a),e.toString("utf8",t,a)}function Jk(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function Xk(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var a=r.charCodeAt(r.length-1);if(a>=55296&&a<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function tP(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function eP(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function rP(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function iP(e){return e.toString(this.encoding)}function nP(e){return e&&e.length?this.write(e):""}});var Xo=P((ett,lx)=>{"use strict";M();var hx=Rf().codes.ERR_STREAM_PREMATURE_CLOSE;function fP(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,a=new Array(r),n=0;n{"use strict";M();var yh;function Gn(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var sP=Xo(),$n=Symbol("lastResolve"),Tf=Symbol("lastReject"),ts=Symbol("error"),xh=Symbol("ended"),Of=Symbol("lastPromise"),f1=Symbol("handlePromise"),Df=Symbol("stream");function Zn(e,t){return{value:e,done:t}}function hP(e){var t=e[$n];if(t!==null){var r=e[Df].read();r!==null&&(e[Of]=null,e[$n]=null,e[Tf]=null,t(Zn(r,!1)))}}function uP(e){process.nextTick(hP,e)}function lP(e,t){return function(r,a){e.then(function(){if(t[xh]){r(Zn(void 0,!0));return}t[f1](r,a)},a)}}var cP=Object.getPrototypeOf(function(){}),dP=Object.setPrototypeOf((yh={get stream(){return this[Df]},next:function(){var t=this,r=this[ts];if(r!==null)return Promise.reject(r);if(this[xh])return Promise.resolve(Zn(void 0,!0));if(this[Df].destroyed)return new Promise(function(m,b){process.nextTick(function(){t[ts]?b(t[ts]):m(Zn(void 0,!0))})});var a=this[Of],n;if(a)n=new Promise(lP(a,this));else{var d=this[Df].read();if(d!==null)return Promise.resolve(Zn(d,!1));n=new Promise(this[f1])}return this[Of]=n,n}},Gn(yh,Symbol.asyncIterator,function(){return this}),Gn(yh,"return",function(){var t=this;return new Promise(function(r,a){t[Df].destroy(null,function(n){if(n){a(n);return}r(Zn(void 0,!0))})})}),yh),cP),vP=function(t){var r,a=Object.create(dP,(r={},Gn(r,Df,{value:t,writable:!0}),Gn(r,$n,{value:null,writable:!0}),Gn(r,Tf,{value:null,writable:!0}),Gn(r,ts,{value:null,writable:!0}),Gn(r,xh,{value:t._readableState.endEmitted,writable:!0}),Gn(r,f1,{value:function(d,m){var b=a[Df].read();b?(a[Of]=null,a[$n]=null,a[Tf]=null,d(Zn(b,!1))):(a[$n]=d,a[Tf]=m)},writable:!0}),r));return a[Of]=null,sP(t,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var d=a[Tf];d!==null&&(a[Of]=null,a[$n]=null,a[Tf]=null,d(n)),a[ts]=n;return}var m=a[$n];m!==null&&(a[Of]=null,a[$n]=null,a[Tf]=null,m(Zn(void 0,!0))),a[xh]=!0}),t.on("readable",uP.bind(null,a)),a};cx.exports=vP});var px=P((ftt,vx)=>{M();vx.exports=function(){throw new Error("Readable.from is not available in the browser")}});var mh=P((stt,Ix)=>{"use strict";M();Ix.exports=Be;var Ea;Be.ReadableState=yx;var ott=hh().EventEmitter,bx=function(t,r){return t.listeners(r).length},rs=Vd(),wh=On().Buffer,pP=global.Uint8Array||function(){};function gP(e){return wh.from(e)}function mP(e){return wh.isBuffer(e)||e instanceof pP}var a1=Yd(),xe;a1&&a1.debuglog?xe=a1.debuglog("stream"):xe=function(){};var bP=j8(),d1=Zd(),yP=Wd(),xP=yP.getHighWaterMark,Mh=Rf().codes,wP=Mh.ERR_INVALID_ARG_TYPE,MP=Mh.ERR_STREAM_PUSH_AFTER_EOF,AP=Mh.ERR_METHOD_NOT_IMPLEMENTED,_P=Mh.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Sa,o1,s1;ge()(Be,rs);var es=d1.errorOrDestroy,h1=["error","close","destroy","pause","resume"];function IP(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function yx(e,t,r){Ea=Ea||Yn(),e=e||{},typeof r!="boolean"&&(r=t instanceof Ea),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=xP(this,e,"readableHighWaterMark",r),this.buffer=new bP,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Sa||(Sa=bh().StringDecoder),this.decoder=new Sa(e.encoding),this.encoding=e.encoding)}function Be(e){if(Ea=Ea||Yn(),!(this instanceof Be))return new Be(e);var t=this instanceof Ea;this._readableState=new yx(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),rs.call(this)}Object.defineProperty(Be.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){!this._readableState||(this._readableState.destroyed=t)}});Be.prototype.destroy=d1.destroy;Be.prototype._undestroy=d1.undestroy;Be.prototype._destroy=function(e,t){t(e)};Be.prototype.push=function(e,t){var r=this._readableState,a;return r.objectMode?a=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=wh.from(e,t),t=""),a=!0),xx(this,e,t,!1,a)};Be.prototype.unshift=function(e){return xx(this,e,null,!0,!1)};function xx(e,t,r,a,n){xe("readableAddChunk",t);var d=e._readableState;if(t===null)d.reading=!1,BP(e,d);else{var m;if(n||(m=EP(d,t)),m)es(e,m);else if(d.objectMode||t&&t.length>0)if(typeof t!="string"&&!d.objectMode&&Object.getPrototypeOf(t)!==wh.prototype&&(t=gP(t)),a)d.endEmitted?es(e,new _P):u1(e,d,t,!0);else if(d.ended)es(e,new MP);else{if(d.destroyed)return!1;d.reading=!1,d.decoder&&!r?(t=d.decoder.write(t),d.objectMode||t.length!==0?u1(e,d,t,!1):c1(e,d)):u1(e,d,t,!1)}else a||(d.reading=!1,c1(e,d))}return!d.ended&&(d.length=gx?e=gx:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function mx(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=SP(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}Be.prototype.read=function(e){xe("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return xe("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?l1(this):Ah(this),null;if(e=mx(e,t),e===0&&t.ended)return t.length===0&&l1(this),null;var a=t.needReadable;xe("need readable",a),(t.length===0||t.length-e0?n=Ax(e,t):n=null,n===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&l1(this)),n!==null&&this.emit("data",n),n};function BP(e,t){if(xe("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?Ah(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,wx(e)))}}function Ah(e){var t=e._readableState;xe("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xe("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(wx,e))}function wx(e){var t=e._readableState;xe("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,v1(e)}function c1(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(CP,e,t))}function CP(e,t){for(;!t.reading&&!t.ended&&(t.length1&&_x(a.pipes,e)!==-1)&&!B&&(xe("false write response, pause",a.awaitDrain),a.awaitDrain++),r.pause())}function K(Rt){xe("onerror",Rt),qt(),e.removeListener("error",K),bx(e,"error")===0&&es(e,Rt)}IP(e,"error",K);function j(){e.removeListener("finish",Z),qt()}e.once("close",j);function Z(){xe("onfinish"),e.removeListener("close",j),qt()}e.once("finish",Z);function qt(){xe("unpipe"),r.unpipe(e)}return e.emit("pipe",r),a.flowing||(xe("pipe resume"),r.resume()),e};function qP(e){return function(){var r=e._readableState;xe("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&bx(e,"data")&&(r.flowing=!0,v1(e))}}Be.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var a=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var d=0;d0,a.flowing!==!1&&this.resume()):e==="readable"&&!a.endEmitted&&!a.readableListening&&(a.readableListening=a.needReadable=!0,a.flowing=!1,a.emittedReadable=!1,xe("on readable",a.length,a.reading),a.length?Ah(this):a.reading||process.nextTick(RP,this)),r};Be.prototype.addListener=Be.prototype.on;Be.prototype.removeListener=function(e,t){var r=rs.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(Mx,this),r};Be.prototype.removeAllListeners=function(e){var t=rs.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(Mx,this),t};function Mx(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function RP(e){xe("readable nexttick read 0"),e.read(0)}Be.prototype.resume=function(){var e=this._readableState;return e.flowing||(xe("resume"),e.flowing=!e.readableListening,TP(this,e)),e.paused=!1,this};function TP(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(OP,e,t))}function OP(e,t){xe("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),v1(e),t.flowing&&!t.reading&&e.read(0)}Be.prototype.pause=function(){return xe("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(xe("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function v1(e){var t=e._readableState;for(xe("flow",t.flowing);t.flowing&&e.read()!==null;);}Be.prototype.wrap=function(e){var t=this,r=this._readableState,a=!1;e.on("end",function(){if(xe("wrapped end"),r.decoder&&!r.ended){var m=r.decoder.end();m&&m.length&&t.push(m)}t.push(null)}),e.on("data",function(m){if(xe("wrapped data"),r.decoder&&(m=r.decoder.write(m)),!(r.objectMode&&m==null)&&!(!r.objectMode&&(!m||!m.length))){var b=t.push(m);b||(a=!0,e.pause())}});for(var n in e)this[n]===void 0&&typeof e[n]=="function"&&(this[n]=function(b){return function(){return e[b].apply(e,arguments)}}(n));for(var d=0;d=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function l1(e){var t=e._readableState;xe("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(DP,t,e))}function DP(e,t){if(xe("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(Be.from=function(e,t){return s1===void 0&&(s1=px()),s1(Be,e,t)});function _x(e,t){for(var r=0,a=e.length;r{"use strict";M();Sx.exports=gn;var _h=Rf().codes,kP=_h.ERR_METHOD_NOT_IMPLEMENTED,PP=_h.ERR_MULTIPLE_CALLBACK,UP=_h.ERR_TRANSFORM_ALREADY_TRANSFORMING,LP=_h.ERR_TRANSFORM_WITH_LENGTH_0,Ih=Yn();ge()(gn,Ih);function NP(e,t){var r=this._transformState;r.transforming=!1;var a=r.writecb;if(a===null)return this.emit("error",new PP);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),a(e);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";M();Cx.exports=is;var Bx=Eh();ge()(is,Bx);function is(e){if(!(this instanceof is))return new is(e);Bx.call(this,e)}is.prototype._transform=function(e,t,r){r(null,e)}});var m1=P((vtt,Ox)=>{"use strict";M();var g1;function KP(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var Tx=Rf().codes,QP=Tx.ERR_MISSING_ARGS,HP=Tx.ERR_STREAM_DESTROYED;function qx(e){if(e)throw e}function jP(e){return e.setHeader&&typeof e.abort=="function"}function zP(e,t,r,a){a=KP(a);var n=!1;e.on("close",function(){n=!0}),g1===void 0&&(g1=Xo()),g1(e,{readable:t,writable:r},function(m){if(m)return a(m);n=!0,a()});var d=!1;return function(m){if(!n&&!d){if(d=!0,jP(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();a(m||new HP("pipe"))}}}function Rx(e){e()}function VP(e,t){return e.pipe(t)}function YP(e){return!e.length||typeof e[e.length-1]!="function"?qx:e.pop()}function GP(){for(var e=arguments.length,t=new Array(e),r=0;r0;return zP(m,A,B,function(C){n||(n=C),C&&d.forEach(Rx),!A&&(d.forEach(Rx),a(n))})});return t.reduce(VP)}Ox.exports=GP});var b1=P((ri,Dx)=>{M();ri=Dx.exports=mh();ri.Stream=ri;ri.Readable=ri;ri.Writable=vh();ri.Duplex=Yn();ri.Transform=Eh();ri.PassThrough=p1();ri.finished=Xo();ri.pipeline=m1()});var y1=P((mtt,Px)=>{"use strict";M();var Sh=ve().Buffer,kx=b1().Transform,$P=ge();function ZP(e,t){if(!Sh.isBuffer(e)&&typeof e!="string")throw new TypeError(t+" must be a string or a buffer")}function Wn(e){kx.call(this),this._block=Sh.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}$P(Wn,kx);Wn.prototype._transform=function(e,t,r){var a=null;try{this.update(e,t)}catch(n){a=n}r(a)};Wn.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(r){t=r}e(t)};Wn.prototype.update=function(e,t){if(ZP(e,"Data"),this._finalized)throw new Error("Digest already called");Sh.isBuffer(e)||(e=Sh.from(e,t));for(var r=this._block,a=0;this._blockOffset+e.length-a>=this._blockSize;){for(var n=this._blockOffset;n0;++d)this._length[d]+=m,m=this._length[d]/4294967296|0,m>0&&(this._length[d]-=4294967296*m);return this};Wn.prototype._update=function(){throw new Error("_update is not implemented")};Wn.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();e!==void 0&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t};Wn.prototype._digest=function(){throw new Error("_digest is not implemented")};Px.exports=Wn});var qh=P((ytt,Lx)=>{"use strict";M();var WP=ge(),Ux=y1(),JP=ve().Buffer,XP=new Array(16);function Bh(){Ux.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}WP(Bh,Ux);Bh.prototype._update=function(){for(var e=XP,t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);var r=this._a,a=this._b,n=this._c,d=this._d;r=wr(r,a,n,d,e[0],3614090360,7),d=wr(d,r,a,n,e[1],3905402710,12),n=wr(n,d,r,a,e[2],606105819,17),a=wr(a,n,d,r,e[3],3250441966,22),r=wr(r,a,n,d,e[4],4118548399,7),d=wr(d,r,a,n,e[5],1200080426,12),n=wr(n,d,r,a,e[6],2821735955,17),a=wr(a,n,d,r,e[7],4249261313,22),r=wr(r,a,n,d,e[8],1770035416,7),d=wr(d,r,a,n,e[9],2336552879,12),n=wr(n,d,r,a,e[10],4294925233,17),a=wr(a,n,d,r,e[11],2304563134,22),r=wr(r,a,n,d,e[12],1804603682,7),d=wr(d,r,a,n,e[13],4254626195,12),n=wr(n,d,r,a,e[14],2792965006,17),a=wr(a,n,d,r,e[15],1236535329,22),r=Mr(r,a,n,d,e[1],4129170786,5),d=Mr(d,r,a,n,e[6],3225465664,9),n=Mr(n,d,r,a,e[11],643717713,14),a=Mr(a,n,d,r,e[0],3921069994,20),r=Mr(r,a,n,d,e[5],3593408605,5),d=Mr(d,r,a,n,e[10],38016083,9),n=Mr(n,d,r,a,e[15],3634488961,14),a=Mr(a,n,d,r,e[4],3889429448,20),r=Mr(r,a,n,d,e[9],568446438,5),d=Mr(d,r,a,n,e[14],3275163606,9),n=Mr(n,d,r,a,e[3],4107603335,14),a=Mr(a,n,d,r,e[8],1163531501,20),r=Mr(r,a,n,d,e[13],2850285829,5),d=Mr(d,r,a,n,e[2],4243563512,9),n=Mr(n,d,r,a,e[7],1735328473,14),a=Mr(a,n,d,r,e[12],2368359562,20),r=Ar(r,a,n,d,e[5],4294588738,4),d=Ar(d,r,a,n,e[8],2272392833,11),n=Ar(n,d,r,a,e[11],1839030562,16),a=Ar(a,n,d,r,e[14],4259657740,23),r=Ar(r,a,n,d,e[1],2763975236,4),d=Ar(d,r,a,n,e[4],1272893353,11),n=Ar(n,d,r,a,e[7],4139469664,16),a=Ar(a,n,d,r,e[10],3200236656,23),r=Ar(r,a,n,d,e[13],681279174,4),d=Ar(d,r,a,n,e[0],3936430074,11),n=Ar(n,d,r,a,e[3],3572445317,16),a=Ar(a,n,d,r,e[6],76029189,23),r=Ar(r,a,n,d,e[9],3654602809,4),d=Ar(d,r,a,n,e[12],3873151461,11),n=Ar(n,d,r,a,e[15],530742520,16),a=Ar(a,n,d,r,e[2],3299628645,23),r=_r(r,a,n,d,e[0],4096336452,6),d=_r(d,r,a,n,e[7],1126891415,10),n=_r(n,d,r,a,e[14],2878612391,15),a=_r(a,n,d,r,e[5],4237533241,21),r=_r(r,a,n,d,e[12],1700485571,6),d=_r(d,r,a,n,e[3],2399980690,10),n=_r(n,d,r,a,e[10],4293915773,15),a=_r(a,n,d,r,e[1],2240044497,21),r=_r(r,a,n,d,e[8],1873313359,6),d=_r(d,r,a,n,e[15],4264355552,10),n=_r(n,d,r,a,e[6],2734768916,15),a=_r(a,n,d,r,e[13],1309151649,21),r=_r(r,a,n,d,e[4],4149444226,6),d=_r(d,r,a,n,e[11],3174756917,10),n=_r(n,d,r,a,e[2],718787259,15),a=_r(a,n,d,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+a|0,this._c=this._c+n|0,this._d=this._d+d|0};Bh.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=JP.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};function Ch(e,t){return e<>>32-t}function wr(e,t,r,a,n,d,m){return Ch(e+(t&r|~t&a)+n+d|0,m)+t|0}function Mr(e,t,r,a,n,d,m){return Ch(e+(t&a|r&~a)+n+d|0,m)+t|0}function Ar(e,t,r,a,n,d,m){return Ch(e+(t^r^a)+n+d|0,m)+t|0}function _r(e,t,r,a,n,d,m){return Ch(e+(r^(t|~a))+n+d|0,m)+t|0}Lx.exports=Bh});var Th=P((wtt,zx)=>{"use strict";M();var x1=On().Buffer,tU=ge(),jx=y1(),eU=new Array(16),ns=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],fs=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],as=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],os=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],ss=[0,1518500249,1859775393,2400959708,2840853838],hs=[1352829926,1548603684,1836072691,2053994217,0];function Rh(){jx.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}tU(Rh,jx);Rh.prototype._update=function(){for(var e=eU,t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);for(var r=this._a|0,a=this._b|0,n=this._c|0,d=this._d|0,m=this._e|0,b=this._a|0,A=this._b|0,B=this._c|0,C=this._d|0,D=this._e|0,K=0;K<80;K+=1){var j,Z;K<16?(j=Nx(r,a,n,d,m,e[ns[K]],ss[0],as[K]),Z=Hx(b,A,B,C,D,e[fs[K]],hs[0],os[K])):K<32?(j=Fx(r,a,n,d,m,e[ns[K]],ss[1],as[K]),Z=Qx(b,A,B,C,D,e[fs[K]],hs[1],os[K])):K<48?(j=Kx(r,a,n,d,m,e[ns[K]],ss[2],as[K]),Z=Kx(b,A,B,C,D,e[fs[K]],hs[2],os[K])):K<64?(j=Qx(r,a,n,d,m,e[ns[K]],ss[3],as[K]),Z=Fx(b,A,B,C,D,e[fs[K]],hs[3],os[K])):(j=Hx(r,a,n,d,m,e[ns[K]],ss[4],as[K]),Z=Nx(b,A,B,C,D,e[fs[K]],hs[4],os[K])),r=m,m=d,d=kf(n,10),n=a,a=j,b=D,D=C,C=kf(B,10),B=A,A=Z}var qt=this._b+n+C|0;this._b=this._c+d+D|0,this._c=this._d+m+b|0,this._d=this._e+r+A|0,this._e=this._a+a+B|0,this._a=qt};Rh.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=x1.alloc?x1.alloc(20):new x1(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};function kf(e,t){return e<>>32-t}function Nx(e,t,r,a,n,d,m,b){return kf(e+(t^r^a)+d+m|0,b)+n|0}function Fx(e,t,r,a,n,d,m,b){return kf(e+(t&r|~t&a)+d+m|0,b)+n|0}function Kx(e,t,r,a,n,d,m,b){return kf(e+((t|~r)^a)+d+m|0,b)+n|0}function Qx(e,t,r,a,n,d,m,b){return kf(e+(t&a|r&~a)+d+m|0,b)+n|0}function Hx(e,t,r,a,n,d,m,b){return kf(e+(t^(r|~a))+d+m|0,b)+n|0}zx.exports=Rh});var Pf=P((Att,Yx)=>{M();var Vx=ve().Buffer;function Oh(e,t){this._block=Vx.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}Oh.prototype.update=function(e,t){typeof e=="string"&&(t=t||"utf8",e=Vx.from(e,t));for(var r=this._block,a=this._blockSize,n=e.length,d=this._len,m=0;m=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var a=(r&4294967295)>>>0,n=(r-a)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(a,this._blockSize-4)}this._update(this._block);var d=this._hash();return e?d.toString(e):d};Oh.prototype._update=function(){throw new Error("_update must be implemented by subclass")};Yx.exports=Oh});var Zx=P((Itt,$x)=>{M();var rU=ge(),Gx=Pf(),iU=ve().Buffer,nU=[1518500249,1859775393,-1894007588,-899497514],fU=new Array(80);function us(){this.init(),this._w=fU,Gx.call(this,64,56)}rU(us,Gx);us.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function aU(e){return e<<5|e>>>27}function oU(e){return e<<30|e>>>2}function sU(e,t,r,a){return e===0?t&r|~t&a:e===2?t&r|t&a|r&a:t^r^a}us.prototype._update=function(e){for(var t=this._w,r=this._a|0,a=this._b|0,n=this._c|0,d=this._d|0,m=this._e|0,b=0;b<16;++b)t[b]=e.readInt32BE(b*4);for(;b<80;++b)t[b]=t[b-3]^t[b-8]^t[b-14]^t[b-16];for(var A=0;A<80;++A){var B=~~(A/20),C=aU(r)+sU(B,a,n,d)+m+t[A]+nU[B]|0;m=d,d=n,n=oU(a),a=r,r=C}this._a=r+this._a|0,this._b=a+this._b|0,this._c=n+this._c|0,this._d=d+this._d|0,this._e=m+this._e|0};us.prototype._hash=function(){var e=iU.allocUnsafe(20);return e.writeInt32BE(this._a|0,0),e.writeInt32BE(this._b|0,4),e.writeInt32BE(this._c|0,8),e.writeInt32BE(this._d|0,12),e.writeInt32BE(this._e|0,16),e};$x.exports=us});var Xx=P((Stt,Jx)=>{M();var hU=ge(),Wx=Pf(),uU=ve().Buffer,lU=[1518500249,1859775393,-1894007588,-899497514],cU=new Array(80);function ls(){this.init(),this._w=cU,Wx.call(this,64,56)}hU(ls,Wx);ls.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function dU(e){return e<<1|e>>>31}function vU(e){return e<<5|e>>>27}function pU(e){return e<<30|e>>>2}function gU(e,t,r,a){return e===0?t&r|~t&a:e===2?t&r|t&a|r&a:t^r^a}ls.prototype._update=function(e){for(var t=this._w,r=this._a|0,a=this._b|0,n=this._c|0,d=this._d|0,m=this._e|0,b=0;b<16;++b)t[b]=e.readInt32BE(b*4);for(;b<80;++b)t[b]=dU(t[b-3]^t[b-8]^t[b-14]^t[b-16]);for(var A=0;A<80;++A){var B=~~(A/20),C=vU(r)+gU(B,a,n,d)+m+t[A]+lU[B]|0;m=d,d=n,n=pU(a),a=r,r=C}this._a=r+this._a|0,this._b=a+this._b|0,this._c=n+this._c|0,this._d=d+this._d|0,this._e=m+this._e|0};ls.prototype._hash=function(){var e=uU.allocUnsafe(20);return e.writeInt32BE(this._a|0,0),e.writeInt32BE(this._b|0,4),e.writeInt32BE(this._c|0,8),e.writeInt32BE(this._d|0,12),e.writeInt32BE(this._e|0,16),e};Jx.exports=ls});var w1=P((Ctt,ew)=>{M();var mU=ge(),tw=Pf(),bU=ve().Buffer,yU=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],xU=new Array(64);function cs(){this.init(),this._w=xU,tw.call(this,64,56)}mU(cs,tw);cs.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function wU(e,t,r){return r^e&(t^r)}function MU(e,t,r){return e&t|r&(e|t)}function AU(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function _U(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function IU(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}function EU(e){return(e>>>17|e<<15)^(e>>>19|e<<13)^e>>>10}cs.prototype._update=function(e){for(var t=this._w,r=this._a|0,a=this._b|0,n=this._c|0,d=this._d|0,m=this._e|0,b=this._f|0,A=this._g|0,B=this._h|0,C=0;C<16;++C)t[C]=e.readInt32BE(C*4);for(;C<64;++C)t[C]=EU(t[C-2])+t[C-7]+IU(t[C-15])+t[C-16]|0;for(var D=0;D<64;++D){var K=B+_U(m)+wU(m,b,A)+yU[D]+t[D]|0,j=AU(r)+MU(r,a,n)|0;B=A,A=b,b=m,m=d+K|0,d=n,n=a,a=r,r=K+j|0}this._a=r+this._a|0,this._b=a+this._b|0,this._c=n+this._c|0,this._d=d+this._d|0,this._e=m+this._e|0,this._f=b+this._f|0,this._g=A+this._g|0,this._h=B+this._h|0};cs.prototype._hash=function(){var e=bU.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};ew.exports=cs});var iw=P((Rtt,rw)=>{M();var SU=ge(),BU=w1(),CU=Pf(),qU=ve().Buffer,RU=new Array(64);function Dh(){this.init(),this._w=RU,CU.call(this,64,56)}SU(Dh,BU);Dh.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this};Dh.prototype._hash=function(){var e=qU.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};rw.exports=Dh});var M1=P((Ott,uw)=>{M();var TU=ge(),hw=Pf(),OU=ve().Buffer,nw=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],DU=new Array(160);function ds(){this.init(),this._w=DU,hw.call(this,128,112)}TU(ds,hw);ds.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function fw(e,t,r){return r^e&(t^r)}function aw(e,t,r){return e&t|r&(e|t)}function ow(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function sw(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function kU(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function PU(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function UU(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function LU(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hr(e,t){return e>>>0>>0?1:0}ds.prototype._update=function(e){for(var t=this._w,r=this._ah|0,a=this._bh|0,n=this._ch|0,d=this._dh|0,m=this._eh|0,b=this._fh|0,A=this._gh|0,B=this._hh|0,C=this._al|0,D=this._bl|0,K=this._cl|0,j=this._dl|0,Z=this._el|0,qt=this._fl|0,Rt=this._gl|0,J=this._hl|0,Ot=0;Ot<32;Ot+=2)t[Ot]=e.readInt32BE(Ot*4),t[Ot+1]=e.readInt32BE(Ot*4+4);for(;Ot<160;Ot+=2){var ht=t[Ot-30],Lt=t[Ot-15*2+1],ee=kU(ht,Lt),$t=PU(Lt,ht);ht=t[Ot-2*2],Lt=t[Ot-2*2+1];var Gt=UU(ht,Lt),tt=LU(Lt,ht),rt=t[Ot-7*2],v=t[Ot-7*2+1],i=t[Ot-16*2],o=t[Ot-16*2+1],h=$t+v|0,s=ee+rt+hr(h,$t)|0;h=h+tt|0,s=s+Gt+hr(h,tt)|0,h=h+o|0,s=s+i+hr(h,o)|0,t[Ot]=s,t[Ot+1]=h}for(var u=0;u<160;u+=2){s=t[u],h=t[u+1];var p=aw(r,a,n),g=aw(C,D,K),l=ow(r,C),f=ow(C,r),c=sw(m,Z),I=sw(Z,m),w=nw[u],S=nw[u+1],k=fw(m,b,A),E=fw(Z,qt,Rt),L=J+I|0,$=B+c+hr(L,J)|0;L=L+E|0,$=$+k+hr(L,E)|0,L=L+S|0,$=$+w+hr(L,S)|0,L=L+h|0,$=$+s+hr(L,h)|0;var F=f+g|0,Q=l+p+hr(F,f)|0;B=A,J=Rt,A=b,Rt=qt,b=m,qt=Z,Z=j+L|0,m=d+$+hr(Z,j)|0,d=n,j=K,n=a,K=D,a=r,D=C,C=L+F|0,r=$+Q+hr(C,L)|0}this._al=this._al+C|0,this._bl=this._bl+D|0,this._cl=this._cl+K|0,this._dl=this._dl+j|0,this._el=this._el+Z|0,this._fl=this._fl+qt|0,this._gl=this._gl+Rt|0,this._hl=this._hl+J|0,this._ah=this._ah+r+hr(this._al,C)|0,this._bh=this._bh+a+hr(this._bl,D)|0,this._ch=this._ch+n+hr(this._cl,K)|0,this._dh=this._dh+d+hr(this._dl,j)|0,this._eh=this._eh+m+hr(this._el,Z)|0,this._fh=this._fh+b+hr(this._fl,qt)|0,this._gh=this._gh+A+hr(this._gl,Rt)|0,this._hh=this._hh+B+hr(this._hl,J)|0};ds.prototype._hash=function(){var e=OU.allocUnsafe(64);function t(r,a,n){e.writeInt32BE(r,n),e.writeInt32BE(a,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};uw.exports=ds});var cw=P((ktt,lw)=>{M();var NU=ge(),FU=M1(),KU=Pf(),QU=ve().Buffer,HU=new Array(160);function kh(){this.init(),this._w=HU,KU.call(this,128,112)}NU(kh,FU);kh.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this};kh.prototype._hash=function(){var e=QU.allocUnsafe(48);function t(r,a,n){e.writeInt32BE(r,n),e.writeInt32BE(a,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};lw.exports=kh});var Ph=P((mn,dw)=>{M();var mn=dw.exports=function(t){t=t.toLowerCase();var r=mn[t];if(!r)throw new Error(t+" is not supported (we accept pull requests)");return new r};mn.sha=Zx();mn.sha1=Xx();mn.sha224=iw();mn.sha256=w1();mn.sha384=cw();mn.sha512=M1()});var pw=P((Ltt,vw)=>{M();vw.exports=ii;var A1=hh().EventEmitter,jU=ge();jU(ii,A1);ii.Readable=mh();ii.Writable=vh();ii.Duplex=Yn();ii.Transform=Eh();ii.PassThrough=p1();ii.finished=Xo();ii.pipeline=m1();ii.Stream=ii;function ii(){A1.call(this)}ii.prototype.pipe=function(e,t){var r=this;function a(C){e.writable&&e.write(C)===!1&&r.pause&&r.pause()}r.on("data",a);function n(){r.readable&&r.resume&&r.resume()}e.on("drain",n),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",m),r.on("close",b));var d=!1;function m(){d||(d=!0,e.end())}function b(){d||(d=!0,typeof e.destroy=="function"&&e.destroy())}function A(C){if(B(),A1.listenerCount(this,"error")===0)throw C}r.on("error",A),e.on("error",A);function B(){r.removeListener("data",a),e.removeListener("drain",n),r.removeListener("end",m),r.removeListener("close",b),r.removeListener("error",A),e.removeListener("error",A),r.removeListener("end",B),r.removeListener("close",B),e.removeListener("close",B)}return r.on("end",B),r.on("close",B),e.on("close",B),e.emit("pipe",r),e}});var bn=P((Ftt,bw)=>{M();var gw=ve().Buffer,mw=pw().Transform,zU=bh().StringDecoder,VU=ge();function Ai(e){mw.call(this),this.hashMode=typeof e=="string",this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}VU(Ai,mw);Ai.prototype.update=function(e,t,r){typeof e=="string"&&(e=gw.from(e,t));var a=this._update(e);return this.hashMode?this:(r&&(a=this._toString(a,r)),a)};Ai.prototype.setAutoPadding=function(){};Ai.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")};Ai.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")};Ai.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")};Ai.prototype._transform=function(e,t,r){var a;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(n){a=n}finally{r(a)}};Ai.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(r){t=r}e(t)};Ai.prototype._finalOrDigest=function(e){var t=this.__final()||gw.alloc(0);return e&&(t=this._toString(t,e,!0)),t};Ai.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new zU(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var a=this._decoder.write(e);return r&&(a+=this._decoder.end()),a};bw.exports=Ai});var Ba=P((Qtt,xw)=>{"use strict";M();var YU=ge(),GU=qh(),$U=Th(),ZU=Ph(),yw=bn();function Uh(e){yw.call(this,"digest"),this._hash=e}YU(Uh,yw);Uh.prototype._update=function(e){this._hash.update(e)};Uh.prototype._final=function(){return this._hash.digest()};xw.exports=function(t){return t=t.toLowerCase(),t==="md5"?new GU:t==="rmd160"||t==="ripemd160"?new $U:new Uh(ZU(t))}});var Aw=P((jtt,Mw)=>{"use strict";M();var WU=ge(),Uf=ve().Buffer,ww=bn(),JU=Uf.alloc(128),Ca=64;function Lh(e,t){ww.call(this,"digest"),typeof t=="string"&&(t=Uf.from(t)),this._alg=e,this._key=t,t.length>Ca?t=e(t):t.length{M();var XU=qh();_w.exports=function(e){return new XU().update(e).digest()}});var S1=P((Gtt,Ew)=>{"use strict";M();var tL=ge(),eL=Aw(),Iw=bn(),vs=ve().Buffer,rL=_1(),I1=Th(),E1=Ph(),iL=vs.alloc(128);function ps(e,t){Iw.call(this,"digest"),typeof t=="string"&&(t=vs.from(t));var r=e==="sha512"||e==="sha384"?128:64;if(this._alg=e,this._key=t,t.length>r){var a=e==="rmd160"?new I1:E1(e);t=a.update(t).digest()}else t.length{nL.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}});var Bw=P((Wtt,Sw)=>{M();Sw.exports=B1()});var C1=P((Xtt,Cw)=>{M();var fL=Math.pow(2,30)-1;Cw.exports=function(e,t){if(typeof e!="number")throw new TypeError("Iterations not a number");if(e<0)throw new TypeError("Bad iterations");if(typeof t!="number")throw new TypeError("Key length not a number");if(t<0||t>fL||t!==t)throw new TypeError("Bad key length")}});var q1=P((eet,Rw)=>{M();var Nh;global.process&&global.process.browser?Nh="utf-8":global.process&&global.process.version?(qw=parseInt(process.version.split(".")[0].slice(1),10),Nh=qw>=6?"utf-8":"binary"):Nh="utf-8";var qw;Rw.exports=Nh});var T1=P((iet,Tw)=>{M();var R1=ve().Buffer;Tw.exports=function(e,t,r){if(R1.isBuffer(e))return e;if(typeof e=="string")return R1.from(e,t);if(ArrayBuffer.isView(e))return R1.from(e.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}});var O1=P((fet,Pw)=>{M();var aL=_1(),oL=Th(),sL=Ph(),Lf=ve().Buffer,hL=C1(),Ow=q1(),Dw=T1(),uL=Lf.alloc(128),Fh={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function kw(e,t,r){var a=lL(e),n=e==="sha512"||e==="sha384"?128:64;t.length>n?t=a(t):t.length{M();var Fw=ve().Buffer,dL=C1(),Uw=q1(),Lw=O1(),Nw=T1(),Kh,gs=global.crypto&&global.crypto.subtle,vL={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},D1=[];function pL(e){if(global.process&&!global.process.browser||!gs||!gs.importKey||!gs.deriveBits)return Promise.resolve(!1);if(D1[e]!==void 0)return D1[e];Kh=Kh||Fw.alloc(8);var t=Kw(Kh,Kh,10,128,e).then(function(){return!0}).catch(function(){return!1});return D1[e]=t,t}var Nf;function k1(){return Nf||(global.process&&global.process.nextTick?Nf=global.process.nextTick:global.queueMicrotask?Nf=global.queueMicrotask:global.setImmediate?Nf=global.setImmediate:Nf=global.setTimeout,Nf)}function Kw(e,t,r,a,n){return gs.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then(function(d){return gs.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:{name:n}},d,a<<3)}).then(function(d){return Fw.from(d)})}function gL(e,t){e.then(function(r){k1()(function(){t(null,r)})},function(r){k1()(function(){t(r)})})}Qw.exports=function(e,t,r,a,n,d){typeof n=="function"&&(d=n,n=void 0),n=n||"sha1";var m=vL[n.toLowerCase()];if(!m||typeof global.Promise!="function"){k1()(function(){var b;try{b=Lw(e,t,r,a,n)}catch(A){return d(A)}d(null,b)});return}if(dL(r,a),e=Nw(e,Uw,"Password"),t=Nw(t,Uw,"Salt"),typeof d!="function")throw new Error("No callback provided to pbkdf2");gL(pL(m).then(function(b){return b?Kw(e,t,r,a,m):Lw(e,t,r,a,n)}),d)}});var U1=P(P1=>{M();P1.pbkdf2=Hw();P1.pbkdf2Sync=O1()});var L1=P(ni=>{"use strict";M();ni.readUInt32BE=function(t,r){var a=t[0+r]<<24|t[1+r]<<16|t[2+r]<<8|t[3+r];return a>>>0};ni.writeUInt32BE=function(t,r,a){t[0+a]=r>>>24,t[1+a]=r>>>16&255,t[2+a]=r>>>8&255,t[3+a]=r&255};ni.ip=function(t,r,a,n){for(var d=0,m=0,b=6;b>=0;b-=2){for(var A=0;A<=24;A+=8)d<<=1,d|=r>>>A+b&1;for(var A=0;A<=24;A+=8)d<<=1,d|=t>>>A+b&1}for(var b=6;b>=0;b-=2){for(var A=1;A<=25;A+=8)m<<=1,m|=r>>>A+b&1;for(var A=1;A<=25;A+=8)m<<=1,m|=t>>>A+b&1}a[n+0]=d>>>0,a[n+1]=m>>>0};ni.rip=function(t,r,a,n){for(var d=0,m=0,b=0;b<4;b++)for(var A=24;A>=0;A-=8)d<<=1,d|=r>>>A+b&1,d<<=1,d|=t>>>A+b&1;for(var b=4;b<8;b++)for(var A=24;A>=0;A-=8)m<<=1,m|=r>>>A+b&1,m<<=1,m|=t>>>A+b&1;a[n+0]=d>>>0,a[n+1]=m>>>0};ni.pc1=function(t,r,a,n){for(var d=0,m=0,b=7;b>=5;b--){for(var A=0;A<=24;A+=8)d<<=1,d|=r>>A+b&1;for(var A=0;A<=24;A+=8)d<<=1,d|=t>>A+b&1}for(var A=0;A<=24;A+=8)d<<=1,d|=r>>A+b&1;for(var b=1;b<=3;b++){for(var A=0;A<=24;A+=8)m<<=1,m|=r>>A+b&1;for(var A=0;A<=24;A+=8)m<<=1,m|=t>>A+b&1}for(var A=0;A<=24;A+=8)m<<=1,m|=t>>A+b&1;a[n+0]=d>>>0,a[n+1]=m>>>0};ni.r28shl=function(t,r){return t<>>28-r};var Qh=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];ni.pc2=function(t,r,a,n){for(var d=0,m=0,b=Qh.length>>>1,A=0;A>>Qh[A]&1;for(var A=b;A>>Qh[A]&1;a[n+0]=d>>>0,a[n+1]=m>>>0};ni.expand=function(t,r,a){var n=0,d=0;n=(t&1)<<5|t>>>27;for(var m=23;m>=15;m-=4)n<<=6,n|=t>>>m&63;for(var m=11;m>=3;m-=4)d|=t>>>m&63,d<<=6;d|=(t&31)<<1|t>>>31,r[a+0]=n>>>0,r[a+1]=d>>>0};var jw=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];ni.substitute=function(t,r){for(var a=0,n=0;n<4;n++){var d=t>>>18-n*6&63,m=jw[n*64+d];a<<=4,a|=m}for(var n=0;n<4;n++){var d=r>>>18-n*6&63,m=jw[4*64+n*64+d];a<<=4,a|=m}return a>>>0};var zw=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];ni.permute=function(t){for(var r=0,a=0;a>>zw[a]&1;return r>>>0};ni.padSplit=function(t,r,a){for(var n=t.toString(2);n.length{M();Yw.exports=Vw;function Vw(e,t){if(!e)throw new Error(t||"Assertion failed")}Vw.equal=function(t,r,a){if(t!=r)throw new Error(a||"Assertion failed: "+t+" != "+r)}});var Hh=P((get,Gw)=>{"use strict";M();var mL=jr();function fi(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}Gw.exports=fi;fi.prototype._init=function(){};fi.prototype.update=function(t){return t.length===0?[]:this.type==="decrypt"?this._updateDecrypt(t):this._updateEncrypt(t)};fi.prototype._buffer=function(t,r){for(var a=Math.min(this.buffer.length-this.bufferOff,t.length-r),n=0;n0;n--)r+=this._buffer(t,r),a+=this._flushBuffer(d,a);return r+=this._buffer(t,r),d};fi.prototype.final=function(t){var r;t&&(r=this.update(t));var a;return this.type==="encrypt"?a=this._finalEncrypt():a=this._finalDecrypt(),r?r.concat(a):a};fi.prototype._pad=function(t,r){if(r===0)return!1;for(;r{"use strict";M();var $w=jr(),bL=ge(),ar=L1(),Zw=Hh();function yL(){this.tmp=new Array(2),this.keys=null}function Vi(e){Zw.call(this,e);var t=new yL;this._desState=t,this.deriveKeys(t,e.key)}bL(Vi,Zw);Ww.exports=Vi;Vi.create=function(t){return new Vi(t)};var xL=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];Vi.prototype.deriveKeys=function(t,r){t.keys=new Array(16*2),$w.equal(r.length,this.blockSize,"Invalid key length");var a=ar.readUInt32BE(r,0),n=ar.readUInt32BE(r,4);ar.pc1(a,n,t.tmp,0),a=t.tmp[0],n=t.tmp[1];for(var d=0;d>>1];a=ar.r28shl(a,m),n=ar.r28shl(n,m),ar.pc2(a,n,t.keys,d)}};Vi.prototype._update=function(t,r,a,n){var d=this._desState,m=ar.readUInt32BE(t,r),b=ar.readUInt32BE(t,r+4);ar.ip(m,b,d.tmp,0),m=d.tmp[0],b=d.tmp[1],this.type==="encrypt"?this._encrypt(d,m,b,d.tmp,0):this._decrypt(d,m,b,d.tmp,0),m=d.tmp[0],b=d.tmp[1],ar.writeUInt32BE(a,m,n),ar.writeUInt32BE(a,b,n+4)};Vi.prototype._pad=function(t,r){for(var a=t.length-r,n=r;n>>0,m=j}ar.rip(b,m,n,d)};Vi.prototype._decrypt=function(t,r,a,n,d){for(var m=a,b=r,A=t.keys.length-2;A>=0;A-=2){var B=t.keys[A],C=t.keys[A+1];ar.expand(m,t.tmp,0),B^=t.tmp[0],C^=t.tmp[1];var D=ar.substitute(B,C),K=ar.permute(D),j=m;m=(b^K)>>>0,b=j}ar.rip(m,b,n,d)}});var Xw=P(Jw=>{"use strict";M();var wL=jr(),ML=ge(),jh={};function AL(e){wL.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t{"use strict";M();var IL=jr(),EL=ge(),t5=Hh(),Jn=N1();function SL(e,t){IL.equal(t.length,24,"Invalid key length");var r=t.slice(0,8),a=t.slice(8,16),n=t.slice(16,24);e==="encrypt"?this.ciphers=[Jn.create({type:"encrypt",key:r}),Jn.create({type:"decrypt",key:a}),Jn.create({type:"encrypt",key:n})]:this.ciphers=[Jn.create({type:"decrypt",key:n}),Jn.create({type:"encrypt",key:a}),Jn.create({type:"decrypt",key:r})]}function Ff(e){t5.call(this,e);var t=new SL(this.type,this.options.key);this._edeState=t}EL(Ff,t5);e5.exports=Ff;Ff.create=function(t){return new Ff(t)};Ff.prototype._update=function(t,r,a,n){var d=this._edeState;d.ciphers[0]._update(t,r,a,n),d.ciphers[1]._update(a,n,a,n),d.ciphers[2]._update(a,n,a,n)};Ff.prototype._pad=Jn.prototype._pad;Ff.prototype._unpad=Jn.prototype._unpad});var i5=P(qa=>{"use strict";M();qa.utils=L1();qa.Cipher=Hh();qa.DES=N1();qa.CBC=Xw();qa.EDE=r5()});var a5=P((Eet,f5)=>{M();var n5=bn(),yn=i5(),BL=ge(),Kf=ve().Buffer,ms={"des-ede3-cbc":yn.CBC.instantiate(yn.EDE),"des-ede3":yn.EDE,"des-ede-cbc":yn.CBC.instantiate(yn.EDE),"des-ede":yn.EDE,"des-cbc":yn.CBC.instantiate(yn.DES),"des-ecb":yn.DES};ms.des=ms["des-cbc"];ms.des3=ms["des-ede3-cbc"];f5.exports=zh;BL(zh,n5);function zh(e){n5.call(this);var t=e.mode.toLowerCase(),r=ms[t],a;e.decrypt?a="decrypt":a="encrypt";var n=e.key;Kf.isBuffer(n)||(n=Kf.from(n)),(t==="des-ede"||t==="des-ede-cbc")&&(n=Kf.concat([n,n.slice(0,8)]));var d=e.iv;Kf.isBuffer(d)||(d=Kf.from(d)),this._des=r.create({key:n,iv:d,type:a})}zh.prototype._update=function(e){return Kf.from(this._des.update(e))};zh.prototype._final=function(){return Kf.from(this._des.final())}});var o5=P(F1=>{M();F1.encrypt=function(e,t){return e._cipher.encryptBlock(t)};F1.decrypt=function(e,t){return e._cipher.decryptBlock(t)}});var Ra=P((Ret,s5)=>{M();var CL=ve().Buffer;s5.exports=function(t,r){for(var a=Math.max(t.length,r.length),n=CL.allocUnsafe(a),d=0;d{M();var h5=Ra();K1.encrypt=function(e,t){var r=h5(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev};K1.decrypt=function(e,t){var r=e._prev;e._prev=t;var a=e._cipher.decryptBlock(t);return h5(a,r)}});var d5=P(c5=>{M();var bs=ve().Buffer,qL=Ra();function l5(e,t,r){var a=t.length,n=qL(t,e._cache);return e._cache=e._cache.slice(a),e._prev=bs.concat([e._prev,r?t:n]),n}c5.encrypt=function(e,t,r){for(var a=bs.allocUnsafe(0),n;t.length;)if(e._cache.length===0&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=bs.allocUnsafe(0)),e._cache.length<=t.length)n=e._cache.length,a=bs.concat([a,l5(e,t.slice(0,n),r)]),t=t.slice(n);else{a=bs.concat([a,l5(e,t,r)]);break}return a}});var p5=P(v5=>{M();var Q1=ve().Buffer;function RL(e,t,r){var a=e._cipher.encryptBlock(e._prev),n=a[0]^t;return e._prev=Q1.concat([e._prev.slice(1),Q1.from([r?t:n])]),n}v5.encrypt=function(e,t,r){for(var a=t.length,n=Q1.allocUnsafe(a),d=-1;++d{M();var Vh=ve().Buffer;function TL(e,t,r){for(var a,n=-1,d=8,m=0,b,A;++n>n%8,e._prev=OL(e._prev,r?b:A);return m}function OL(e,t){var r=e.length,a=-1,n=Vh.allocUnsafe(e.length);for(e=Vh.concat([e,Vh.from([t])]);++a>7;return n}g5.encrypt=function(e,t,r){for(var a=t.length,n=Vh.allocUnsafe(a),d=-1;++d{M();var DL=Ra();function kL(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}b5.encrypt=function(e,t){for(;e._cache.length{M();function PL(e){for(var t=e.length,r;t--;)if(r=e.readUInt8(t),r===255)e.writeUInt8(0,t);else{r++,e.writeUInt8(r,t);break}}x5.exports=PL});var z1=P(M5=>{M();var UL=Ra(),w5=ve().Buffer,LL=H1();function NL(e){var t=e._cipher.encryptBlockRaw(e._prev);return LL(e._prev),t}var j1=16;M5.encrypt=function(e,t){var r=Math.ceil(t.length/j1),a=e._cache.length;e._cache=w5.concat([e._cache,w5.allocUnsafe(r*j1)]);for(var n=0;n{FL.exports={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},aes192:{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},aes256:{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}}});var Gh=P((Get,A5)=>{M();var KL={ECB:o5(),CBC:u5(),CFB:d5(),CFB8:p5(),CFB1:m5(),OFB:y5(),CTR:z1(),GCM:z1()},Yh=V1();for(Y1 in Yh)Yh[Y1].module=KL[Yh[Y1].mode];var Y1;A5.exports=Yh});var ys=P((Zet,I5)=>{M();var $h=ve().Buffer;function $1(e){$h.isBuffer(e)||(e=$h.from(e));for(var t=e.length/4|0,r=new Array(t),a=0;a>>24]^m[C>>>16&255]^b[D>>>8&255]^A[K&255]^t[J++],Z=d[C>>>24]^m[D>>>16&255]^b[K>>>8&255]^A[B&255]^t[J++],qt=d[D>>>24]^m[K>>>16&255]^b[B>>>8&255]^A[C&255]^t[J++],Rt=d[K>>>24]^m[B>>>16&255]^b[C>>>8&255]^A[D&255]^t[J++],B=j,C=Z,D=qt,K=Rt;return j=(a[B>>>24]<<24|a[C>>>16&255]<<16|a[D>>>8&255]<<8|a[K&255])^t[J++],Z=(a[C>>>24]<<24|a[D>>>16&255]<<16|a[K>>>8&255]<<8|a[B&255])^t[J++],qt=(a[D>>>24]<<24|a[K>>>16&255]<<16|a[B>>>8&255]<<8|a[C&255])^t[J++],Rt=(a[K>>>24]<<24|a[B>>>16&255]<<16|a[C>>>8&255]<<8|a[D&255])^t[J++],j=j>>>0,Z=Z>>>0,qt=qt>>>0,Rt=Rt>>>0,[j,Z,qt,Rt]}var QL=[0,1,2,4,8,16,32,64,128,27,54],ir=function(){for(var e=new Array(256),t=0;t<256;t++)t<128?e[t]=t<<1:e[t]=t<<1^283;for(var r=[],a=[],n=[[],[],[],[]],d=[[],[],[],[]],m=0,b=0,A=0;A<256;++A){var B=b^b<<1^b<<2^b<<3^b<<4;B=B>>>8^B&255^99,r[m]=B,a[B]=m;var C=e[m],D=e[C],K=e[D],j=e[B]*257^B*16843008;n[0][m]=j<<24|j>>>8,n[1][m]=j<<16|j>>>16,n[2][m]=j<<8|j>>>24,n[3][m]=j,j=K*16843009^D*65537^C*257^m*16843008,d[0][B]=j<<24|j>>>8,d[1][B]=j<<16|j>>>16,d[2][B]=j<<8|j>>>24,d[3][B]=j,m===0?m=b=1:(m=C^e[e[e[K^C]]],b^=e[e[b]])}return{SBOX:r,INV_SBOX:a,SUB_MIX:n,INV_SUB_MIX:d}}();function ai(e){this._key=$1(e),this._reset()}ai.blockSize=4*4;ai.keySize=256/8;ai.prototype.blockSize=ai.blockSize;ai.prototype.keySize=ai.keySize;ai.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,a=(r+1)*4,n=[],d=0;d>>24,m=ir.SBOX[m>>>24]<<24|ir.SBOX[m>>>16&255]<<16|ir.SBOX[m>>>8&255]<<8|ir.SBOX[m&255],m^=QL[d/t|0]<<24):t>6&&d%t===4&&(m=ir.SBOX[m>>>24]<<24|ir.SBOX[m>>>16&255]<<16|ir.SBOX[m>>>8&255]<<8|ir.SBOX[m&255]),n[d]=n[d-t]^m}for(var b=[],A=0;A>>24]]^ir.INV_SUB_MIX[1][ir.SBOX[C>>>16&255]]^ir.INV_SUB_MIX[2][ir.SBOX[C>>>8&255]]^ir.INV_SUB_MIX[3][ir.SBOX[C&255]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=b};ai.prototype.encryptBlockRaw=function(e){return e=$1(e),_5(e,this._keySchedule,ir.SUB_MIX,ir.SBOX,this._nRounds)};ai.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=$h.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r};ai.prototype.decryptBlock=function(e){e=$1(e);var t=e[1];e[1]=e[3],e[3]=t;var r=_5(e,this._invKeySchedule,ir.INV_SUB_MIX,ir.INV_SBOX,this._nRounds),a=$h.allocUnsafe(16);return a.writeUInt32BE(r[0],0),a.writeUInt32BE(r[3],4),a.writeUInt32BE(r[2],8),a.writeUInt32BE(r[1],12),a};ai.prototype.scrub=function(){G1(this._keySchedule),G1(this._invKeySchedule),G1(this._key)};I5.exports.AES=ai});var B5=P((Jet,S5)=>{M();var Ta=ve().Buffer,HL=Ta.alloc(16,0);function jL(e){return[e.readUInt32BE(0),e.readUInt32BE(4),e.readUInt32BE(8),e.readUInt32BE(12)]}function E5(e){var t=Ta.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function xs(e){this.h=e,this.state=Ta.alloc(16,0),this.cache=Ta.allocUnsafe(0)}xs.prototype.ghash=function(e){for(var t=-1;++t0;r--)e[r]=e[r]>>>1|(e[r-1]&1)<<31;e[0]=e[0]>>>1,n&&(e[0]=e[0]^225<<24)}this.state=E5(t)};xs.prototype.update=function(e){this.cache=Ta.concat([this.cache,e]);for(var t;this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)};xs.prototype.final=function(e,t){return this.cache.length&&this.ghash(Ta.concat([this.cache,HL],16)),this.ghash(E5([0,e,0,t])),this.state};S5.exports=xs});var Z1=P((trt,R5)=>{M();var zL=ys(),Ur=ve().Buffer,C5=bn(),VL=ge(),q5=B5(),YL=Ra(),GL=H1();function $L(e,t){var r=0;e.length!==t.length&&r++;for(var a=Math.min(e.length,t.length),n=0;n{M();var WL=ys(),W1=ve().Buffer,T5=bn(),JL=ge();function Zh(e,t,r,a){T5.call(this),this._cipher=new WL.AES(t),this._prev=W1.from(r),this._cache=W1.allocUnsafe(0),this._secCache=W1.allocUnsafe(0),this._decrypt=a,this._mode=e}JL(Zh,T5);Zh.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)};Zh.prototype._final=function(){this._cipher.scrub()};O5.exports=Zh});var ws=P((nrt,D5)=>{M();var Hf=ve().Buffer,XL=qh();function tN(e,t,r,a){if(Hf.isBuffer(e)||(e=Hf.from(e,"binary")),t&&(Hf.isBuffer(t)||(t=Hf.from(t,"binary")),t.length!==8))throw new RangeError("salt should be Buffer with 8 byte length");for(var n=r/8,d=Hf.alloc(n),m=Hf.alloc(a||0),b=Hf.alloc(0);n>0||a>0;){var A=new XL;A.update(b),A.update(e),t&&A.update(t),b=A.digest();var B=0;if(n>0){var C=d.length-n;B=Math.min(n,b.length),b.copy(d,C,0,B),n-=B}if(B0){var D=m.length-a,K=Math.min(a,b.length-B);b.copy(m,D,B,B+K),a-=K}}return b.fill(0),{key:d,iv:m}}D5.exports=tN});var L5=P(X1=>{M();var k5=Gh(),eN=Z1(),xn=ve().Buffer,rN=J1(),P5=bn(),iN=ys(),nN=ws(),fN=ge();function Ms(e,t,r){P5.call(this),this._cache=new Wh,this._cipher=new iN.AES(t),this._prev=xn.from(r),this._mode=e,this._autopadding=!0}fN(Ms,P5);Ms.prototype._update=function(e){this._cache.add(e);for(var t,r,a=[];t=this._cache.get();)r=this._mode.encrypt(this,t),a.push(r);return xn.concat(a)};var aN=xn.alloc(16,16);Ms.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(aN))throw this._cipher.scrub(),new Error("data not multiple of block length")};Ms.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this};function Wh(){this.cache=xn.allocUnsafe(0)}Wh.prototype.add=function(e){this.cache=xn.concat([this.cache,e])};Wh.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null};Wh.prototype.flush=function(){for(var e=16-this.cache.length,t=xn.allocUnsafe(e),r=-1;++r{M();var sN=Z1(),Oa=ve().Buffer,N5=Gh(),hN=J1(),F5=bn(),uN=ys(),lN=ws(),cN=ge();function As(e,t,r){F5.call(this),this._cache=new Jh,this._last=void 0,this._cipher=new uN.AES(t),this._prev=Oa.from(r),this._mode=e,this._autopadding=!0}cN(As,F5);As.prototype._update=function(e){this._cache.add(e);for(var t,r,a=[];t=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,t),a.push(r);return Oa.concat(a)};As.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return dN(this._mode.decrypt(this,e));if(e)throw new Error("data not multiple of block length")};As.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this};function Jh(){this.cache=Oa.allocUnsafe(0)}Jh.prototype.add=function(e){this.cache=Oa.concat([this.cache,e])};Jh.prototype.get=function(e){var t;if(e){if(this.cache.length>16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null};Jh.prototype.flush=function(){if(this.cache.length)return this.cache};function dN(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");for(var r=-1;++r{M();var H5=L5(),j5=Q5(),pN=V1();function gN(){return Object.keys(pN)}_i.createCipher=_i.Cipher=H5.createCipher;_i.createCipheriv=_i.Cipheriv=H5.createCipheriv;_i.createDecipher=_i.Decipher=j5.createDecipher;_i.createDecipheriv=_i.Decipheriv=j5.createDecipheriv;_i.listCiphers=_i.getCiphers=gN});var z5=P(wn=>{M();wn["des-ecb"]={key:8,iv:0};wn["des-cbc"]=wn.des={key:8,iv:8};wn["des-ede3-cbc"]=wn.des3={key:24,iv:8};wn["des-ede3"]={key:24,iv:0};wn["des-ede-cbc"]={key:16,iv:8};wn["des-ede"]={key:16,iv:0}});var Z5=P(Ii=>{M();var V5=a5(),ev=Xh(),Xn=Gh(),Mn=z5(),Y5=ws();function mN(e,t){e=e.toLowerCase();var r,a;if(Xn[e])r=Xn[e].key,a=Xn[e].iv;else if(Mn[e])r=Mn[e].key*8,a=Mn[e].iv;else throw new TypeError("invalid suite type");var n=Y5(t,!1,r,a);return G5(e,n.key,n.iv)}function bN(e,t){e=e.toLowerCase();var r,a;if(Xn[e])r=Xn[e].key,a=Xn[e].iv;else if(Mn[e])r=Mn[e].key*8,a=Mn[e].iv;else throw new TypeError("invalid suite type");var n=Y5(t,!1,r,a);return $5(e,n.key,n.iv)}function G5(e,t,r){if(e=e.toLowerCase(),Xn[e])return ev.createCipheriv(e,t,r);if(Mn[e])return new V5({key:t,iv:r,mode:e});throw new TypeError("invalid suite type")}function $5(e,t,r){if(e=e.toLowerCase(),Xn[e])return ev.createDecipheriv(e,t,r);if(Mn[e])return new V5({key:t,iv:r,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}function yN(){return Object.keys(Mn).concat(ev.getCiphers())}Ii.createCipher=Ii.Cipher=mN;Ii.createCipheriv=Ii.Cipheriv=G5;Ii.createDecipher=Ii.Decipher=bN;Ii.createDecipheriv=Ii.Decipheriv=$5;Ii.listCiphers=Ii.getCiphers=yN});var tf=P(()=>{M()});var iv=P((W5,rv)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof rv>"u"||rv,W5)});var X5=P((J5,nv)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof nv>"u"||nv,J5)});var fv=P(()=>{M()});var tu=P((_rt,sv)=>{M();var av;sv.exports=function(t){return av||(av=new ef(null)),av.generate(t)};function ef(e){this.rand=e}sv.exports.Rand=ef;ef.prototype.generate=function(t){return this._rand(t)};ef.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var r=new Uint8Array(t),a=0;a{M();var jf=X5(),xN=tu();function zf(e){this.rand=e||new xN.Rand}tM.exports=zf;zf.create=function(t){return new zf(t)};zf.prototype._randbelow=function(t){var r=t.bitLength(),a=Math.ceil(r/8);do var n=new jf(this.rand.generate(a));while(n.cmp(t)>=0);return n};zf.prototype._randrange=function(t,r){var a=r.sub(t);return t.add(this._randbelow(a))};zf.prototype.test=function(t,r,a){var n=t.bitLength(),d=jf.mont(t),m=new jf(1).toRed(d);r||(r=Math.max(1,n/48|0));for(var b=t.subn(1),A=0;!b.testn(A);A++);for(var B=t.shrn(A),C=b.toRed(d),D=!0;r>0;r--){var K=this._randrange(new jf(2),b);a&&a(K);var j=K.toRed(d).redPow(B);if(!(j.cmp(m)===0||j.cmp(C)===0)){for(var Z=1;Z0;r--){var C=this._randrange(new jf(2),m),D=t.gcd(C);if(D.cmpn(1)!==0)return D;var K=C.toRed(n).redPow(A);if(!(K.cmp(d)===0||K.cmp(B)===0)){for(var j=1;j{M();var wN=qf();iM.exports=vv;vv.simpleSieve=cv;vv.fermatTest=dv;var vr=iv(),MN=new vr(24),AN=hv(),eM=new AN,_N=new vr(1),lv=new vr(2),IN=new vr(5),Brt=new vr(16),Crt=new vr(8),EN=new vr(10),SN=new vr(3),qrt=new vr(7),BN=new vr(11),rM=new vr(4),Rrt=new vr(12),uv=null;function CN(){if(uv!==null)return uv;var e=1048576,t=[];t[0]=2;for(var r=1,a=3;ae;)r.ishrn(1);if(r.isEven()&&r.iadd(_N),r.testn(1)||r.iadd(lv),t.cmp(lv)){if(!t.cmp(IN))for(;r.mod(EN).cmp(SN);)r.iadd(rM)}else for(;r.mod(MN).cmp(BN);)r.iadd(rM);if(a=r.shrn(1),cv(a)&&cv(r)&&dv(a)&&dv(r)&&eM.test(a)&&eM.test(r))return r}}});var nM=P((Drt,qN)=>{qN.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}});var sM=P((krt,oM)=>{M();var oi=iv(),RN=hv(),fM=new RN,TN=new oi(24),ON=new oi(11),DN=new oi(10),kN=new oi(3),PN=new oi(7),aM=pv(),UN=qf();oM.exports=An;function LN(e,t){return t=t||"utf8",U.isBuffer(e)||(e=new U(e,t)),this._pub=new oi(e),this}function NN(e,t){return t=t||"utf8",U.isBuffer(e)||(e=new U(e,t)),this._priv=new oi(e),this}var eu={};function FN(e,t){var r=t.toString("hex"),a=[r,e.toString(16)].join("_");if(a in eu)return eu[a];var n=0;if(e.isEven()||!aM.simpleSieve||!aM.fermatTest(e)||!fM.test(e))return n+=1,r==="02"||r==="05"?n+=8:n+=4,eu[a]=n,n;fM.test(e.shrn(1))||(n+=2);var d;switch(r){case"02":e.mod(TN).cmp(ON)&&(n+=8);break;case"05":d=e.mod(DN),d.cmp(kN)&&d.cmp(PN)&&(n+=8);break;default:n+=4}return eu[a]=n,n}function An(e,t,r){this.setGenerator(t),this.__prime=new oi(e),this._prime=oi.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=LN,this.setPrivateKey=NN):this._primeCode=8}Object.defineProperty(An.prototype,"verifyError",{enumerable:!0,get:function(){return typeof this._primeCode!="number"&&(this._primeCode=FN(this.__prime,this.__gen)),this._primeCode}});An.prototype.generateKeys=function(){return this._priv||(this._priv=new oi(UN(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()};An.prototype.computeSecret=function(e){e=new oi(e),e=e.toRed(this._prime);var t=e.redPow(this._priv).fromRed(),r=new U(t.toArray()),a=this.getPrime();if(r.length{M();var KN=pv(),hM=nM(),gv=sM();function QN(e){var t=new U(hM[e].prime,"hex"),r=new U(hM[e].gen,"hex");return new gv(t,r)}var HN={binary:!0,hex:!0,base64:!0};function uM(e,t,r,a){return U.isBuffer(t)||HN[t]===void 0?uM(e,"binary",t,r):(t=t||"binary",a=a||"binary",r=r||new U([2]),U.isBuffer(r)||(r=new U(r,a)),typeof e=="number"?new gv(KN(e,r),r,!0):(U.isBuffer(e)||(e=new U(e,t)),new gv(e,r,!0)))}Da.DiffieHellmanGroup=Da.createDiffieHellmanGroup=Da.getDiffieHellman=QN;Da.createDiffieHellman=Da.DiffieHellman=uM});var iu=P((cM,mv)=>{M();(function(e,t){"use strict";function r(h,s){if(!h)throw new Error(s||"Assertion failed")}function a(h,s){h.super_=s;var u=function(){};u.prototype=s.prototype,h.prototype=new u,h.prototype.constructor=h}function n(h,s,u){if(n.isBN(h))return h;this.negative=0,this.words=null,this.length=0,this.red=null,h!==null&&((s==="le"||s==="be")&&(u=s,s=10),this._init(h||0,s||10,u||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(s){return s instanceof n?!0:s!==null&&typeof s=="object"&&s.constructor.wordSize===n.wordSize&&Array.isArray(s.words)},n.max=function(s,u){return s.cmp(u)>0?s:u},n.min=function(s,u){return s.cmp(u)<0?s:u},n.prototype._init=function(s,u,p){if(typeof s=="number")return this._initNumber(s,u,p);if(typeof s=="object")return this._initArray(s,u,p);u==="hex"&&(u=16),r(u===(u|0)&&u>=2&&u<=36),s=s.toString().replace(/\s+/g,"");var g=0;s[0]==="-"&&(g++,this.negative=1),g=0;g-=3)f=s[g]|s[g-1]<<8|s[g-2]<<16,this.words[l]|=f<>>26-c&67108863,c+=24,c>=26&&(c-=26,l++);else if(p==="le")for(g=0,l=0;g>>26-c&67108863,c+=24,c>=26&&(c-=26,l++);return this._strip()};function m(h,s){var u=h.charCodeAt(s);if(u>=48&&u<=57)return u-48;if(u>=65&&u<=70)return u-55;if(u>=97&&u<=102)return u-87;r(!1,"Invalid character in "+h)}function b(h,s,u){var p=m(h,u);return u-1>=s&&(p|=m(h,u-1)<<4),p}n.prototype._parseHex=function(s,u,p){this.length=Math.ceil((s.length-u)/6),this.words=new Array(this.length);for(var g=0;g=u;g-=2)c=b(s,u,g)<=18?(l-=18,f+=1,this.words[f]|=c>>>26):l+=8;else{var I=s.length-u;for(g=I%2===0?u+1:u;g=18?(l-=18,f+=1,this.words[f]|=c>>>26):l+=8}this._strip()};function A(h,s,u,p){for(var g=0,l=0,f=Math.min(h.length,u),c=s;c=49?l=I-49+10:I>=17?l=I-17+10:l=I,r(I>=0&&l1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=C}catch{n.prototype.inspect=C}else n.prototype.inspect=C;function C(){return(this.red?""}var D=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],K=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],j=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(s,u){s=s||10,u=u|0||1;var p;if(s===16||s==="hex"){p="";for(var g=0,l=0,f=0;f>>24-g&16777215,g+=2,g>=26&&(g-=26,f--),l!==0||f!==this.length-1?p=D[6-I.length]+I+p:p=I+p}for(l!==0&&(p=l.toString(16)+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(s===(s|0)&&s>=2&&s<=36){var w=K[s],S=j[s];p="";var k=this.clone();for(k.negative=0;!k.isZero();){var E=k.modrn(S).toString(s);k=k.idivn(S),k.isZero()?p=E+p:p=D[w-E.length]+E+p}for(this.isZero()&&(p="0"+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var s=this.words[0];return this.length===2?s+=this.words[1]*67108864:this.length===3&&this.words[2]===1?s+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-s:s},n.prototype.toJSON=function(){return this.toString(16,2)},d&&(n.prototype.toBuffer=function(s,u){return this.toArrayLike(d,s,u)}),n.prototype.toArray=function(s,u){return this.toArrayLike(Array,s,u)};var Z=function(s,u){return s.allocUnsafe?s.allocUnsafe(u):new s(u)};n.prototype.toArrayLike=function(s,u,p){this._strip();var g=this.byteLength(),l=p||Math.max(1,g);r(g<=l,"byte array longer than desired length"),r(l>0,"Requested array length <= 0");var f=Z(s,l),c=u==="le"?"LE":"BE";return this["_toArrayLike"+c](f,g),f},n.prototype._toArrayLikeLE=function(s,u){for(var p=0,g=0,l=0,f=0;l>8&255),p>16&255),f===6?(p>24&255),g=0,f=0):(g=c>>>24,f+=2)}if(p=0&&(s[p--]=c>>8&255),p>=0&&(s[p--]=c>>16&255),f===6?(p>=0&&(s[p--]=c>>24&255),g=0,f=0):(g=c>>>24,f+=2)}if(p>=0)for(s[p--]=g;p>=0;)s[p--]=0},Math.clz32?n.prototype._countBits=function(s){return 32-Math.clz32(s)}:n.prototype._countBits=function(s){var u=s,p=0;return u>=4096&&(p+=13,u>>>=13),u>=64&&(p+=7,u>>>=7),u>=8&&(p+=4,u>>>=4),u>=2&&(p+=2,u>>>=2),p+u},n.prototype._zeroBits=function(s){if(s===0)return 26;var u=s,p=0;return(u&8191)===0&&(p+=13,u>>>=13),(u&127)===0&&(p+=7,u>>>=7),(u&15)===0&&(p+=4,u>>>=4),(u&3)===0&&(p+=2,u>>>=2),(u&1)===0&&p++,p},n.prototype.bitLength=function(){var s=this.words[this.length-1],u=this._countBits(s);return(this.length-1)*26+u};function qt(h){for(var s=new Array(h.bitLength()),u=0;u>>g&1}return s}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var s=0,u=0;us.length?this.clone().ior(s):s.clone().ior(this)},n.prototype.uor=function(s){return this.length>s.length?this.clone().iuor(s):s.clone().iuor(this)},n.prototype.iuand=function(s){var u;this.length>s.length?u=s:u=this;for(var p=0;ps.length?this.clone().iand(s):s.clone().iand(this)},n.prototype.uand=function(s){return this.length>s.length?this.clone().iuand(s):s.clone().iuand(this)},n.prototype.iuxor=function(s){var u,p;this.length>s.length?(u=this,p=s):(u=s,p=this);for(var g=0;gs.length?this.clone().ixor(s):s.clone().ixor(this)},n.prototype.uxor=function(s){return this.length>s.length?this.clone().iuxor(s):s.clone().iuxor(this)},n.prototype.inotn=function(s){r(typeof s=="number"&&s>=0);var u=Math.ceil(s/26)|0,p=s%26;this._expand(u),p>0&&u--;for(var g=0;g0&&(this.words[g]=~this.words[g]&67108863>>26-p),this._strip()},n.prototype.notn=function(s){return this.clone().inotn(s)},n.prototype.setn=function(s,u){r(typeof s=="number"&&s>=0);var p=s/26|0,g=s%26;return this._expand(p+1),u?this.words[p]=this.words[p]|1<s.length?(p=this,g=s):(p=s,g=this);for(var l=0,f=0;f>>26;for(;l!==0&&f>>26;if(this.length=p.length,l!==0)this.words[this.length]=l,this.length++;else if(p!==this)for(;fs.length?this.clone().iadd(s):s.clone().iadd(this)},n.prototype.isub=function(s){if(s.negative!==0){s.negative=0;var u=this.iadd(s);return s.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(s),this.negative=1,this._normSign();var p=this.cmp(s);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var g,l;p>0?(g=this,l=s):(g=s,l=this);for(var f=0,c=0;c>26,this.words[c]=u&67108863;for(;f!==0&&c>26,this.words[c]=u&67108863;if(f===0&&c>>26,k=I&67108863,E=Math.min(w,s.length-1),L=Math.max(0,w-h.length+1);L<=E;L++){var $=w-L|0;g=h.words[$]|0,l=s.words[L]|0,f=g*l+k,S+=f/67108864|0,k=f&67108863}u.words[w]=k|0,I=S|0}return I!==0?u.words[w]=I|0:u.length--,u._strip()}var J=function(s,u,p){var g=s.words,l=u.words,f=p.words,c=0,I,w,S,k=g[0]|0,E=k&8191,L=k>>>13,$=g[1]|0,F=$&8191,Q=$>>>13,Ft=g[2]|0,Y=Ft&8191,G=Ft>>>13,se=g[3]|0,W=se&8191,X=se>>>13,Ne=g[4]|0,At=Ne&8191,at=Ne>>>13,Te=g[5]|0,_t=Te&8191,gt=Te>>>13,De=g[6]|0,dt=De&8191,mt=De>>>13,Oe=g[7]|0,bt=Oe&8191,yt=Oe>>>13,Fe=g[8]|0,St=Fe&8191,xt=Fe>>>13,ke=g[9]|0,vt=ke&8191,ut=ke>>>13,Ce=l[0]|0,lt=Ce&8191,pt=Ce>>>13,Re=l[1]|0,ct=Re&8191,wt=Re>>>13,Ke=l[2]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=l[3]|0,ot=Me&8191,st=Me>>>13,Pe=l[4]|0,Mt=Pe&8191,It=Pe>>>13,ze=l[5]|0,ft=ze&8191,Et=ze>>>13,T=l[6]|0,R=T&8191,q=T>>>13,_=l[7]|0,O=_&8191,N=_>>>13,et=l[8]|0,H=et&8191,z=et>>>13,zt=l[9]|0,Dt=zt&8191,Jt=zt>>>13;p.negative=s.negative^u.negative,p.length=19,I=Math.imul(E,lt),w=Math.imul(E,pt),w=w+Math.imul(L,lt)|0,S=Math.imul(L,pt);var Qt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,I=Math.imul(F,lt),w=Math.imul(F,pt),w=w+Math.imul(Q,lt)|0,S=Math.imul(Q,pt),I=I+Math.imul(E,ct)|0,w=w+Math.imul(E,wt)|0,w=w+Math.imul(L,ct)|0,S=S+Math.imul(L,wt)|0;var Xt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,I=Math.imul(Y,lt),w=Math.imul(Y,pt),w=w+Math.imul(G,lt)|0,S=Math.imul(G,pt),I=I+Math.imul(F,ct)|0,w=w+Math.imul(F,wt)|0,w=w+Math.imul(Q,ct)|0,S=S+Math.imul(Q,wt)|0,I=I+Math.imul(E,Bt)|0,w=w+Math.imul(E,Ct)|0,w=w+Math.imul(L,Bt)|0,S=S+Math.imul(L,Ct)|0;var te=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(te>>>26)|0,te&=67108863,I=Math.imul(W,lt),w=Math.imul(W,pt),w=w+Math.imul(X,lt)|0,S=Math.imul(X,pt),I=I+Math.imul(Y,ct)|0,w=w+Math.imul(Y,wt)|0,w=w+Math.imul(G,ct)|0,S=S+Math.imul(G,wt)|0,I=I+Math.imul(F,Bt)|0,w=w+Math.imul(F,Ct)|0,w=w+Math.imul(Q,Bt)|0,S=S+Math.imul(Q,Ct)|0,I=I+Math.imul(E,ot)|0,w=w+Math.imul(E,st)|0,w=w+Math.imul(L,ot)|0,S=S+Math.imul(L,st)|0;var ie=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(ie>>>26)|0,ie&=67108863,I=Math.imul(At,lt),w=Math.imul(At,pt),w=w+Math.imul(at,lt)|0,S=Math.imul(at,pt),I=I+Math.imul(W,ct)|0,w=w+Math.imul(W,wt)|0,w=w+Math.imul(X,ct)|0,S=S+Math.imul(X,wt)|0,I=I+Math.imul(Y,Bt)|0,w=w+Math.imul(Y,Ct)|0,w=w+Math.imul(G,Bt)|0,S=S+Math.imul(G,Ct)|0,I=I+Math.imul(F,ot)|0,w=w+Math.imul(F,st)|0,w=w+Math.imul(Q,ot)|0,S=S+Math.imul(Q,st)|0,I=I+Math.imul(E,Mt)|0,w=w+Math.imul(E,It)|0,w=w+Math.imul(L,Mt)|0,S=S+Math.imul(L,It)|0;var re=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(re>>>26)|0,re&=67108863,I=Math.imul(_t,lt),w=Math.imul(_t,pt),w=w+Math.imul(gt,lt)|0,S=Math.imul(gt,pt),I=I+Math.imul(At,ct)|0,w=w+Math.imul(At,wt)|0,w=w+Math.imul(at,ct)|0,S=S+Math.imul(at,wt)|0,I=I+Math.imul(W,Bt)|0,w=w+Math.imul(W,Ct)|0,w=w+Math.imul(X,Bt)|0,S=S+Math.imul(X,Ct)|0,I=I+Math.imul(Y,ot)|0,w=w+Math.imul(Y,st)|0,w=w+Math.imul(G,ot)|0,S=S+Math.imul(G,st)|0,I=I+Math.imul(F,Mt)|0,w=w+Math.imul(F,It)|0,w=w+Math.imul(Q,Mt)|0,S=S+Math.imul(Q,It)|0,I=I+Math.imul(E,ft)|0,w=w+Math.imul(E,Et)|0,w=w+Math.imul(L,ft)|0,S=S+Math.imul(L,Et)|0;var ne=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(ne>>>26)|0,ne&=67108863,I=Math.imul(dt,lt),w=Math.imul(dt,pt),w=w+Math.imul(mt,lt)|0,S=Math.imul(mt,pt),I=I+Math.imul(_t,ct)|0,w=w+Math.imul(_t,wt)|0,w=w+Math.imul(gt,ct)|0,S=S+Math.imul(gt,wt)|0,I=I+Math.imul(At,Bt)|0,w=w+Math.imul(At,Ct)|0,w=w+Math.imul(at,Bt)|0,S=S+Math.imul(at,Ct)|0,I=I+Math.imul(W,ot)|0,w=w+Math.imul(W,st)|0,w=w+Math.imul(X,ot)|0,S=S+Math.imul(X,st)|0,I=I+Math.imul(Y,Mt)|0,w=w+Math.imul(Y,It)|0,w=w+Math.imul(G,Mt)|0,S=S+Math.imul(G,It)|0,I=I+Math.imul(F,ft)|0,w=w+Math.imul(F,Et)|0,w=w+Math.imul(Q,ft)|0,S=S+Math.imul(Q,Et)|0,I=I+Math.imul(E,R)|0,w=w+Math.imul(E,q)|0,w=w+Math.imul(L,R)|0,S=S+Math.imul(L,q)|0;var ae=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(ae>>>26)|0,ae&=67108863,I=Math.imul(bt,lt),w=Math.imul(bt,pt),w=w+Math.imul(yt,lt)|0,S=Math.imul(yt,pt),I=I+Math.imul(dt,ct)|0,w=w+Math.imul(dt,wt)|0,w=w+Math.imul(mt,ct)|0,S=S+Math.imul(mt,wt)|0,I=I+Math.imul(_t,Bt)|0,w=w+Math.imul(_t,Ct)|0,w=w+Math.imul(gt,Bt)|0,S=S+Math.imul(gt,Ct)|0,I=I+Math.imul(At,ot)|0,w=w+Math.imul(At,st)|0,w=w+Math.imul(at,ot)|0,S=S+Math.imul(at,st)|0,I=I+Math.imul(W,Mt)|0,w=w+Math.imul(W,It)|0,w=w+Math.imul(X,Mt)|0,S=S+Math.imul(X,It)|0,I=I+Math.imul(Y,ft)|0,w=w+Math.imul(Y,Et)|0,w=w+Math.imul(G,ft)|0,S=S+Math.imul(G,Et)|0,I=I+Math.imul(F,R)|0,w=w+Math.imul(F,q)|0,w=w+Math.imul(Q,R)|0,S=S+Math.imul(Q,q)|0,I=I+Math.imul(E,O)|0,w=w+Math.imul(E,N)|0,w=w+Math.imul(L,O)|0,S=S+Math.imul(L,N)|0;var fe=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(fe>>>26)|0,fe&=67108863,I=Math.imul(St,lt),w=Math.imul(St,pt),w=w+Math.imul(xt,lt)|0,S=Math.imul(xt,pt),I=I+Math.imul(bt,ct)|0,w=w+Math.imul(bt,wt)|0,w=w+Math.imul(yt,ct)|0,S=S+Math.imul(yt,wt)|0,I=I+Math.imul(dt,Bt)|0,w=w+Math.imul(dt,Ct)|0,w=w+Math.imul(mt,Bt)|0,S=S+Math.imul(mt,Ct)|0,I=I+Math.imul(_t,ot)|0,w=w+Math.imul(_t,st)|0,w=w+Math.imul(gt,ot)|0,S=S+Math.imul(gt,st)|0,I=I+Math.imul(At,Mt)|0,w=w+Math.imul(At,It)|0,w=w+Math.imul(at,Mt)|0,S=S+Math.imul(at,It)|0,I=I+Math.imul(W,ft)|0,w=w+Math.imul(W,Et)|0,w=w+Math.imul(X,ft)|0,S=S+Math.imul(X,Et)|0,I=I+Math.imul(Y,R)|0,w=w+Math.imul(Y,q)|0,w=w+Math.imul(G,R)|0,S=S+Math.imul(G,q)|0,I=I+Math.imul(F,O)|0,w=w+Math.imul(F,N)|0,w=w+Math.imul(Q,O)|0,S=S+Math.imul(Q,N)|0,I=I+Math.imul(E,H)|0,w=w+Math.imul(E,z)|0,w=w+Math.imul(L,H)|0,S=S+Math.imul(L,z)|0;var Vt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,I=Math.imul(vt,lt),w=Math.imul(vt,pt),w=w+Math.imul(ut,lt)|0,S=Math.imul(ut,pt),I=I+Math.imul(St,ct)|0,w=w+Math.imul(St,wt)|0,w=w+Math.imul(xt,ct)|0,S=S+Math.imul(xt,wt)|0,I=I+Math.imul(bt,Bt)|0,w=w+Math.imul(bt,Ct)|0,w=w+Math.imul(yt,Bt)|0,S=S+Math.imul(yt,Ct)|0,I=I+Math.imul(dt,ot)|0,w=w+Math.imul(dt,st)|0,w=w+Math.imul(mt,ot)|0,S=S+Math.imul(mt,st)|0,I=I+Math.imul(_t,Mt)|0,w=w+Math.imul(_t,It)|0,w=w+Math.imul(gt,Mt)|0,S=S+Math.imul(gt,It)|0,I=I+Math.imul(At,ft)|0,w=w+Math.imul(At,Et)|0,w=w+Math.imul(at,ft)|0,S=S+Math.imul(at,Et)|0,I=I+Math.imul(W,R)|0,w=w+Math.imul(W,q)|0,w=w+Math.imul(X,R)|0,S=S+Math.imul(X,q)|0,I=I+Math.imul(Y,O)|0,w=w+Math.imul(Y,N)|0,w=w+Math.imul(G,O)|0,S=S+Math.imul(G,N)|0,I=I+Math.imul(F,H)|0,w=w+Math.imul(F,z)|0,w=w+Math.imul(Q,H)|0,S=S+Math.imul(Q,z)|0,I=I+Math.imul(E,Dt)|0,w=w+Math.imul(E,Jt)|0,w=w+Math.imul(L,Dt)|0,S=S+Math.imul(L,Jt)|0;var Wt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,I=Math.imul(vt,ct),w=Math.imul(vt,wt),w=w+Math.imul(ut,ct)|0,S=Math.imul(ut,wt),I=I+Math.imul(St,Bt)|0,w=w+Math.imul(St,Ct)|0,w=w+Math.imul(xt,Bt)|0,S=S+Math.imul(xt,Ct)|0,I=I+Math.imul(bt,ot)|0,w=w+Math.imul(bt,st)|0,w=w+Math.imul(yt,ot)|0,S=S+Math.imul(yt,st)|0,I=I+Math.imul(dt,Mt)|0,w=w+Math.imul(dt,It)|0,w=w+Math.imul(mt,Mt)|0,S=S+Math.imul(mt,It)|0,I=I+Math.imul(_t,ft)|0,w=w+Math.imul(_t,Et)|0,w=w+Math.imul(gt,ft)|0,S=S+Math.imul(gt,Et)|0,I=I+Math.imul(At,R)|0,w=w+Math.imul(At,q)|0,w=w+Math.imul(at,R)|0,S=S+Math.imul(at,q)|0,I=I+Math.imul(W,O)|0,w=w+Math.imul(W,N)|0,w=w+Math.imul(X,O)|0,S=S+Math.imul(X,N)|0,I=I+Math.imul(Y,H)|0,w=w+Math.imul(Y,z)|0,w=w+Math.imul(G,H)|0,S=S+Math.imul(G,z)|0,I=I+Math.imul(F,Dt)|0,w=w+Math.imul(F,Jt)|0,w=w+Math.imul(Q,Dt)|0,S=S+Math.imul(Q,Jt)|0;var Ht=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,I=Math.imul(vt,Bt),w=Math.imul(vt,Ct),w=w+Math.imul(ut,Bt)|0,S=Math.imul(ut,Ct),I=I+Math.imul(St,ot)|0,w=w+Math.imul(St,st)|0,w=w+Math.imul(xt,ot)|0,S=S+Math.imul(xt,st)|0,I=I+Math.imul(bt,Mt)|0,w=w+Math.imul(bt,It)|0,w=w+Math.imul(yt,Mt)|0,S=S+Math.imul(yt,It)|0,I=I+Math.imul(dt,ft)|0,w=w+Math.imul(dt,Et)|0,w=w+Math.imul(mt,ft)|0,S=S+Math.imul(mt,Et)|0,I=I+Math.imul(_t,R)|0,w=w+Math.imul(_t,q)|0,w=w+Math.imul(gt,R)|0,S=S+Math.imul(gt,q)|0,I=I+Math.imul(At,O)|0,w=w+Math.imul(At,N)|0,w=w+Math.imul(at,O)|0,S=S+Math.imul(at,N)|0,I=I+Math.imul(W,H)|0,w=w+Math.imul(W,z)|0,w=w+Math.imul(X,H)|0,S=S+Math.imul(X,z)|0,I=I+Math.imul(Y,Dt)|0,w=w+Math.imul(Y,Jt)|0,w=w+Math.imul(G,Dt)|0,S=S+Math.imul(G,Jt)|0;var Yt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,I=Math.imul(vt,ot),w=Math.imul(vt,st),w=w+Math.imul(ut,ot)|0,S=Math.imul(ut,st),I=I+Math.imul(St,Mt)|0,w=w+Math.imul(St,It)|0,w=w+Math.imul(xt,Mt)|0,S=S+Math.imul(xt,It)|0,I=I+Math.imul(bt,ft)|0,w=w+Math.imul(bt,Et)|0,w=w+Math.imul(yt,ft)|0,S=S+Math.imul(yt,Et)|0,I=I+Math.imul(dt,R)|0,w=w+Math.imul(dt,q)|0,w=w+Math.imul(mt,R)|0,S=S+Math.imul(mt,q)|0,I=I+Math.imul(_t,O)|0,w=w+Math.imul(_t,N)|0,w=w+Math.imul(gt,O)|0,S=S+Math.imul(gt,N)|0,I=I+Math.imul(At,H)|0,w=w+Math.imul(At,z)|0,w=w+Math.imul(at,H)|0,S=S+Math.imul(at,z)|0,I=I+Math.imul(W,Dt)|0,w=w+Math.imul(W,Jt)|0,w=w+Math.imul(X,Dt)|0,S=S+Math.imul(X,Jt)|0;var Zt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,I=Math.imul(vt,Mt),w=Math.imul(vt,It),w=w+Math.imul(ut,Mt)|0,S=Math.imul(ut,It),I=I+Math.imul(St,ft)|0,w=w+Math.imul(St,Et)|0,w=w+Math.imul(xt,ft)|0,S=S+Math.imul(xt,Et)|0,I=I+Math.imul(bt,R)|0,w=w+Math.imul(bt,q)|0,w=w+Math.imul(yt,R)|0,S=S+Math.imul(yt,q)|0,I=I+Math.imul(dt,O)|0,w=w+Math.imul(dt,N)|0,w=w+Math.imul(mt,O)|0,S=S+Math.imul(mt,N)|0,I=I+Math.imul(_t,H)|0,w=w+Math.imul(_t,z)|0,w=w+Math.imul(gt,H)|0,S=S+Math.imul(gt,z)|0,I=I+Math.imul(At,Dt)|0,w=w+Math.imul(At,Jt)|0,w=w+Math.imul(at,Dt)|0,S=S+Math.imul(at,Jt)|0;var Kt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,I=Math.imul(vt,ft),w=Math.imul(vt,Et),w=w+Math.imul(ut,ft)|0,S=Math.imul(ut,Et),I=I+Math.imul(St,R)|0,w=w+Math.imul(St,q)|0,w=w+Math.imul(xt,R)|0,S=S+Math.imul(xt,q)|0,I=I+Math.imul(bt,O)|0,w=w+Math.imul(bt,N)|0,w=w+Math.imul(yt,O)|0,S=S+Math.imul(yt,N)|0,I=I+Math.imul(dt,H)|0,w=w+Math.imul(dt,z)|0,w=w+Math.imul(mt,H)|0,S=S+Math.imul(mt,z)|0,I=I+Math.imul(_t,Dt)|0,w=w+Math.imul(_t,Jt)|0,w=w+Math.imul(gt,Dt)|0,S=S+Math.imul(gt,Jt)|0;var it=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(it>>>26)|0,it&=67108863,I=Math.imul(vt,R),w=Math.imul(vt,q),w=w+Math.imul(ut,R)|0,S=Math.imul(ut,q),I=I+Math.imul(St,O)|0,w=w+Math.imul(St,N)|0,w=w+Math.imul(xt,O)|0,S=S+Math.imul(xt,N)|0,I=I+Math.imul(bt,H)|0,w=w+Math.imul(bt,z)|0,w=w+Math.imul(yt,H)|0,S=S+Math.imul(yt,z)|0,I=I+Math.imul(dt,Dt)|0,w=w+Math.imul(dt,Jt)|0,w=w+Math.imul(mt,Dt)|0,S=S+Math.imul(mt,Jt)|0;var nt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(nt>>>26)|0,nt&=67108863,I=Math.imul(vt,O),w=Math.imul(vt,N),w=w+Math.imul(ut,O)|0,S=Math.imul(ut,N),I=I+Math.imul(St,H)|0,w=w+Math.imul(St,z)|0,w=w+Math.imul(xt,H)|0,S=S+Math.imul(xt,z)|0,I=I+Math.imul(bt,Dt)|0,w=w+Math.imul(bt,Jt)|0,w=w+Math.imul(yt,Dt)|0,S=S+Math.imul(yt,Jt)|0;var Nt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,I=Math.imul(vt,H),w=Math.imul(vt,z),w=w+Math.imul(ut,H)|0,S=Math.imul(ut,z),I=I+Math.imul(St,Dt)|0,w=w+Math.imul(St,Jt)|0,w=w+Math.imul(xt,Dt)|0,S=S+Math.imul(xt,Jt)|0;var kt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(kt>>>26)|0,kt&=67108863,I=Math.imul(vt,Dt),w=Math.imul(vt,Jt),w=w+Math.imul(ut,Dt)|0,S=Math.imul(ut,Jt);var Ut=(c+I|0)+((w&8191)<<13)|0;return c=(S+(w>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,f[0]=Qt,f[1]=Xt,f[2]=te,f[3]=ie,f[4]=re,f[5]=ne,f[6]=ae,f[7]=fe,f[8]=Vt,f[9]=Wt,f[10]=Ht,f[11]=Yt,f[12]=Zt,f[13]=Kt,f[14]=it,f[15]=nt,f[16]=Nt,f[17]=kt,f[18]=Ut,c!==0&&(f[19]=c,p.length++),p};Math.imul||(J=Rt);function Ot(h,s,u){u.negative=s.negative^h.negative,u.length=h.length+s.length;for(var p=0,g=0,l=0;l>>26)|0,g+=f>>>26,f&=67108863}u.words[l]=c,p=f,f=g}return p!==0?u.words[l]=p:u.length--,u._strip()}function ht(h,s,u){return Ot(h,s,u)}n.prototype.mulTo=function(s,u){var p,g=this.length+s.length;return this.length===10&&s.length===10?p=J(this,s,u):g<63?p=Rt(this,s,u):g<1024?p=Ot(this,s,u):p=ht(this,s,u),p};function Lt(h,s){this.x=h,this.y=s}Lt.prototype.makeRBT=function(s){for(var u=new Array(s),p=n.prototype._countBits(s)-1,g=0;g>=1;return g},Lt.prototype.permute=function(s,u,p,g,l,f){for(var c=0;c>>1)l++;return 1<>>13,p[2*f+1]=l&8191,l=l>>>13;for(f=2*u;f>=26,p+=l/67108864|0,p+=f>>>26,this.words[g]=f&67108863}return p!==0&&(this.words[g]=p,this.length++),u?this.ineg():this},n.prototype.muln=function(s){return this.clone().imuln(s)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(s){var u=qt(s);if(u.length===0)return new n(1);for(var p=this,g=0;g=0);var u=s%26,p=(s-u)/26,g=67108863>>>26-u<<26-u,l;if(u!==0){var f=0;for(l=0;l>>26-u}f&&(this.words[l]=f,this.length++)}if(p!==0){for(l=this.length-1;l>=0;l--)this.words[l+p]=this.words[l];for(l=0;l=0);var g;u?g=(u-u%26)/26:g=0;var l=s%26,f=Math.min((s-l)/26,this.length),c=67108863^67108863>>>l<f)for(this.length-=f,w=0;w=0&&(S!==0||w>=g);w--){var k=this.words[w]|0;this.words[w]=S<<26-l|k>>>l,S=k&c}return I&&S!==0&&(I.words[I.length++]=S),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(s,u,p){return r(this.negative===0),this.iushrn(s,u,p)},n.prototype.shln=function(s){return this.clone().ishln(s)},n.prototype.ushln=function(s){return this.clone().iushln(s)},n.prototype.shrn=function(s){return this.clone().ishrn(s)},n.prototype.ushrn=function(s){return this.clone().iushrn(s)},n.prototype.testn=function(s){r(typeof s=="number"&&s>=0);var u=s%26,p=(s-u)/26,g=1<=0);var u=s%26,p=(s-u)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(u!==0&&p++,this.length=Math.min(p,this.length),u!==0){var g=67108863^67108863>>>u<=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},n.prototype.isubn=function(s){if(r(typeof s=="number"),r(s<67108864),s<0)return this.iaddn(-s);if(this.negative!==0)return this.negative=0,this.iaddn(s),this.negative=1,this;if(this.words[0]-=s,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u>26)-(I/67108864|0),this.words[l+p]=f&67108863}for(;l>26,this.words[l+p]=f&67108863;if(c===0)return this._strip();for(r(c===-1),c=0,l=0;l>26,this.words[l]=f&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(s,u){var p=this.length-s.length,g=this.clone(),l=s,f=l.words[l.length-1]|0,c=this._countBits(f);p=26-c,p!==0&&(l=l.ushln(p),g.iushln(p),f=l.words[l.length-1]|0);var I=g.length-l.length,w;if(u!=="mod"){w=new n(null),w.length=I+1,w.words=new Array(w.length);for(var S=0;S=0;E--){var L=(g.words[l.length+E]|0)*67108864+(g.words[l.length+E-1]|0);for(L=Math.min(L/f|0,67108863),g._ishlnsubmul(l,L,E);g.negative!==0;)L--,g.negative=0,g._ishlnsubmul(l,1,E),g.isZero()||(g.negative^=1);w&&(w.words[E]=L)}return w&&w._strip(),g._strip(),u!=="div"&&p!==0&&g.iushrn(p),{div:w||null,mod:g}},n.prototype.divmod=function(s,u,p){if(r(!s.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var g,l,f;return this.negative!==0&&s.negative===0?(f=this.neg().divmod(s,u),u!=="mod"&&(g=f.div.neg()),u!=="div"&&(l=f.mod.neg(),p&&l.negative!==0&&l.iadd(s)),{div:g,mod:l}):this.negative===0&&s.negative!==0?(f=this.divmod(s.neg(),u),u!=="mod"&&(g=f.div.neg()),{div:g,mod:f.mod}):(this.negative&s.negative)!==0?(f=this.neg().divmod(s.neg(),u),u!=="div"&&(l=f.mod.neg(),p&&l.negative!==0&&l.isub(s)),{div:f.div,mod:l}):s.length>this.length||this.cmp(s)<0?{div:new n(0),mod:this}:s.length===1?u==="div"?{div:this.divn(s.words[0]),mod:null}:u==="mod"?{div:null,mod:new n(this.modrn(s.words[0]))}:{div:this.divn(s.words[0]),mod:new n(this.modrn(s.words[0]))}:this._wordDiv(s,u)},n.prototype.div=function(s){return this.divmod(s,"div",!1).div},n.prototype.mod=function(s){return this.divmod(s,"mod",!1).mod},n.prototype.umod=function(s){return this.divmod(s,"mod",!0).mod},n.prototype.divRound=function(s){var u=this.divmod(s);if(u.mod.isZero())return u.div;var p=u.div.negative!==0?u.mod.isub(s):u.mod,g=s.ushrn(1),l=s.andln(1),f=p.cmp(g);return f<0||l===1&&f===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},n.prototype.modrn=function(s){var u=s<0;u&&(s=-s),r(s<=67108863);for(var p=(1<<26)%s,g=0,l=this.length-1;l>=0;l--)g=(p*g+(this.words[l]|0))%s;return u?-g:g},n.prototype.modn=function(s){return this.modrn(s)},n.prototype.idivn=function(s){var u=s<0;u&&(s=-s),r(s<=67108863);for(var p=0,g=this.length-1;g>=0;g--){var l=(this.words[g]|0)+p*67108864;this.words[g]=l/s|0,p=l%s}return this._strip(),u?this.ineg():this},n.prototype.divn=function(s){return this.clone().idivn(s)},n.prototype.egcd=function(s){r(s.negative===0),r(!s.isZero());var u=this,p=s.clone();u.negative!==0?u=u.umod(s):u=u.clone();for(var g=new n(1),l=new n(0),f=new n(0),c=new n(1),I=0;u.isEven()&&p.isEven();)u.iushrn(1),p.iushrn(1),++I;for(var w=p.clone(),S=u.clone();!u.isZero();){for(var k=0,E=1;(u.words[0]&E)===0&&k<26;++k,E<<=1);if(k>0)for(u.iushrn(k);k-- >0;)(g.isOdd()||l.isOdd())&&(g.iadd(w),l.isub(S)),g.iushrn(1),l.iushrn(1);for(var L=0,$=1;(p.words[0]&$)===0&&L<26;++L,$<<=1);if(L>0)for(p.iushrn(L);L-- >0;)(f.isOdd()||c.isOdd())&&(f.iadd(w),c.isub(S)),f.iushrn(1),c.iushrn(1);u.cmp(p)>=0?(u.isub(p),g.isub(f),l.isub(c)):(p.isub(u),f.isub(g),c.isub(l))}return{a:f,b:c,gcd:p.iushln(I)}},n.prototype._invmp=function(s){r(s.negative===0),r(!s.isZero());var u=this,p=s.clone();u.negative!==0?u=u.umod(s):u=u.clone();for(var g=new n(1),l=new n(0),f=p.clone();u.cmpn(1)>0&&p.cmpn(1)>0;){for(var c=0,I=1;(u.words[0]&I)===0&&c<26;++c,I<<=1);if(c>0)for(u.iushrn(c);c-- >0;)g.isOdd()&&g.iadd(f),g.iushrn(1);for(var w=0,S=1;(p.words[0]&S)===0&&w<26;++w,S<<=1);if(w>0)for(p.iushrn(w);w-- >0;)l.isOdd()&&l.iadd(f),l.iushrn(1);u.cmp(p)>=0?(u.isub(p),g.isub(l)):(p.isub(u),l.isub(g))}var k;return u.cmpn(1)===0?k=g:k=l,k.cmpn(0)<0&&k.iadd(s),k},n.prototype.gcd=function(s){if(this.isZero())return s.abs();if(s.isZero())return this.abs();var u=this.clone(),p=s.clone();u.negative=0,p.negative=0;for(var g=0;u.isEven()&&p.isEven();g++)u.iushrn(1),p.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;p.isEven();)p.iushrn(1);var l=u.cmp(p);if(l<0){var f=u;u=p,p=f}else if(l===0||p.cmpn(1)===0)break;u.isub(p)}while(!0);return p.iushln(g)},n.prototype.invm=function(s){return this.egcd(s).a.umod(s)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(s){return this.words[0]&s},n.prototype.bincn=function(s){r(typeof s=="number");var u=s%26,p=(s-u)/26,g=1<>>26,c&=67108863,this.words[f]=c}return l!==0&&(this.words[f]=l,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(s){var u=s<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this._strip();var p;if(this.length>1)p=1;else{u&&(s=-s),r(s<=67108863,"Number is too big");var g=this.words[0]|0;p=g===s?0:gs.length)return 1;if(this.length=0;p--){var g=this.words[p]|0,l=s.words[p]|0;if(g!==l){gl&&(u=1);break}}return u},n.prototype.gtn=function(s){return this.cmpn(s)===1},n.prototype.gt=function(s){return this.cmp(s)===1},n.prototype.gten=function(s){return this.cmpn(s)>=0},n.prototype.gte=function(s){return this.cmp(s)>=0},n.prototype.ltn=function(s){return this.cmpn(s)===-1},n.prototype.lt=function(s){return this.cmp(s)===-1},n.prototype.lten=function(s){return this.cmpn(s)<=0},n.prototype.lte=function(s){return this.cmp(s)<=0},n.prototype.eqn=function(s){return this.cmpn(s)===0},n.prototype.eq=function(s){return this.cmp(s)===0},n.red=function(s){return new i(s)},n.prototype.toRed=function(s){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),s.convertTo(this)._forceRed(s)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(s){return this.red=s,this},n.prototype.forceRed=function(s){return r(!this.red,"Already a number in reduction context"),this._forceRed(s)},n.prototype.redAdd=function(s){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,s)},n.prototype.redIAdd=function(s){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,s)},n.prototype.redSub=function(s){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,s)},n.prototype.redISub=function(s){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,s)},n.prototype.redShl=function(s){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,s)},n.prototype.redMul=function(s){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.mul(this,s)},n.prototype.redIMul=function(s){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.imul(this,s)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(s){return r(this.red&&!s.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,s)};var ee={k256:null,p224:null,p192:null,p25519:null};function $t(h,s){this.name=h,this.p=new n(s,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$t.prototype._tmp=function(){var s=new n(null);return s.words=new Array(Math.ceil(this.n/13)),s},$t.prototype.ireduce=function(s){var u=s,p;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),p=u.bitLength();while(p>this.n);var g=p0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},$t.prototype.split=function(s,u){s.iushrn(this.n,0,u)},$t.prototype.imulK=function(s){return s.imul(this.k)};function Gt(){$t.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Gt,$t),Gt.prototype.split=function(s,u){for(var p=4194303,g=Math.min(s.length,9),l=0;l>>22,f=c}f>>>=22,s.words[l-10]=f,f===0&&s.length>10?s.length-=10:s.length-=9},Gt.prototype.imulK=function(s){s.words[s.length]=0,s.words[s.length+1]=0,s.length+=2;for(var u=0,p=0;p>>=26,s.words[p]=l,u=g}return u!==0&&(s.words[s.length++]=u),s},n._prime=function(s){if(ee[s])return ee[s];var u;if(s==="k256")u=new Gt;else if(s==="p224")u=new tt;else if(s==="p192")u=new rt;else if(s==="p25519")u=new v;else throw new Error("Unknown prime "+s);return ee[s]=u,u};function i(h){if(typeof h=="string"){var s=n._prime(h);this.m=s.p,this.prime=s}else r(h.gtn(1),"modulus must be greater than 1"),this.m=h,this.prime=null}i.prototype._verify1=function(s){r(s.negative===0,"red works only with positives"),r(s.red,"red works only with red numbers")},i.prototype._verify2=function(s,u){r((s.negative|u.negative)===0,"red works only with positives"),r(s.red&&s.red===u.red,"red works only with red numbers")},i.prototype.imod=function(s){return this.prime?this.prime.ireduce(s)._forceRed(this):(B(s,s.umod(this.m)._forceRed(this)),s)},i.prototype.neg=function(s){return s.isZero()?s.clone():this.m.sub(s)._forceRed(this)},i.prototype.add=function(s,u){this._verify2(s,u);var p=s.add(u);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},i.prototype.iadd=function(s,u){this._verify2(s,u);var p=s.iadd(u);return p.cmp(this.m)>=0&&p.isub(this.m),p},i.prototype.sub=function(s,u){this._verify2(s,u);var p=s.sub(u);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},i.prototype.isub=function(s,u){this._verify2(s,u);var p=s.isub(u);return p.cmpn(0)<0&&p.iadd(this.m),p},i.prototype.shl=function(s,u){return this._verify1(s),this.imod(s.ushln(u))},i.prototype.imul=function(s,u){return this._verify2(s,u),this.imod(s.imul(u))},i.prototype.mul=function(s,u){return this._verify2(s,u),this.imod(s.mul(u))},i.prototype.isqr=function(s){return this.imul(s,s.clone())},i.prototype.sqr=function(s){return this.mul(s,s)},i.prototype.sqrt=function(s){if(s.isZero())return s.clone();var u=this.m.andln(3);if(r(u%2===1),u===3){var p=this.m.add(new n(1)).iushrn(2);return this.pow(s,p)}for(var g=this.m.subn(1),l=0;!g.isZero()&&g.andln(1)===0;)l++,g.iushrn(1);r(!g.isZero());var f=new n(1).toRed(this),c=f.redNeg(),I=this.m.subn(1).iushrn(1),w=this.m.bitLength();for(w=new n(2*w*w).toRed(this);this.pow(w,I).cmp(c)!==0;)w.redIAdd(c);for(var S=this.pow(w,g),k=this.pow(s,g.addn(1).iushrn(1)),E=this.pow(s,g),L=l;E.cmp(f)!==0;){for(var $=E,F=0;$.cmp(f)!==0;F++)$=$.redSqr();r(F=0;l--){for(var S=u.words[l],k=w-1;k>=0;k--){var E=S>>k&1;if(f!==g[0]&&(f=this.sqr(f)),E===0&&c===0){I=0;continue}c<<=1,c|=E,I++,!(I!==p&&(l!==0||k!==0))&&(f=this.mul(f,g[c]),I=0,c=0)}w=26}return f},i.prototype.convertTo=function(s){var u=s.umod(this.m);return u===s?u.clone():u},i.prototype.convertFrom=function(s){var u=s.clone();return u.red=null,u},n.mont=function(s){return new o(s)};function o(h){i.call(this,h),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(o,i),o.prototype.convertTo=function(s){return this.imod(s.ushln(this.shift))},o.prototype.convertFrom=function(s){var u=this.imod(s.mul(this.rinv));return u.red=null,u},o.prototype.imul=function(s,u){if(s.isZero()||u.isZero())return s.words[0]=0,s.length=1,s;var p=s.imul(u),g=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=p.isub(g).iushrn(this.shift),f=l;return l.cmp(this.m)>=0?f=l.isub(this.m):l.cmpn(0)<0&&(f=l.iadd(this.m)),f._forceRed(this)},o.prototype.mul=function(s,u){if(s.isZero()||u.isZero())return new n(0)._forceRed(this);var p=s.mul(u),g=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=p.isub(g).iushrn(this.shift),f=l;return l.cmp(this.m)>=0?f=l.isub(this.m):l.cmpn(0)<0&&(f=l.iadd(this.m)),f._forceRed(this)},o.prototype.invm=function(s){var u=this.imod(s._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof mv>"u"||mv,cM)});var nu=P((Frt,pM)=>{M();var ka=iu(),jN=qf();function zN(e){var t=dM(e),r=t.toRed(ka.mont(e.modulus)).redPow(new ka(e.publicExponent)).fromRed();return{blinder:r,unblinder:t.invm(e.modulus)}}function dM(e){var t=e.modulus.byteLength(),r;do r=new ka(jN(t));while(r.cmp(e.modulus)>=0||!r.umod(e.prime1)||!r.umod(e.prime2));return r}function vM(e,t){var r=zN(t),a=t.modulus.byteLength(),n=new ka(e).mul(r.blinder).umod(t.modulus),d=n.toRed(ka.mont(t.prime1)),m=n.toRed(ka.mont(t.prime2)),b=t.coefficient,A=t.prime1,B=t.prime2,C=d.redPow(t.exponent1).fromRed(),D=m.redPow(t.exponent2).fromRed(),K=C.isub(D).imul(b).umod(A).imul(B);return D.iadd(K).imul(r.unblinder).umod(t.modulus).toArrayLike(U,"be",a)}vM.getr=dM;pM.exports=vM});var gM=P((Qrt,VN)=>{VN.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var Yi=P((mM,bv)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof bv>"u"||bv,mM)});var yv=P(xM=>{"use strict";M();var fu=xM;function YN(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e!="string"){for(var a=0;a>8,m=n&255;d?r.push(d,m):r.push(m)}return r}fu.toArray=YN;function bM(e){return e.length===1?"0"+e:e}fu.zero2=bM;function yM(e){for(var t="",r=0;r{"use strict";M();var Ei=wM,GN=Yi(),$N=jr(),au=yv();Ei.assert=$N;Ei.toArray=au.toArray;Ei.zero2=au.zero2;Ei.toHex=au.toHex;Ei.encode=au.encode;function ZN(e,t,r){var a=new Array(Math.max(e.bitLength(),r)+1);a.fill(0);for(var n=1<(n>>1)-1?b=(n>>1)-A:b=A,d.isubn(b)):b=0,a[m]=b,d.iushrn(1)}return a}Ei.getNAF=ZN;function WN(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var a=0,n=0,d;e.cmpn(-a)>0||t.cmpn(-n)>0;){var m=e.andln(3)+a&3,b=t.andln(3)+n&3;m===3&&(m=-1),b===3&&(b=-1);var A;(m&1)===0?A=0:(d=e.andln(7)+a&7,(d===3||d===5)&&b===2?A=-m:A=m),r[0].push(A);var B;(b&1)===0?B=0:(d=t.andln(7)+n&7,(d===3||d===5)&&m===2?B=-b:B=b),r[1].push(B),2*a===A+1&&(a=1-a),2*n===B+1&&(n=1-n),e.iushrn(1),t.iushrn(1)}return r}Ei.getJSF=WN;function JN(e,t,r){var a="_"+t;e.prototype[t]=function(){return this[a]!==void 0?this[a]:this[a]=r.call(this)}}Ei.cachedProperty=JN;function XN(e){return typeof e=="string"?Ei.toArray(e,"hex"):e}Ei.parseBytes=XN;function tF(e){return new GN(e,"hex","le")}Ei.intFromLE=tF});var Is=P((Grt,MM)=>{"use strict";M();var Vf=Yi(),_s=zr(),ou=_s.getNAF,eF=_s.getJSF,su=_s.assert;function rf(e,t){this.type=e,this.p=new Vf(t.p,16),this.red=t.prime?Vf.red(t.prime):Vf.mont(this.p),this.zero=new Vf(0).toRed(this.red),this.one=new Vf(1).toRed(this.red),this.two=new Vf(2).toRed(this.red),this.n=t.n&&new Vf(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}MM.exports=rf;rf.prototype.point=function(){throw new Error("Not implemented")};rf.prototype.validate=function(){throw new Error("Not implemented")};rf.prototype._fixedNafMul=function(t,r){su(t.precomputed);var a=t._getDoubles(),n=ou(r,1,this._bitLength),d=(1<=b;B--)A=(A<<1)+n[B];m.push(A)}for(var C=this.jpoint(null,null,null),D=this.jpoint(null,null,null),K=d;K>0;K--){for(b=0;b=0;A--){for(var B=0;A>=0&&m[A]===0;A--)B++;if(A>=0&&B++,b=b.dblp(B),A<0)break;var C=m[A];su(C!==0),t.type==="affine"?C>0?b=b.mixedAdd(d[C-1>>1]):b=b.mixedAdd(d[-C-1>>1].neg()):C>0?b=b.add(d[C-1>>1]):b=b.add(d[-C-1>>1].neg())}return t.type==="affine"?b.toP():b};rf.prototype._wnafMulAdd=function(t,r,a,n,d){var m=this._wnafT1,b=this._wnafT2,A=this._wnafT3,B=0,C,D,K;for(C=0;C=1;C-=2){var Z=C-1,qt=C;if(m[Z]!==1||m[qt]!==1){A[Z]=ou(a[Z],m[Z],this._bitLength),A[qt]=ou(a[qt],m[qt],this._bitLength),B=Math.max(A[Z].length,B),B=Math.max(A[qt].length,B);continue}var Rt=[r[Z],null,null,r[qt]];r[Z].y.cmp(r[qt].y)===0?(Rt[1]=r[Z].add(r[qt]),Rt[2]=r[Z].toJ().mixedAdd(r[qt].neg())):r[Z].y.cmp(r[qt].y.redNeg())===0?(Rt[1]=r[Z].toJ().mixedAdd(r[qt]),Rt[2]=r[Z].add(r[qt].neg())):(Rt[1]=r[Z].toJ().mixedAdd(r[qt]),Rt[2]=r[Z].toJ().mixedAdd(r[qt].neg()));var J=[-3,-1,-5,-7,0,7,5,1,3],Ot=eF(a[Z],a[qt]);for(B=Math.max(Ot[0].length,B),A[Z]=new Array(B),A[qt]=new Array(B),D=0;D=0;C--){for(var Gt=0;C>=0;){var tt=!0;for(D=0;D=0&&Gt++,ee=ee.dblp(Gt),C<0)break;for(D=0;D0?K=b[D][rt-1>>1]:rt<0&&(K=b[D][-rt-1>>1].neg()),K.type==="affine"?ee=ee.mixedAdd(K):ee=ee.add(K))}}for(C=0;C=Math.ceil((t.bitLength()+1)/r.step):!1};si.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var a=[this],n=this,d=0;d{"use strict";M();var rF=zr(),tr=Yi(),xv=ge(),Pa=Is(),iF=rF.assert;function hi(e){Pa.call(this,"short",e),this.a=new tr(e.a,16).toRed(this.red),this.b=new tr(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}xv(hi,Pa);AM.exports=hi;hi.prototype._getEndomorphism=function(t){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,a;if(t.beta)r=new tr(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);r=n[0].cmp(n[1])<0?n[0]:n[1],r=r.toRed(this.red)}if(t.lambda)a=new tr(t.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(r))===0?a=d[0]:(a=d[1],iF(this.g.mul(a).x.cmp(this.g.x.redMul(r))===0))}var m;return t.basis?m=t.basis.map(function(b){return{a:new tr(b.a,16),b:new tr(b.b,16)}}):m=this._getEndoBasis(a),{beta:r,lambda:a,basis:m}}};hi.prototype._getEndoRoots=function(t){var r=t===this.p?this.red:tr.mont(t),a=new tr(2).toRed(r).redInvm(),n=a.redNeg(),d=new tr(3).toRed(r).redNeg().redSqrt().redMul(a),m=n.redAdd(d).fromRed(),b=n.redSub(d).fromRed();return[m,b]};hi.prototype._getEndoBasis=function(t){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),a=t,n=this.n.clone(),d=new tr(1),m=new tr(0),b=new tr(0),A=new tr(1),B,C,D,K,j,Z,qt,Rt=0,J,Ot;a.cmpn(0)!==0;){var ht=n.div(a);J=n.sub(ht.mul(a)),Ot=b.sub(ht.mul(d));var Lt=A.sub(ht.mul(m));if(!D&&J.cmp(r)<0)B=qt.neg(),C=d,D=J.neg(),K=Ot;else if(D&&++Rt===2)break;qt=J,n=a,a=J,b=d,d=Ot,A=m,m=Lt}j=J.neg(),Z=Ot;var ee=D.sqr().add(K.sqr()),$t=j.sqr().add(Z.sqr());return $t.cmp(ee)>=0&&(j=B,Z=C),D.negative&&(D=D.neg(),K=K.neg()),j.negative&&(j=j.neg(),Z=Z.neg()),[{a:D,b:K},{a:j,b:Z}]};hi.prototype._endoSplit=function(t){var r=this.endo.basis,a=r[0],n=r[1],d=n.b.mul(t).divRound(this.n),m=a.b.neg().mul(t).divRound(this.n),b=d.mul(a.a),A=m.mul(n.a),B=d.mul(a.b),C=m.mul(n.b),D=t.sub(b).sub(A),K=B.add(C).neg();return{k1:D,k2:K}};hi.prototype.pointFromX=function(t,r){t=new tr(t,16),t.red||(t=t.toRed(this.red));var a=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=a.redSqrt();if(n.redSqr().redSub(a).cmp(this.zero)!==0)throw new Error("invalid point");var d=n.fromRed().isOdd();return(r&&!d||!r&&d)&&(n=n.redNeg()),this.point(t,n)};hi.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,a=t.y,n=this.a.redMul(r),d=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return a.redSqr().redISub(d).cmpn(0)===0};hi.prototype._endoWnafMulAdd=function(t,r,a){for(var n=this._endoWnafT1,d=this._endoWnafT2,m=0;m":""};ur.prototype.isInfinity=function(){return this.inf};ur.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var a=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,n)};ur.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,a=this.x.redSqr(),n=t.redInvm(),d=a.redAdd(a).redIAdd(a).redIAdd(r).redMul(n),m=d.redSqr().redISub(this.x.redAdd(this.x)),b=d.redMul(this.x.redSub(m)).redISub(this.y);return this.curve.point(m,b)};ur.prototype.getX=function(){return this.x.fromRed()};ur.prototype.getY=function(){return this.y.fromRed()};ur.prototype.mul=function(t){return t=new tr(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)};ur.prototype.mulAdd=function(t,r,a){var n=[this,r],d=[t,a];return this.curve.endo?this.curve._endoWnafMulAdd(n,d):this.curve._wnafMulAdd(1,n,d,2)};ur.prototype.jmulAdd=function(t,r,a){var n=[this,r],d=[t,a];return this.curve.endo?this.curve._endoWnafMulAdd(n,d,!0):this.curve._wnafMulAdd(1,n,d,2,!0)};ur.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)};ur.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var a=this.precomputed,n=function(d){return d.neg()};r.precomputed={naf:a.naf&&{wnd:a.naf.wnd,points:a.naf.points.map(n)},doubles:a.doubles&&{step:a.doubles.step,points:a.doubles.points.map(n)}}}return r};ur.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function pr(e,t,r,a){Pa.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&a===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new tr(0)):(this.x=new tr(t,16),this.y=new tr(r,16),this.z=new tr(a,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}xv(pr,Pa.BasePoint);hi.prototype.jpoint=function(t,r,a){return new pr(this,t,r,a)};pr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),a=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(a,n)};pr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};pr.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),a=this.z.redSqr(),n=this.x.redMul(r),d=t.x.redMul(a),m=this.y.redMul(r.redMul(t.z)),b=t.y.redMul(a.redMul(this.z)),A=n.redSub(d),B=m.redSub(b);if(A.cmpn(0)===0)return B.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var C=A.redSqr(),D=C.redMul(A),K=n.redMul(C),j=B.redSqr().redIAdd(D).redISub(K).redISub(K),Z=B.redMul(K.redISub(j)).redISub(m.redMul(D)),qt=this.z.redMul(t.z).redMul(A);return this.curve.jpoint(j,Z,qt)};pr.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),a=this.x,n=t.x.redMul(r),d=this.y,m=t.y.redMul(r).redMul(this.z),b=a.redSub(n),A=d.redSub(m);if(b.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var B=b.redSqr(),C=B.redMul(b),D=a.redMul(B),K=A.redSqr().redIAdd(C).redISub(D).redISub(D),j=A.redMul(D.redISub(K)).redISub(d.redMul(C)),Z=this.z.redMul(b);return this.curve.jpoint(K,j,Z)};pr.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var a=this;for(r=0;r=0)return!1;if(a.redIAdd(d),this.x.cmp(a)===0)return!0}};pr.prototype.inspect=function(){return this.isInfinity()?"":""};pr.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var SM=P((Jrt,EM)=>{"use strict";M();var Ua=Yi(),IM=ge(),hu=Is(),nF=zr();function La(e){hu.call(this,"mont",e),this.a=new Ua(e.a,16).toRed(this.red),this.b=new Ua(e.b,16).toRed(this.red),this.i4=new Ua(4).toRed(this.red).redInvm(),this.two=new Ua(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}IM(La,hu);EM.exports=La;La.prototype.validate=function(t){var r=t.normalize().x,a=r.redSqr(),n=a.redMul(r).redAdd(a.redMul(this.a)).redAdd(r),d=n.redSqrt();return d.redSqr().cmp(n)===0};function lr(e,t,r){hu.BasePoint.call(this,e,"projective"),t===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Ua(t,16),this.z=new Ua(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}IM(lr,hu.BasePoint);La.prototype.decodePoint=function(t,r){return this.point(nF.toArray(t,r),1)};La.prototype.point=function(t,r){return new lr(this,t,r)};La.prototype.pointFromJSON=function(t){return lr.fromJSON(this,t)};lr.prototype.precompute=function(){};lr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};lr.fromJSON=function(t,r){return new lr(t,r[0],r[1]||t.one)};lr.prototype.inspect=function(){return this.isInfinity()?"":""};lr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};lr.prototype.dbl=function(){var t=this.x.redAdd(this.z),r=t.redSqr(),a=this.x.redSub(this.z),n=a.redSqr(),d=r.redSub(n),m=r.redMul(n),b=d.redMul(n.redAdd(this.curve.a24.redMul(d)));return this.curve.point(m,b)};lr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.diffAdd=function(t,r){var a=this.x.redAdd(this.z),n=this.x.redSub(this.z),d=t.x.redAdd(t.z),m=t.x.redSub(t.z),b=m.redMul(a),A=d.redMul(n),B=r.z.redMul(b.redAdd(A).redSqr()),C=r.x.redMul(b.redISub(A).redSqr());return this.curve.point(B,C)};lr.prototype.mul=function(t){for(var r=t.clone(),a=this,n=this.curve.point(null,null),d=this,m=[];r.cmpn(0)!==0;r.iushrn(1))m.push(r.andln(1));for(var b=m.length-1;b>=0;b--)m[b]===0?(a=a.diffAdd(n,d),n=n.dbl()):(n=a.diffAdd(n,d),a=a.dbl());return n};lr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.eq=function(t){return this.getX().cmp(t.getX())===0};lr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};lr.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var qM=P((tit,CM)=>{"use strict";M();var fF=zr(),_n=Yi(),BM=ge(),uu=Is(),aF=fF.assert;function Gi(e){this.twisted=(e.a|0)!==1,this.mOneA=this.twisted&&(e.a|0)===-1,this.extended=this.mOneA,uu.call(this,"edwards",e),this.a=new _n(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new _n(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new _n(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),aF(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(e.c|0)===1}BM(Gi,uu);CM.exports=Gi;Gi.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)};Gi.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)};Gi.prototype.jpoint=function(t,r,a,n){return this.point(t,r,a,n)};Gi.prototype.pointFromX=function(t,r){t=new _n(t,16),t.red||(t=t.toRed(this.red));var a=t.redSqr(),n=this.c2.redSub(this.a.redMul(a)),d=this.one.redSub(this.c2.redMul(this.d).redMul(a)),m=n.redMul(d.redInvm()),b=m.redSqrt();if(b.redSqr().redSub(m).cmp(this.zero)!==0)throw new Error("invalid point");var A=b.fromRed().isOdd();return(r&&!A||!r&&A)&&(b=b.redNeg()),this.point(t,b)};Gi.prototype.pointFromY=function(t,r){t=new _n(t,16),t.red||(t=t.toRed(this.red));var a=t.redSqr(),n=a.redSub(this.c2),d=a.redMul(this.d).redMul(this.c2).redSub(this.a),m=n.redMul(d.redInvm());if(m.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,t)}var b=m.redSqrt();if(b.redSqr().redSub(m).cmp(this.zero)!==0)throw new Error("invalid point");return b.fromRed().isOdd()!==r&&(b=b.redNeg()),this.point(b,t)};Gi.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var r=t.x.redSqr(),a=t.y.redSqr(),n=r.redMul(this.a).redAdd(a),d=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(a)));return n.cmp(d)===0};function Ye(e,t,r,a,n){uu.BasePoint.call(this,e,"projective"),t===null&&r===null&&a===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new _n(t,16),this.y=new _n(r,16),this.z=a?new _n(a,16):this.curve.one,this.t=n&&new _n(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}BM(Ye,uu.BasePoint);Gi.prototype.pointFromJSON=function(t){return Ye.fromJSON(this,t)};Gi.prototype.point=function(t,r,a,n){return new Ye(this,t,r,a,n)};Ye.fromJSON=function(t,r){return new Ye(t,r[0],r[1],r[2])};Ye.prototype.inspect=function(){return this.isInfinity()?"":""};Ye.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Ye.prototype._extDbl=function(){var t=this.x.redSqr(),r=this.y.redSqr(),a=this.z.redSqr();a=a.redIAdd(a);var n=this.curve._mulA(t),d=this.x.redAdd(this.y).redSqr().redISub(t).redISub(r),m=n.redAdd(r),b=m.redSub(a),A=n.redSub(r),B=d.redMul(b),C=m.redMul(A),D=d.redMul(A),K=b.redMul(m);return this.curve.point(B,C,K,D)};Ye.prototype._projDbl=function(){var t=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),a=this.y.redSqr(),n,d,m,b,A,B;if(this.curve.twisted){b=this.curve._mulA(r);var C=b.redAdd(a);this.zOne?(n=t.redSub(r).redSub(a).redMul(C.redSub(this.curve.two)),d=C.redMul(b.redSub(a)),m=C.redSqr().redSub(C).redSub(C)):(A=this.z.redSqr(),B=C.redSub(A).redISub(A),n=t.redSub(r).redISub(a).redMul(B),d=C.redMul(b.redSub(a)),m=C.redMul(B))}else b=r.redAdd(a),A=this.curve._mulC(this.z).redSqr(),B=b.redSub(A).redSub(A),n=this.curve._mulC(t.redISub(b)).redMul(B),d=this.curve._mulC(b).redMul(r.redISub(a)),m=b.redMul(B);return this.curve.point(n,d,m)};Ye.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};Ye.prototype._extAdd=function(t){var r=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),a=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),d=this.z.redMul(t.z.redAdd(t.z)),m=a.redSub(r),b=d.redSub(n),A=d.redAdd(n),B=a.redAdd(r),C=m.redMul(b),D=A.redMul(B),K=m.redMul(B),j=b.redMul(A);return this.curve.point(C,D,j,K)};Ye.prototype._projAdd=function(t){var r=this.z.redMul(t.z),a=r.redSqr(),n=this.x.redMul(t.x),d=this.y.redMul(t.y),m=this.curve.d.redMul(n).redMul(d),b=a.redSub(m),A=a.redAdd(m),B=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(n).redISub(d),C=r.redMul(b).redMul(B),D,K;return this.curve.twisted?(D=r.redMul(A).redMul(d.redSub(this.curve._mulA(n))),K=b.redMul(A)):(D=r.redMul(A).redMul(d.redSub(n)),K=this.curve._mulC(b).redMul(A)),this.curve.point(C,D,K)};Ye.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)};Ye.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)};Ye.prototype.mulAdd=function(t,r,a){return this.curve._wnafMulAdd(1,[this,r],[t,a],2,!1)};Ye.prototype.jmulAdd=function(t,r,a){return this.curve._wnafMulAdd(1,[this,r],[t,a],2,!0)};Ye.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this};Ye.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Ye.prototype.getX=function(){return this.normalize(),this.x.fromRed()};Ye.prototype.getY=function(){return this.normalize(),this.y.fromRed()};Ye.prototype.eq=function(t){return this===t||this.getX().cmp(t.getX())===0&&this.getY().cmp(t.getY())===0};Ye.prototype.eqXToP=function(t){var r=t.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var a=t.clone(),n=this.curve.redN.redMul(this.z);;){if(a.iadd(this.curve.n),a.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(n),this.x.cmp(r)===0)return!0}};Ye.prototype.toP=Ye.prototype.normalize;Ye.prototype.mixedAdd=Ye.prototype.add});var wv=P(RM=>{"use strict";M();var lu=RM;lu.base=Is();lu.short=_M();lu.mont=SM();lu.edwards=qM()});var Si=P(Ve=>{"use strict";M();var oF=jr(),sF=ge();Ve.inherits=sF;function hF(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function uF(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[a++]=d&63|128):hF(e,n)?(d=65536+((d&1023)<<10)+(e.charCodeAt(++n)&1023),r[a++]=d>>18|240,r[a++]=d>>12&63|128,r[a++]=d>>6&63|128,r[a++]=d&63|128):(r[a++]=d>>12|224,r[a++]=d>>6&63|128,r[a++]=d&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}Ve.htonl=TM;function cF(e,t){for(var r="",a=0;a>>0}return d}Ve.join32=dF;function vF(e,t){for(var r=new Array(e.length*4),a=0,n=0;a>>24,r[n+1]=d>>>16&255,r[n+2]=d>>>8&255,r[n+3]=d&255):(r[n+3]=d>>>24,r[n+2]=d>>>16&255,r[n+1]=d>>>8&255,r[n]=d&255)}return r}Ve.split32=vF;function pF(e,t){return e>>>t|e<<32-t}Ve.rotr32=pF;function gF(e,t){return e<>>32-t}Ve.rotl32=gF;function mF(e,t){return e+t>>>0}Ve.sum32=mF;function bF(e,t,r){return e+t+r>>>0}Ve.sum32_3=bF;function yF(e,t,r,a){return e+t+r+a>>>0}Ve.sum32_4=yF;function xF(e,t,r,a,n){return e+t+r+a+n>>>0}Ve.sum32_5=xF;function wF(e,t,r,a){var n=e[t],d=e[t+1],m=a+d>>>0,b=(m>>0,e[t+1]=m}Ve.sum64=wF;function MF(e,t,r,a){var n=t+a>>>0,d=(n>>0}Ve.sum64_hi=MF;function AF(e,t,r,a){var n=t+a;return n>>>0}Ve.sum64_lo=AF;function _F(e,t,r,a,n,d,m,b){var A=0,B=t;B=B+a>>>0,A+=B>>0,A+=B>>0,A+=B>>0}Ve.sum64_4_hi=_F;function IF(e,t,r,a,n,d,m,b){var A=t+a+d+b;return A>>>0}Ve.sum64_4_lo=IF;function EF(e,t,r,a,n,d,m,b,A,B){var C=0,D=t;D=D+a>>>0,C+=D>>0,C+=D>>0,C+=D>>0,C+=D>>0}Ve.sum64_5_hi=EF;function SF(e,t,r,a,n,d,m,b,A,B){var C=t+a+d+b+B;return C>>>0}Ve.sum64_5_lo=SF;function BF(e,t,r){var a=t<<32-r|e>>>r;return a>>>0}Ve.rotr64_hi=BF;function CF(e,t,r){var a=e<<32-r|t>>>r;return a>>>0}Ve.rotr64_lo=CF;function qF(e,t,r){return e>>>r}Ve.shr64_hi=qF;function RF(e,t,r){var a=e<<32-r|t>>>r;return a>>>0}Ve.shr64_lo=RF});var Na=P(PM=>{"use strict";M();var kM=Si(),TF=jr();function cu(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}PM.BlockHash=cu;cu.prototype.update=function(t,r){if(t=kM.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var a=t.length%this._delta8;this.pending=t.slice(t.length-a,t.length),this.pending.length===0&&(this.pending=null),t=kM.join32(t,0,t.length-a,this.endian);for(var n=0;n>>24&255,n[d++]=t>>>16&255,n[d++]=t>>>8&255,n[d++]=t&255}else for(n[d++]=t&255,n[d++]=t>>>8&255,n[d++]=t>>>16&255,n[d++]=t>>>24&255,n[d++]=0,n[d++]=0,n[d++]=0,n[d++]=0,m=8;m{"use strict";M();var OF=Si(),$i=OF.rotr32;function DF(e,t,r,a){if(e===0)return UM(t,r,a);if(e===1||e===3)return NM(t,r,a);if(e===2)return LM(t,r,a)}In.ft_1=DF;function UM(e,t,r){return e&t^~e&r}In.ch32=UM;function LM(e,t,r){return e&t^e&r^t&r}In.maj32=LM;function NM(e,t,r){return e^t^r}In.p32=NM;function kF(e){return $i(e,2)^$i(e,13)^$i(e,22)}In.s0_256=kF;function PF(e){return $i(e,6)^$i(e,11)^$i(e,25)}In.s1_256=PF;function UF(e){return $i(e,7)^$i(e,18)^e>>>3}In.g0_256=UF;function LF(e){return $i(e,17)^$i(e,19)^e>>>10}In.g1_256=LF});var QM=P((uit,KM)=>{"use strict";M();var Fa=Si(),NF=Na(),FF=Mv(),Av=Fa.rotl32,Es=Fa.sum32,KF=Fa.sum32_5,QF=FF.ft_1,FM=NF.BlockHash,HF=[1518500249,1859775393,2400959708,3395469782];function Zi(){if(!(this instanceof Zi))return new Zi;FM.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Fa.inherits(Zi,FM);KM.exports=Zi;Zi.blockSize=512;Zi.outSize=160;Zi.hmacStrength=80;Zi.padLength=64;Zi.prototype._update=function(t,r){for(var a=this.W,n=0;n<16;n++)a[n]=t[r+n];for(;n{"use strict";M();var Ka=Si(),jF=Na(),Qa=Mv(),zF=jr(),Bi=Ka.sum32,VF=Ka.sum32_4,YF=Ka.sum32_5,GF=Qa.ch32,$F=Qa.maj32,ZF=Qa.s0_256,WF=Qa.s1_256,JF=Qa.g0_256,XF=Qa.g1_256,HM=jF.BlockHash,tK=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Wi(){if(!(this instanceof Wi))return new Wi;HM.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=tK,this.W=new Array(64)}Ka.inherits(Wi,HM);jM.exports=Wi;Wi.blockSize=512;Wi.outSize=256;Wi.hmacStrength=192;Wi.padLength=64;Wi.prototype._update=function(t,r){for(var a=this.W,n=0;n<16;n++)a[n]=t[r+n];for(;n{"use strict";M();var Iv=Si(),zM=_v();function En(){if(!(this instanceof En))return new En;zM.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}Iv.inherits(En,zM);VM.exports=En;En.blockSize=512;En.outSize=224;En.hmacStrength=192;En.padLength=64;En.prototype._digest=function(t){return t==="hex"?Iv.toHex32(this.h.slice(0,7),"big"):Iv.split32(this.h.slice(0,7),"big")}});var Bv=P((git,WM)=>{"use strict";M();var Lr=Si(),eK=Na(),rK=jr(),Ji=Lr.rotr64_hi,Xi=Lr.rotr64_lo,GM=Lr.shr64_hi,$M=Lr.shr64_lo,nf=Lr.sum64,Ev=Lr.sum64_hi,Sv=Lr.sum64_lo,iK=Lr.sum64_4_hi,nK=Lr.sum64_4_lo,fK=Lr.sum64_5_hi,aK=Lr.sum64_5_lo,ZM=eK.BlockHash,oK=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Ci(){if(!(this instanceof Ci))return new Ci;ZM.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=oK,this.W=new Array(160)}Lr.inherits(Ci,ZM);WM.exports=Ci;Ci.blockSize=1024;Ci.outSize=512;Ci.hmacStrength=192;Ci.padLength=128;Ci.prototype._prepareBlock=function(t,r){for(var a=this.W,n=0;n<32;n++)a[n]=t[r+n];for(;n{"use strict";M();var Cv=Si(),JM=Bv();function Sn(){if(!(this instanceof Sn))return new Sn;JM.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}Cv.inherits(Sn,JM);XM.exports=Sn;Sn.blockSize=1024;Sn.outSize=384;Sn.hmacStrength=192;Sn.padLength=128;Sn.prototype._digest=function(t){return t==="hex"?Cv.toHex32(this.h.slice(0,12),"big"):Cv.split32(this.h.slice(0,12),"big")}});var e7=P(Ha=>{"use strict";M();Ha.sha1=QM();Ha.sha224=YM();Ha.sha256=_v();Ha.sha384=t7();Ha.sha512=Bv()});var o7=P(a7=>{"use strict";M();var Yf=Si(),xK=Na(),du=Yf.rotl32,r7=Yf.sum32,Ss=Yf.sum32_3,i7=Yf.sum32_4,f7=xK.BlockHash;function tn(){if(!(this instanceof tn))return new tn;f7.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Yf.inherits(tn,f7);a7.ripemd160=tn;tn.blockSize=512;tn.outSize=160;tn.hmacStrength=192;tn.padLength=64;tn.prototype._update=function(t,r){for(var a=this.h[0],n=this.h[1],d=this.h[2],m=this.h[3],b=this.h[4],A=a,B=n,C=d,D=m,K=b,j=0;j<80;j++){var Z=r7(du(i7(a,n7(j,n,d,m),t[AK[j]+r],wK(j)),IK[j]),b);a=b,b=m,m=du(d,10),d=n,n=Z,Z=r7(du(i7(A,n7(79-j,B,C,D),t[_K[j]+r],MK(j)),EK[j]),K),A=K,K=D,D=du(C,10),C=B,B=Z}Z=Ss(this.h[1],d,D),this.h[1]=Ss(this.h[2],m,K),this.h[2]=Ss(this.h[3],b,A),this.h[3]=Ss(this.h[4],a,B),this.h[4]=Ss(this.h[0],n,C),this.h[0]=Z};tn.prototype._digest=function(t){return t==="hex"?Yf.toHex32(this.h,"little"):Yf.split32(this.h,"little")};function n7(e,t,r,a){return e<=15?t^r^a:e<=31?t&r|~t&a:e<=47?(t|~r)^a:e<=63?t&a|r&~a:t^(r|~a)}function wK(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function MK(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}var AK=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],_K=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],IK=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],EK=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var h7=P((_it,s7)=>{"use strict";M();var SK=Si(),BK=jr();function ja(e,t,r){if(!(this instanceof ja))return new ja(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(SK.toArray(t,r))}s7.exports=ja;ja.prototype._init=function(t){t.length>this.blockSize&&(t=new this.Hash().update(t).digest()),BK(t.length<=this.blockSize);for(var r=t.length;r{M();var gr=u7;gr.utils=Si();gr.common=Na();gr.sha=e7();gr.ripemd=o7();gr.hmac=h7();gr.sha1=gr.sha.sha1;gr.sha256=gr.sha.sha256;gr.sha224=gr.sha.sha224;gr.sha384=gr.sha.sha384;gr.sha512=gr.sha.sha512;gr.ripemd160=gr.ripemd.ripemd160});var c7=P((Bit,l7)=>{M();l7.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var pu=P(p7=>{"use strict";M();var Rv=p7,ff=vu(),qv=wv(),CK=zr(),d7=CK.assert;function v7(e){e.type==="short"?this.curve=new qv.short(e):e.type==="edwards"?this.curve=new qv.edwards(e):this.curve=new qv.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,d7(this.g.validate(),"Invalid curve"),d7(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}Rv.PresetCurve=v7;function af(e,t){Object.defineProperty(Rv,e,{configurable:!0,enumerable:!0,get:function(){var r=new v7(t);return Object.defineProperty(Rv,e,{configurable:!0,enumerable:!0,value:r}),r}})}af("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:ff.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});af("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:ff.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});af("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:ff.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});af("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:ff.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});af("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:ff.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});af("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ff.sha256,gRed:!1,g:["9"]});af("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ff.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var Tv;try{Tv=c7()}catch{Tv=void 0}af("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:ff.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",Tv]})});var b7=P((Tit,m7)=>{"use strict";M();var qK=vu(),Gf=yv(),g7=jr();function of(e){if(!(this instanceof of))return new of(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=Gf.toArray(e.entropy,e.entropyEnc||"hex"),r=Gf.toArray(e.nonce,e.nonceEnc||"hex"),a=Gf.toArray(e.pers,e.persEnc||"hex");g7(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,a)}m7.exports=of;of.prototype._init=function(t,r,a){var n=t.concat(r).concat(a);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var d=0;d=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(a||[])),this._reseed=1};of.prototype.generate=function(t,r,a,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=a,a=r,r=null),a&&(a=Gf.toArray(a,n||"hex"),this._update(a));for(var d=[];d.length{"use strict";M();var RK=Yi(),TK=zr(),Ov=TK.assert;function Ir(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}y7.exports=Ir;Ir.fromPublic=function(t,r,a){return r instanceof Ir?r:new Ir(t,{pub:r,pubEnc:a})};Ir.fromPrivate=function(t,r,a){return r instanceof Ir?r:new Ir(t,{priv:r,privEnc:a})};Ir.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};Ir.prototype.getPublic=function(t,r){return typeof t=="string"&&(r=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,t):this.pub};Ir.prototype.getPrivate=function(t){return t==="hex"?this.priv.toString(16,2):this.priv};Ir.prototype._importPrivate=function(t,r){this.priv=new RK(t,r||16),this.priv=this.priv.umod(this.ec.curve.n)};Ir.prototype._importPublic=function(t,r){if(t.x||t.y){this.ec.curve.type==="mont"?Ov(t.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&Ov(t.x&&t.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(t.x,t.y);return}this.pub=this.ec.curve.decodePoint(t,r)};Ir.prototype.derive=function(t){return t.validate()||Ov(t.validate(),"public point not validated"),t.mul(this.priv).getX()};Ir.prototype.sign=function(t,r,a){return this.ec.sign(t,this,r,a)};Ir.prototype.verify=function(t,r){return this.ec.verify(t,r,this)};Ir.prototype.inspect=function(){return""}});var A7=P((Pit,M7)=>{"use strict";M();var gu=Yi(),Pv=zr(),OK=Pv.assert;function mu(e,t){if(e instanceof mu)return e;this._importDER(e,t)||(OK(e.r&&e.s,"Signature without r or s"),this.r=new gu(e.r,16),this.s=new gu(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}M7.exports=mu;function DK(){this.place=0}function Dv(e,t){var r=e[t.place++];if(!(r&128))return r;var a=r&15;if(a===0||a>4)return!1;for(var n=0,d=0,m=t.place;d>>=0;return n<=127?!1:(t.place=m,n)}function w7(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}mu.prototype.toDER=function(t){var r=this.r.toArray(),a=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),a[0]&128&&(a=[0].concat(a)),r=w7(r),a=w7(a);!a[0]&&!(a[1]&128);)a=a.slice(1);var n=[2];kv(n,r.length),n=n.concat(r),n.push(2),kv(n,a.length);var d=n.concat(a),m=[48];return kv(m,d.length),m=m.concat(d),Pv.encode(m,t)}});var S7=P((Lit,E7)=>{"use strict";M();var $f=Yi(),_7=b7(),kK=zr(),Uv=pu(),PK=tu(),I7=kK.assert,Lv=x7(),bu=A7();function ui(e){if(!(this instanceof ui))return new ui(e);typeof e=="string"&&(I7(Object.prototype.hasOwnProperty.call(Uv,e),"Unknown curve "+e),e=Uv[e]),e instanceof Uv.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}E7.exports=ui;ui.prototype.keyPair=function(t){return new Lv(this,t)};ui.prototype.keyFromPrivate=function(t,r){return Lv.fromPrivate(this,t,r)};ui.prototype.keyFromPublic=function(t,r){return Lv.fromPublic(this,t,r)};ui.prototype.genKeyPair=function(t){t||(t={});for(var r=new _7({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||PK(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),a=this.n.byteLength(),n=this.n.sub(new $f(2));;){var d=new $f(r.generate(a));if(!(d.cmp(n)>0))return d.iaddn(1),this.keyFromPrivate(d)}};ui.prototype._truncateToN=function(t,r){var a=t.byteLength()*8-this.n.bitLength();return a>0&&(t=t.ushrn(a)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t};ui.prototype.sign=function(t,r,a,n){typeof a=="object"&&(n=a,a=null),n||(n={}),r=this.keyFromPrivate(r,a),t=this._truncateToN(new $f(t,16));for(var d=this.n.byteLength(),m=r.getPrivate().toArray("be",d),b=t.toArray("be",d),A=new _7({hash:this.hash,entropy:m,nonce:b,pers:n.pers,persEnc:n.persEnc||"utf8"}),B=this.n.sub(new $f(1)),C=0;;C++){var D=n.k?n.k(C):new $f(A.generate(this.n.byteLength()));if(D=this._truncateToN(D,!0),!(D.cmpn(1)<=0||D.cmp(B)>=0)){var K=this.g.mul(D);if(!K.isInfinity()){var j=K.getX(),Z=j.umod(this.n);if(Z.cmpn(0)!==0){var qt=D.invm(this.n).mul(Z.mul(r.getPrivate()).iadd(t));if(qt=qt.umod(this.n),qt.cmpn(0)!==0){var Rt=(K.getY().isOdd()?1:0)|(j.cmp(Z)!==0?2:0);return n.canonical&&qt.cmp(this.nh)>0&&(qt=this.n.sub(qt),Rt^=1),new bu({r:Z,s:qt,recoveryParam:Rt})}}}}}};ui.prototype.verify=function(t,r,a,n){t=this._truncateToN(new $f(t,16)),a=this.keyFromPublic(a,n),r=new bu(r,"hex");var d=r.r,m=r.s;if(d.cmpn(1)<0||d.cmp(this.n)>=0||m.cmpn(1)<0||m.cmp(this.n)>=0)return!1;var b=m.invm(this.n),A=b.mul(t).umod(this.n),B=b.mul(d).umod(this.n),C;return this.curve._maxwellTrick?(C=this.g.jmulAdd(A,a.getPublic(),B),C.isInfinity()?!1:C.eqXToP(d)):(C=this.g.mulAdd(A,a.getPublic(),B),C.isInfinity()?!1:C.getX().umod(this.n).cmp(d)===0)};ui.prototype.recoverPubKey=function(e,t,r,a){I7((3&r)===r,"The recovery param is more than two bits"),t=new bu(t,a);var n=this.n,d=new $f(e),m=t.r,b=t.s,A=r&1,B=r>>1;if(m.cmp(this.curve.p.umod(this.curve.n))>=0&&B)throw new Error("Unable to find sencond key candinate");B?m=this.curve.pointFromX(m.add(this.curve.n),A):m=this.curve.pointFromX(m,A);var C=t.r.invm(n),D=n.sub(d).mul(C).umod(n),K=b.mul(C).umod(n);return this.g.mulAdd(D,m,K)};ui.prototype.getKeyRecoveryParam=function(e,t,r,a){if(t=new bu(t,a),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var d;try{d=this.recoverPubKey(e,t,n)}catch{continue}if(d.eq(r))return n}throw new Error("Unable to find valid recovery factor")}});var R7=P((Fit,q7)=>{"use strict";M();var Bs=zr(),C7=Bs.assert,B7=Bs.parseBytes,za=Bs.cachedProperty;function cr(e,t){this.eddsa=e,this._secret=B7(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=B7(t.pub)}cr.fromPublic=function(t,r){return r instanceof cr?r:new cr(t,{pub:r})};cr.fromSecret=function(t,r){return r instanceof cr?r:new cr(t,{secret:r})};cr.prototype.secret=function(){return this._secret};za(cr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});za(cr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});za(cr,"privBytes",function(){var t=this.eddsa,r=this.hash(),a=t.encodingLength-1,n=r.slice(0,t.encodingLength);return n[0]&=248,n[a]&=127,n[a]|=64,n});za(cr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});za(cr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});za(cr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});cr.prototype.sign=function(t){return C7(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)};cr.prototype.verify=function(t,r){return this.eddsa.verify(t,r,this)};cr.prototype.getSecret=function(t){return C7(this._secret,"KeyPair is public only"),Bs.encode(this.secret(),t)};cr.prototype.getPublic=function(t){return Bs.encode(this.pubBytes(),t)};q7.exports=cr});var O7=P((Qit,T7)=>{"use strict";M();var UK=Yi(),yu=zr(),LK=yu.assert,xu=yu.cachedProperty,NK=yu.parseBytes;function Zf(e,t){this.eddsa=e,typeof t!="object"&&(t=NK(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),LK(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof UK&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}xu(Zf,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});xu(Zf,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});xu(Zf,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});xu(Zf,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});Zf.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Zf.prototype.toHex=function(){return yu.encode(this.toBytes(),"hex").toUpperCase()};T7.exports=Zf});var L7=P((jit,U7)=>{"use strict";M();var FK=vu(),KK=pu(),Va=zr(),QK=Va.assert,k7=Va.parseBytes,P7=R7(),D7=O7();function Nr(e){if(QK(e==="ed25519","only tested with ed25519 so far"),!(this instanceof Nr))return new Nr(e);e=KK[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=FK.sha512}U7.exports=Nr;Nr.prototype.sign=function(t,r){t=k7(t);var a=this.keyFromSecret(r),n=this.hashInt(a.messagePrefix(),t),d=this.g.mul(n),m=this.encodePoint(d),b=this.hashInt(m,a.pubBytes(),t).mul(a.priv()),A=n.add(b).umod(this.curve.n);return this.makeSignature({R:d,S:A,Rencoded:m})};Nr.prototype.verify=function(t,r,a){t=k7(t),r=this.makeSignature(r);var n=this.keyFromPublic(a),d=this.hashInt(r.Rencoded(),n.pubBytes(),t),m=this.g.mul(r.S()),b=r.R().add(n.pub().mul(d));return b.eq(m)};Nr.prototype.hashInt=function(){for(var t=this.hash(),r=0;r{"use strict";M();var Wf=N7;Wf.version=gM().version;Wf.utils=zr();Wf.rand=tu();Wf.curve=wv();Wf.curves=pu();Wf.ec=S7();Wf.eddsa=L7()});var Fv=P((F7,Nv)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof Nv>"u"||Nv,F7)});var Mu=P(($it,K7)=>{"use strict";M();var wu=On(),Ya=wu.Buffer,li={},ci;for(ci in wu)!wu.hasOwnProperty(ci)||ci==="SlowBuffer"||ci==="Buffer"||(li[ci]=wu[ci]);var Ga=li.Buffer={};for(ci in Ya)!Ya.hasOwnProperty(ci)||ci==="allocUnsafe"||ci==="allocUnsafeSlow"||(Ga[ci]=Ya[ci]);li.Buffer.prototype=Ya.prototype;(!Ga.from||Ga.from===Uint8Array.from)&&(Ga.from=function(e,t,r){if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&typeof e.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return Ya(e,t,r)});Ga.alloc||(Ga.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var a=Ya(e);return!t||t.length===0?a.fill(0):typeof r=="string"?a.fill(t,r):a.fill(t),a});if(!li.kStringMaxLength)try{li.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}li.constants||(li.constants={MAX_LENGTH:li.kMaxLength},li.kStringMaxLength&&(li.constants.MAX_STRING_LENGTH=li.kStringMaxLength));K7.exports=li});var Au=P(Q7=>{"use strict";M();var HK=ge();function di(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}Q7.Reporter=di;di.prototype.isError=function(t){return t instanceof $a};di.prototype.save=function(){let t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}};di.prototype.restore=function(t){let r=this._reporterState;r.obj=t.obj,r.path=r.path.slice(0,t.pathLen)};di.prototype.enterKey=function(t){return this._reporterState.path.push(t)};di.prototype.exitKey=function(t){let r=this._reporterState;r.path=r.path.slice(0,t-1)};di.prototype.leaveKey=function(t,r,a){let n=this._reporterState;this.exitKey(t),n.obj!==null&&(n.obj[r]=a)};di.prototype.path=function(){return this._reporterState.path.join("/")};di.prototype.enterObject=function(){let t=this._reporterState,r=t.obj;return t.obj={},r};di.prototype.leaveObject=function(t){let r=this._reporterState,a=r.obj;return r.obj=t,a};di.prototype.error=function(t){let r,a=this._reporterState,n=t instanceof $a;if(n?r=t:r=new $a(a.path.map(function(d){return"["+JSON.stringify(d)+"]"}).join(""),t.message||t,t.stack),!a.options.partial)throw r;return n||a.errors.push(r),r};di.prototype.wrapResult=function(t){let r=this._reporterState;return r.options.partial?{result:this.isError(t)?null:t,errors:r.errors}:t};function $a(e,t){this.path=e,this.rethrow(t)}HK($a,Error);$a.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,$a),!this.stack)try{throw new Error(this.message)}catch(r){this.stack=r.stack}return this}});var Ja=P(Kv=>{"use strict";M();var jK=ge(),_u=Au().Reporter,Za=Mu().Buffer;function vi(e,t){if(_u.call(this,t),!Za.isBuffer(e)){this.error("Input not Buffer");return}this.base=e,this.offset=0,this.length=e.length}jK(vi,_u);Kv.DecoderBuffer=vi;vi.isDecoderBuffer=function(t){return t instanceof vi?!0:typeof t=="object"&&Za.isBuffer(t.base)&&t.constructor.name==="DecoderBuffer"&&typeof t.offset=="number"&&typeof t.length=="number"&&typeof t.save=="function"&&typeof t.restore=="function"&&typeof t.isEmpty=="function"&&typeof t.readUInt8=="function"&&typeof t.skip=="function"&&typeof t.raw=="function"};vi.prototype.save=function(){return{offset:this.offset,reporter:_u.prototype.save.call(this)}};vi.prototype.restore=function(t){let r=new vi(this.base);return r.offset=t.offset,r.length=this.offset,this.offset=t.offset,_u.prototype.restore.call(this,t.reporter),r};vi.prototype.isEmpty=function(){return this.offset===this.length};vi.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")};vi.prototype.skip=function(t,r){if(!(this.offset+t<=this.length))return this.error(r||"DecoderBuffer overrun");let a=new vi(this.base);return a._reporterState=this._reporterState,a.offset=this.offset,a.length=this.offset+t,this.offset+=t,a};vi.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)};function Wa(e,t){if(Array.isArray(e))this.length=0,this.value=e.map(function(r){return Wa.isEncoderBuffer(r)||(r=new Wa(r,t)),this.length+=r.length,r},this);else if(typeof e=="number"){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if(typeof e=="string")this.value=e,this.length=Za.byteLength(e);else if(Za.isBuffer(e))this.value=e,this.length=e.length;else return t.error("Unsupported type: "+typeof e)}Kv.EncoderBuffer=Wa;Wa.isEncoderBuffer=function(t){return t instanceof Wa?!0:typeof t=="object"&&t.constructor.name==="EncoderBuffer"&&typeof t.length=="number"&&typeof t.join=="function"};Wa.prototype.join=function(t,r){return t||(t=Za.alloc(this.length)),r||(r=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(a){a.join(t,r),r+=a.length}):(typeof this.value=="number"?t[r]=this.value:typeof this.value=="string"?t.write(this.value,r):Za.isBuffer(this.value)&&this.value.copy(t,r),r+=this.length)),t}});var Iu=P((ent,j7)=>{"use strict";M();var zK=Au().Reporter,VK=Ja().EncoderBuffer,YK=Ja().DecoderBuffer,qr=jr(),H7=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],GK=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(H7),$K=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function je(e,t,r){let a={};this._baseState=a,a.name=r,a.enc=e,a.parent=t||null,a.children=null,a.tag=null,a.args=null,a.reverseArgs=null,a.choice=null,a.optional=!1,a.any=!1,a.obj=!1,a.use=null,a.useDecoder=null,a.key=null,a.default=null,a.explicit=null,a.implicit=null,a.contains=null,a.parent||(a.children=[],this._wrap())}j7.exports=je;var ZK=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];je.prototype.clone=function(){let t=this._baseState,r={};ZK.forEach(function(n){r[n]=t[n]});let a=new this.constructor(r.parent);return a._baseState=r,a};je.prototype._wrap=function(){let t=this._baseState;GK.forEach(function(r){this[r]=function(){let n=new this.constructor(this);return t.children.push(n),n[r].apply(n,arguments)}},this)};je.prototype._init=function(t){let r=this._baseState;qr(r.parent===null),t.call(this),r.children=r.children.filter(function(a){return a._baseState.parent===this},this),qr.equal(r.children.length,1,"Root node can have only one child")};je.prototype._useArgs=function(t){let r=this._baseState,a=t.filter(function(n){return n instanceof this.constructor},this);t=t.filter(function(n){return!(n instanceof this.constructor)},this),a.length!==0&&(qr(r.children===null),r.children=a,a.forEach(function(n){n._baseState.parent=this},this)),t.length!==0&&(qr(r.args===null),r.args=t,r.reverseArgs=t.map(function(n){if(typeof n!="object"||n.constructor!==Object)return n;let d={};return Object.keys(n).forEach(function(m){m==(m|0)&&(m|=0);let b=n[m];d[b]=m}),d}))};$K.forEach(function(e){je.prototype[e]=function(){let r=this._baseState;throw new Error(e+" not implemented for encoding: "+r.enc)}});H7.forEach(function(e){je.prototype[e]=function(){let r=this._baseState,a=Array.prototype.slice.call(arguments);return qr(r.tag===null),r.tag=e,this._useArgs(a),this}});je.prototype.use=function(t){qr(t);let r=this._baseState;return qr(r.use===null),r.use=t,this};je.prototype.optional=function(){let t=this._baseState;return t.optional=!0,this};je.prototype.def=function(t){let r=this._baseState;return qr(r.default===null),r.default=t,r.optional=!0,this};je.prototype.explicit=function(t){let r=this._baseState;return qr(r.explicit===null&&r.implicit===null),r.explicit=t,this};je.prototype.implicit=function(t){let r=this._baseState;return qr(r.explicit===null&&r.implicit===null),r.implicit=t,this};je.prototype.obj=function(){let t=this._baseState,r=Array.prototype.slice.call(arguments);return t.obj=!0,r.length!==0&&this._useArgs(r),this};je.prototype.key=function(t){let r=this._baseState;return qr(r.key===null),r.key=t,this};je.prototype.any=function(){let t=this._baseState;return t.any=!0,this};je.prototype.choice=function(t){let r=this._baseState;return qr(r.choice===null),r.choice=t,this._useArgs(Object.keys(t).map(function(a){return t[a]})),this};je.prototype.contains=function(t){let r=this._baseState;return qr(r.use===null),r.contains=t,this};je.prototype._decode=function(t,r){let a=this._baseState;if(a.parent===null)return t.wrapResult(a.children[0]._decode(t,r));let n=a.default,d=!0,m=null;if(a.key!==null&&(m=t.enterKey(a.key)),a.optional){let A=null;if(a.explicit!==null?A=a.explicit:a.implicit!==null?A=a.implicit:a.tag!==null&&(A=a.tag),A===null&&!a.any){let B=t.save();try{a.choice===null?this._decodeGeneric(a.tag,t,r):this._decodeChoice(t,r),d=!0}catch{d=!1}t.restore(B)}else if(d=this._peekTag(t,A,a.any),t.isError(d))return d}let b;if(a.obj&&d&&(b=t.enterObject()),d){if(a.explicit!==null){let B=this._decodeTag(t,a.explicit);if(t.isError(B))return B;t=B}let A=t.offset;if(a.use===null&&a.choice===null){let B;a.any&&(B=t.save());let C=this._decodeTag(t,a.implicit!==null?a.implicit:a.tag,a.any);if(t.isError(C))return C;a.any?n=t.raw(B):t=C}if(r&&r.track&&a.tag!==null&&r.track(t.path(),A,t.length,"tagged"),r&&r.track&&a.tag!==null&&r.track(t.path(),t.offset,t.length,"content"),a.any||(a.choice===null?n=this._decodeGeneric(a.tag,t,r):n=this._decodeChoice(t,r)),t.isError(n))return n;if(!a.any&&a.choice===null&&a.children!==null&&a.children.forEach(function(C){C._decode(t,r)}),a.contains&&(a.tag==="octstr"||a.tag==="bitstr")){let B=new YK(n);n=this._getUse(a.contains,t._reporterState.obj)._decode(B,r)}}return a.obj&&d&&(n=t.leaveObject(b)),a.key!==null&&(n!==null||d===!0)?t.leaveKey(m,a.key,n):m!==null&&t.exitKey(m),n};je.prototype._decodeGeneric=function(t,r,a){let n=this._baseState;return t==="seq"||t==="set"?null:t==="seqof"||t==="setof"?this._decodeList(r,t,n.args[0],a):/str$/.test(t)?this._decodeStr(r,t,a):t==="objid"&&n.args?this._decodeObjid(r,n.args[0],n.args[1],a):t==="objid"?this._decodeObjid(r,null,null,a):t==="gentime"||t==="utctime"?this._decodeTime(r,t,a):t==="null_"?this._decodeNull(r,a):t==="bool"?this._decodeBool(r,a):t==="objDesc"?this._decodeStr(r,t,a):t==="int"||t==="enum"?this._decodeInt(r,n.args&&n.args[0],a):n.use!==null?this._getUse(n.use,r._reporterState.obj)._decode(r,a):r.error("unknown tag: "+t)};je.prototype._getUse=function(t,r){let a=this._baseState;return a.useDecoder=this._use(t,r),qr(a.useDecoder._baseState.parent===null),a.useDecoder=a.useDecoder._baseState.children[0],a.implicit!==a.useDecoder._baseState.implicit&&(a.useDecoder=a.useDecoder.clone(),a.useDecoder._baseState.implicit=a.implicit),a.useDecoder};je.prototype._decodeChoice=function(t,r){let a=this._baseState,n=null,d=!1;return Object.keys(a.choice).some(function(m){let b=t.save(),A=a.choice[m];try{let B=A._decode(t,r);if(t.isError(B))return!1;n={type:m,value:B},d=!0}catch{return t.restore(b),!1}return!0},this),d?n:t.error("Choice not matched")};je.prototype._createEncoderBuffer=function(t){return new VK(t,this.reporter)};je.prototype._encode=function(t,r,a){let n=this._baseState;if(n.default!==null&&n.default===t)return;let d=this._encodeValue(t,r,a);if(d!==void 0&&!this._skipDefault(d,r,a))return d};je.prototype._encodeValue=function(t,r,a){let n=this._baseState;if(n.parent===null)return n.children[0]._encode(t,r||new zK);let d=null;if(this.reporter=r,n.optional&&t===void 0)if(n.default!==null)t=n.default;else return;let m=null,b=!1;if(n.any)d=this._createEncoderBuffer(t);else if(n.choice)d=this._encodeChoice(t,r);else if(n.contains)m=this._getUse(n.contains,a)._encode(t,r),b=!0;else if(n.children)m=n.children.map(function(A){if(A._baseState.tag==="null_")return A._encode(null,r,t);if(A._baseState.key===null)return r.error("Child should have a key");let B=r.enterKey(A._baseState.key);if(typeof t!="object")return r.error("Child expected, but input is not object");let C=A._encode(t[A._baseState.key],r,t);return r.leaveKey(B),C},this).filter(function(A){return A}),m=this._createEncoderBuffer(m);else if(n.tag==="seqof"||n.tag==="setof"){if(!(n.args&&n.args.length===1))return r.error("Too many args for : "+n.tag);if(!Array.isArray(t))return r.error("seqof/setof, but data is not Array");let A=this.clone();A._baseState.implicit=null,m=this._createEncoderBuffer(t.map(function(B){let C=this._baseState;return this._getUse(C.args[0],t)._encode(B,r)},A))}else n.use!==null?d=this._getUse(n.use,a)._encode(t,r):(m=this._encodePrimitive(n.tag,t),b=!0);if(!n.any&&n.choice===null){let A=n.implicit!==null?n.implicit:n.tag,B=n.implicit===null?"universal":"context";A===null?n.use===null&&r.error("Tag could be omitted only for .use()"):n.use===null&&(d=this._encodeComposite(A,b,B,m))}return n.explicit!==null&&(d=this._encodeComposite(n.explicit,!1,"context",d)),d};je.prototype._encodeChoice=function(t,r){let a=this._baseState,n=a.choice[t.type];return n||qr(!1,t.type+" not found in "+JSON.stringify(Object.keys(a.choice))),n._encode(t.value,r)};je.prototype._encodePrimitive=function(t,r){let a=this._baseState;if(/str$/.test(t))return this._encodeStr(r,t);if(t==="objid"&&a.args)return this._encodeObjid(r,a.reverseArgs[0],a.args[1]);if(t==="objid")return this._encodeObjid(r,null,null);if(t==="gentime"||t==="utctime")return this._encodeTime(r,t);if(t==="null_")return this._encodeNull();if(t==="int"||t==="enum")return this._encodeInt(r,a.args&&a.reverseArgs[0]);if(t==="bool")return this._encodeBool(r);if(t==="objDesc")return this._encodeStr(r,t);throw new Error("Unsupported tag: "+t)};je.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)};je.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}});var Eu=P(Jf=>{"use strict";M();function z7(e){let t={};return Object.keys(e).forEach(function(r){(r|0)==r&&(r=r|0);let a=e[r];t[a]=r}),t}Jf.tagClass={0:"universal",1:"application",2:"context",3:"private"};Jf.tagClassByName=z7(Jf.tagClass);Jf.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};Jf.tagByName=z7(Jf.tag)});var Hv=P((fnt,G7)=>{"use strict";M();var WK=ge(),Bn=Mu().Buffer,V7=Iu(),Qv=Eu();function Y7(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new qi,this.tree._init(e.body)}G7.exports=Y7;Y7.prototype.encode=function(t,r){return this.tree._encode(t,r).join()};function qi(e){V7.call(this,"der",e)}WK(qi,V7);qi.prototype._encodeComposite=function(t,r,a,n){let d=JK(t,r,a,this.reporter);if(n.length<128){let A=Bn.alloc(2);return A[0]=d,A[1]=n.length,this._createEncoderBuffer([A,n])}let m=1;for(let A=n.length;A>=256;A>>=8)m++;let b=Bn.alloc(1+1+m);b[0]=d,b[1]=128|m;for(let A=1+m,B=n.length;B>0;A--,B>>=8)b[A]=B&255;return this._createEncoderBuffer([b,n])};qi.prototype._encodeStr=function(t,r){if(r==="bitstr")return this._createEncoderBuffer([t.unused|0,t.data]);if(r==="bmpstr"){let a=Bn.alloc(t.length*2);for(let n=0;n=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,t[0]*40+t[1])}let n=0;for(let b=0;b=128;A>>=7)n++}let d=Bn.alloc(n),m=d.length-1;for(let b=t.length-1;b>=0;b--){let A=t[b];for(d[m--]=A&127;(A>>=7)>0;)d[m--]=128|A&127}return this._createEncoderBuffer(d)};function pi(e){return e<10?"0"+e:e}qi.prototype._encodeTime=function(t,r){let a,n=new Date(t);return r==="gentime"?a=[pi(n.getUTCFullYear()),pi(n.getUTCMonth()+1),pi(n.getUTCDate()),pi(n.getUTCHours()),pi(n.getUTCMinutes()),pi(n.getUTCSeconds()),"Z"].join(""):r==="utctime"?a=[pi(n.getUTCFullYear()%100),pi(n.getUTCMonth()+1),pi(n.getUTCDate()),pi(n.getUTCHours()),pi(n.getUTCMinutes()),pi(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+r+" time is not supported yet"),this._encodeStr(a,"octstr")};qi.prototype._encodeNull=function(){return this._createEncoderBuffer("")};qi.prototype._encodeInt=function(t,r){if(typeof t=="string"){if(!r)return this.reporter.error("String int or enum given, but no values map");if(!r.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=r[t]}if(typeof t!="number"&&!Bn.isBuffer(t)){let d=t.toArray();!t.sign&&d[0]&128&&d.unshift(0),t=Bn.from(d)}if(Bn.isBuffer(t)){let d=t.length;t.length===0&&d++;let m=Bn.alloc(d);return t.copy(m),t.length===0&&(m[0]=0),this._createEncoderBuffer(m)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let a=1;for(let d=t;d>=256;d>>=8)a++;let n=new Array(a);for(let d=n.length-1;d>=0;d--)n[d]=t&255,t>>=8;return n[0]&128&&n.unshift(0),this._createEncoderBuffer(Bn.from(n))};qi.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)};qi.prototype._use=function(t,r){return typeof t=="function"&&(t=t(r)),t._getEncoder("der").tree};qi.prototype._skipDefault=function(t,r,a){let n=this._baseState,d;if(n.default===null)return!1;let m=t.join();if(n.defaultBuffer===void 0&&(n.defaultBuffer=this._encodeValue(n.default,r,a).join()),m.length!==n.defaultBuffer.length)return!1;for(d=0;d=31?a.error("Multi-octet tag encoding unsupported"):(t||(n|=32),n|=Qv.tagClassByName[r||"universal"]<<6,n)}});var Z7=P((ont,$7)=>{"use strict";M();var XK=ge(),jv=Hv();function zv(e){jv.call(this,e),this.enc="pem"}XK(zv,jv);$7.exports=zv;zv.prototype.encode=function(t,r){let n=jv.prototype.encode.call(this,t).toString("base64"),d=["-----BEGIN "+r.label+"-----"];for(let m=0;m{"use strict";M();var W7=J7;W7.der=Hv();W7.pem=Z7()});var Gv=P((lnt,nA)=>{"use strict";M();var tQ=ge(),eQ=Fv(),X7=Ja().DecoderBuffer,eA=Iu(),tA=Eu();function rA(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new Vr,this.tree._init(e.body)}nA.exports=rA;rA.prototype.decode=function(t,r){return X7.isDecoderBuffer(t)||(t=new X7(t,r)),this.tree._decode(t,r)};function Vr(e){eA.call(this,"der",e)}tQ(Vr,eA);Vr.prototype._peekTag=function(t,r,a){if(t.isEmpty())return!1;let n=t.save(),d=Yv(t,'Failed to peek tag: "'+r+'"');return t.isError(d)?d:(t.restore(n),d.tag===r||d.tagStr===r||d.tagStr+"of"===r||a)};Vr.prototype._decodeTag=function(t,r,a){let n=Yv(t,'Failed to decode tag of "'+r+'"');if(t.isError(n))return n;let d=iA(t,n.primitive,'Failed to get length of "'+r+'"');if(t.isError(d))return d;if(!a&&n.tag!==r&&n.tagStr!==r&&n.tagStr+"of"!==r)return t.error('Failed to match tag: "'+r+'"');if(n.primitive||d!==null)return t.skip(d,'Failed to match body of: "'+r+'"');let m=t.save(),b=this._skipUntilEnd(t,'Failed to skip indefinite length body: "'+this.tag+'"');return t.isError(b)?b:(d=t.offset-m.offset,t.restore(m),t.skip(d,'Failed to match body of: "'+r+'"'))};Vr.prototype._skipUntilEnd=function(t,r){for(;;){let a=Yv(t,r);if(t.isError(a))return a;let n=iA(t,a.primitive,r);if(t.isError(n))return n;let d;if(a.primitive||n!==null?d=t.skip(n):d=this._skipUntilEnd(t,r),t.isError(d))return d;if(a.tagStr==="end")break}};Vr.prototype._decodeList=function(t,r,a,n){let d=[];for(;!t.isEmpty();){let m=this._peekTag(t,"end");if(t.isError(m))return m;let b=a.decode(t,"der",n);if(t.isError(b)&&m)break;d.push(b)}return d};Vr.prototype._decodeStr=function(t,r){if(r==="bitstr"){let a=t.readUInt8();return t.isError(a)?a:{unused:a,data:t.raw()}}else if(r==="bmpstr"){let a=t.raw();if(a.length%2===1)return t.error("Decoding of string type: bmpstr length mismatch");let n="";for(let d=0;d>6],n=(r&32)===0;if((r&31)===31){let m=r;for(r=0;(m&128)===128;){if(m=e.readUInt8(t),e.isError(m))return m;r<<=7,r|=m&127}}else r&=31;let d=tA.tag[r];return{cls:a,primitive:n,tag:r,tagStr:d}}function iA(e,t,r){let a=e.readUInt8(r);if(e.isError(a))return a;if(!t&&a===128)return null;if((a&128)===0)return a;let n=a&127;if(n>4)return e.error("length octect is too long");a=0;for(let d=0;d{"use strict";M();var rQ=ge(),iQ=Mu().Buffer,$v=Gv();function Zv(e){$v.call(this,e),this.enc="pem"}rQ(Zv,$v);fA.exports=Zv;Zv.prototype.decode=function(t,r){let a=t.toString().split(/[\r\n]+/g),n=r.label.toUpperCase(),d=/^-----(BEGIN|END) ([^-]+)-----$/,m=-1,b=-1;for(let C=0;C{"use strict";M();var oA=sA;oA.der=Gv();oA.pem=aA()});var uA=P(hA=>{"use strict";M();var nQ=Vv(),fQ=Wv(),aQ=ge(),oQ=hA;oQ.define=function(t,r){return new Xa(t,r)};function Xa(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}Xa.prototype._createNamed=function(t){let r=this.name;function a(n){this._initNamed(n,r)}return aQ(a,t),a.prototype._initNamed=function(d,m){t.call(this,d,m)},new a(this)};Xa.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(fQ[t])),this.decoders[t]};Xa.prototype.decode=function(t,r,a){return this._getDecoder(r).decode(t,a)};Xa.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(nQ[t])),this.encoders[t]};Xa.prototype.encode=function(t,r,a){return this._getEncoder(r).encode(t,a)}});var cA=P(lA=>{"use strict";M();var Su=lA;Su.Reporter=Au().Reporter;Su.DecoderBuffer=Ja().DecoderBuffer;Su.EncoderBuffer=Ja().EncoderBuffer;Su.Node=Iu()});var pA=P(vA=>{"use strict";M();var dA=vA;dA._reverse=function(t){let r={};return Object.keys(t).forEach(function(a){(a|0)==a&&(a=a|0);let n=t[a];r[n]=a}),r};dA.der=Eu()});var Jv=P(gA=>{"use strict";M();var to=gA;to.bignum=Fv();to.define=uA().define;to.base=cA();to.constants=pA();to.decoders=Wv();to.encoders=Vv()});var xA=P((Int,yA)=>{"use strict";M();var Ri=Jv(),mA=Ri.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),sQ=Ri.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),Xv=Ri.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),hQ=Ri.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(Xv),this.key("subjectPublicKey").bitstr())}),uQ=Ri.define("RelativeDistinguishedName",function(){this.setof(sQ)}),lQ=Ri.define("RDNSequence",function(){this.seqof(uQ)}),bA=Ri.define("Name",function(){this.choice({rdnSequence:this.use(lQ)})}),cQ=Ri.define("Validity",function(){this.seq().obj(this.key("notBefore").use(mA),this.key("notAfter").use(mA))}),dQ=Ri.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),vQ=Ri.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(Xv),this.key("issuer").use(bA),this.key("validity").use(cQ),this.key("subject").use(bA),this.key("subjectPublicKeyInfo").use(hQ),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(dQ).optional())}),pQ=Ri.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(vQ),this.key("signatureAlgorithm").use(Xv),this.key("signatureValue").bitstr())});yA.exports=pQ});var MA=P(Oi=>{"use strict";M();var Ti=Jv();Oi.certificate=xA();var gQ=Ti.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});Oi.RSAPrivateKey=gQ;var mQ=Ti.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});Oi.RSAPublicKey=mQ;var bQ=Ti.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(wA),this.key("subjectPublicKey").bitstr())});Oi.PublicKey=bQ;var wA=Ti.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),yQ=Ti.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(wA),this.key("subjectPrivateKey").octstr())});Oi.PrivateKey=yQ;var xQ=Ti.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});Oi.EncryptedPrivateKey=xQ;var wQ=Ti.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});Oi.DSAPrivateKey=wQ;Oi.DSAparam=Ti.define("DSAparam",function(){this.int()});var MQ=Ti.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(AQ),this.key("publicKey").optional().explicit(1).bitstr())});Oi.ECPrivateKey=MQ;var AQ=Ti.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});Oi.signature=Ti.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})});var AA=P((Cnt,_Q)=>{_Q.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}});var IA=P((qnt,_A)=>{M();var IQ=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,EQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,SQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,BQ=ws(),CQ=Xh(),Bu=ve().Buffer;_A.exports=function(e,t){var r=e.toString(),a=r.match(IQ),n;if(a){var m="aes"+a[1],b=Bu.from(a[2],"hex"),A=Bu.from(a[3].replace(/[\r\n]/g,""),"base64"),B=BQ(t,b.slice(0,8),parseInt(a[1],10)).key,C=[],D=CQ.createDecipheriv(m,B,b);C.push(D.update(A)),C.push(D.final()),n=Bu.concat(C)}else{var d=r.match(SQ);n=Bu.from(d[2].replace(/[\r\n]/g,""),"base64")}var K=r.match(EQ)[1];return{tag:K,data:n}}});var qs=P((Tnt,SA)=>{M();var Fr=MA(),qQ=AA(),RQ=IA(),TQ=Xh(),OQ=U1(),tp=ve().Buffer;SA.exports=EA;function EA(e){var t;typeof e=="object"&&!tp.isBuffer(e)&&(t=e.passphrase,e=e.key),typeof e=="string"&&(e=tp.from(e));var r=RQ(e,t),a=r.tag,n=r.data,d,m;switch(a){case"CERTIFICATE":m=Fr.certificate.decode(n,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(m||(m=Fr.PublicKey.decode(n,"der")),d=m.algorithm.algorithm.join("."),d){case"1.2.840.113549.1.1.1":return Fr.RSAPublicKey.decode(m.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return m.subjectPrivateKey=m.subjectPublicKey,{type:"ec",data:m};case"1.2.840.10040.4.1":return m.algorithm.params.pub_key=Fr.DSAparam.decode(m.subjectPublicKey.data,"der"),{type:"dsa",data:m.algorithm.params};default:throw new Error("unknown key id "+d)}case"ENCRYPTED PRIVATE KEY":n=Fr.EncryptedPrivateKey.decode(n,"der"),n=DQ(n,t);case"PRIVATE KEY":switch(m=Fr.PrivateKey.decode(n,"der"),d=m.algorithm.algorithm.join("."),d){case"1.2.840.113549.1.1.1":return Fr.RSAPrivateKey.decode(m.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:m.algorithm.curve,privateKey:Fr.ECPrivateKey.decode(m.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return m.algorithm.params.priv_key=Fr.DSAparam.decode(m.subjectPrivateKey,"der"),{type:"dsa",params:m.algorithm.params};default:throw new Error("unknown key id "+d)}case"RSA PUBLIC KEY":return Fr.RSAPublicKey.decode(n,"der");case"RSA PRIVATE KEY":return Fr.RSAPrivateKey.decode(n,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:Fr.DSAPrivateKey.decode(n,"der")};case"EC PRIVATE KEY":return n=Fr.ECPrivateKey.decode(n,"der"),{curve:n.parameters.value,privateKey:n.privateKey};default:throw new Error("unknown key type "+a)}}EA.signature=Fr.signature;function DQ(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,a=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),n=qQ[e.algorithm.decrypt.cipher.algo.join(".")],d=e.algorithm.decrypt.cipher.iv,m=e.subjectPrivateKey,b=parseInt(n.split("-")[1],10)/8,A=OQ.pbkdf2Sync(t,r,a,b,"sha1"),B=TQ.createDecipheriv(n,A,d),C=[];return C.push(B.update(m)),C.push(B.final()),tp.concat(C)}});var ep=P((Dnt,kQ)=>{kQ.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}});var qA=P((knt,qu)=>{M();var Er=ve().Buffer,Xf=S1(),PQ=nu(),UQ=Cs().ec,Cu=iu(),LQ=qs(),NQ=ep();function FQ(e,t,r,a,n){var d=LQ(t);if(d.curve){if(a!=="ecdsa"&&a!=="ecdsa/rsa")throw new Error("wrong private key type");return KQ(e,d)}else if(d.type==="dsa"){if(a!=="dsa")throw new Error("wrong private key type");return QQ(e,d,r)}else if(a!=="rsa"&&a!=="ecdsa/rsa")throw new Error("wrong private key type");e=Er.concat([n,e]);for(var m=d.modulus.byteLength(),b=[0,1];e.length+b.length+10&&r.ishrn(a),r}function jQ(e,t){e=rp(e,t),e=e.mod(t);var r=Er.from(e.toArray());if(r.length{M();var ip=ve().Buffer,Rs=iu(),VQ=Cs().ec,TA=qs(),YQ=ep();function GQ(e,t,r,a,n){var d=TA(r);if(d.type==="ec"){if(a!=="ecdsa"&&a!=="ecdsa/rsa")throw new Error("wrong public key type");return $Q(e,t,d)}else if(d.type==="dsa"){if(a!=="dsa")throw new Error("wrong public key type");return ZQ(e,t,d)}else if(a!=="rsa"&&a!=="ecdsa/rsa")throw new Error("wrong public key type");t=ip.concat([n,t]);for(var m=d.modulus.byteLength(),b=[1],A=0;t.length+b.length+2=t)throw new Error("invalid sig")}OA.exports=GQ});var FA=P((Nnt,NA)=>{M();var Ru=ve().Buffer,UA=Ba(),Tu=b1(),LA=ge(),WQ=qA(),JQ=DA(),ta=B1();Object.keys(ta).forEach(function(e){ta[e].id=Ru.from(ta[e].id,"hex"),ta[e.toLowerCase()]=ta[e]});function Ts(e){Tu.Writable.call(this);var t=ta[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=UA(t.hash),this._tag=t.id,this._signType=t.sign}LA(Ts,Tu.Writable);Ts.prototype._write=function(t,r,a){this._hash.update(t),a()};Ts.prototype.update=function(t,r){return typeof t=="string"&&(t=Ru.from(t,r)),this._hash.update(t),this};Ts.prototype.sign=function(t,r){this.end();var a=this._hash.digest(),n=WQ(a,t,this._hashType,this._signType,this._tag);return r?n.toString(r):n};function Os(e){Tu.Writable.call(this);var t=ta[e];if(!t)throw new Error("Unknown message digest");this._hash=UA(t.hash),this._tag=t.id,this._signType=t.sign}LA(Os,Tu.Writable);Os.prototype._write=function(t,r,a){this._hash.update(t),a()};Os.prototype.update=function(t,r){return typeof t=="string"&&(t=Ru.from(t,r)),this._hash.update(t),this};Os.prototype.verify=function(t,r,a){typeof r=="string"&&(r=Ru.from(r,a)),this.end();var n=this._hash.digest();return JQ(r,n,t,this._signType,this._tag)};function kA(e){return new Ts(e)}function PA(e){return new Os(e)}NA.exports={Sign:kA,Verify:PA,createSign:kA,createVerify:PA}});var QA=P((KA,np)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof np>"u"||np,KA)});var jA=P((Qnt,HA)=>{M();var XQ=Cs(),tH=QA();HA.exports=function(t){return new ea(t)};var Yr={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};Yr.p224=Yr.secp224r1;Yr.p256=Yr.secp256r1=Yr.prime256v1;Yr.p192=Yr.secp192r1=Yr.prime192v1;Yr.p384=Yr.secp384r1;Yr.p521=Yr.secp521r1;function ea(e){this.curveType=Yr[e],this.curveType||(this.curveType={name:e}),this.curve=new XQ.ec(this.curveType.name),this.keys=void 0}ea.prototype.generateKeys=function(e,t){return this.keys=this.curve.genKeyPair(),this.getPublicKey(e,t)};ea.prototype.computeSecret=function(e,t,r){t=t||"utf8",U.isBuffer(e)||(e=new U(e,t));var a=this.curve.keyFromPublic(e).getPublic(),n=a.mul(this.keys.getPrivate()).getX();return fp(n,r,this.curveType.byteLength)};ea.prototype.getPublicKey=function(e,t){var r=this.keys.getPublic(t==="compressed",!0);return t==="hybrid"&&(r[r.length-1]%2?r[0]=7:r[0]=6),fp(r,e)};ea.prototype.getPrivateKey=function(e){return fp(this.keys.getPrivate(),e)};ea.prototype.setPublicKey=function(e,t){return t=t||"utf8",U.isBuffer(e)||(e=new U(e,t)),this.keys._importPublic(e),this};ea.prototype.setPrivateKey=function(e,t){t=t||"utf8",U.isBuffer(e)||(e=new U(e,t));var r=new tH(e);return r=r.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(r),this};function fp(e,t,r){Array.isArray(e)||(e=e.toArray());var a=new U(e);if(r&&a.length{M();var eH=Ba(),ap=ve().Buffer;zA.exports=function(e,t){for(var r=ap.alloc(0),a=0,n;r.length{M();VA.exports=function(t,r){for(var a=t.length,n=-1;++n{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof hp>"u"||hp,YA)});var up=P(($nt,$A)=>{M();var GA=Ou(),iH=ve().Buffer;function nH(e,t){return iH.from(e.toRed(GA.mont(t.modulus)).redPow(new GA(t.publicExponent)).fromRed().toArray())}$A.exports=nH});var XA=P((Wnt,JA)=>{M();var fH=qs(),lp=qf(),aH=Ba(),ZA=op(),WA=sp(),cp=Ou(),oH=up(),sH=nu(),Di=ve().Buffer;JA.exports=function(t,r,a){var n;t.padding?n=t.padding:a?n=1:n=4;var d=fH(t),m;if(n===4)m=hH(d,r);else if(n===1)m=uH(d,r,a);else if(n===3){if(m=new cp(r),m.cmp(d.modulus)>=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return a?sH(m,d):oH(m,d)};function hH(e,t){var r=e.modulus.byteLength(),a=t.length,n=aH("sha1").update(Di.alloc(0)).digest(),d=n.length,m=2*d;if(a>r-m-2)throw new Error("message too long");var b=Di.alloc(r-a-m-2),A=r-d-1,B=lp(d),C=WA(Di.concat([n,b,Di.alloc(1,1),t],A),ZA(B,A)),D=WA(B,ZA(C,d));return new cp(Di.concat([Di.alloc(1),D,C],r))}function uH(e,t,r){var a=t.length,n=e.modulus.byteLength();if(a>n-11)throw new Error("message too long");var d;return r?d=Di.alloc(n-a-3,255):d=lH(n-a-3),new cp(Di.concat([Di.from([0,r?1:2]),d,Di.alloc(1),t],n))}function lH(e){for(var t=Di.allocUnsafe(e),r=0,a=lp(e*2),n=0,d;r{M();var cH=qs(),t9=op(),e9=sp(),r9=Ou(),dH=nu(),vH=Ba(),pH=up(),Ds=ve().Buffer;i9.exports=function(t,r,a){var n;t.padding?n=t.padding:a?n=1:n=4;var d=cH(t),m=d.modulus.byteLength();if(r.length>m||new r9(r).cmp(d.modulus)>=0)throw new Error("decryption error");var b;a?b=pH(new r9(r),d):b=dH(r,d);var A=Ds.alloc(m-b.length);if(b=Ds.concat([A,b],m),n===4)return gH(d,b);if(n===1)return mH(d,b,a);if(n===3)return b;throw new Error("unknown padding")};function gH(e,t){var r=e.modulus.byteLength(),a=vH("sha1").update(Ds.alloc(0)).digest(),n=a.length;if(t[0]!==0)throw new Error("decryption error");var d=t.slice(1,n+1),m=t.slice(n+1),b=e9(d,t9(m,n)),A=e9(m,t9(b,r-n-1));if(bH(a,A.slice(0,n)))throw new Error("decryption error");for(var B=n;A[B]===0;)B++;if(A[B++]!==1)throw new Error("decryption error");return A.slice(B)}function mH(e,t,r){for(var a=t.slice(0,2),n=2,d=0;t[n++]!==0;)if(n>=t.length){d++;break}var m=t.slice(2,n-1);if((a.toString("hex")!=="0002"&&!r||a.toString("hex")!=="0001"&&r)&&d++,m.length<8&&d++,d)throw new Error("decryption error");return t.slice(n)}function bH(e,t){e=Ds.from(e),t=Ds.from(t);var r=0,a=e.length;e.length!==t.length&&(r++,a=Math.min(e.length,t.length));for(var n=-1;++n{M();ra.publicEncrypt=XA();ra.privateDecrypt=n9();ra.privateEncrypt=function(t,r){return ra.publicEncrypt(t,r,!0)};ra.publicDecrypt=function(t,r){return ra.privateDecrypt(t,r,!0)}});var p9=P(ks=>{"use strict";M();function a9(){throw new Error(`secure random number generation not supported by this browser +use chrome, FireFox or Internet Explorer 11`)}var s9=ve(),o9=qf(),h9=s9.Buffer,u9=s9.kMaxLength,dp=global.crypto||global.msCrypto,l9=Math.pow(2,32)-1;function c9(e,t){if(typeof e!="number"||e!==e)throw new TypeError("offset must be a number");if(e>l9||e<0)throw new TypeError("offset must be a uint32");if(e>u9||e>t)throw new RangeError("offset out of range")}function d9(e,t,r){if(typeof e!="number"||e!==e)throw new TypeError("size must be a number");if(e>l9||e<0)throw new TypeError("size must be a uint32");if(e+t>r||e>u9)throw new RangeError("buffer too small")}dp&&dp.getRandomValues||!process.browser?(ks.randomFill=yH,ks.randomFillSync=xH):(ks.randomFill=a9,ks.randomFillSync=a9);function yH(e,t,r,a){if(!h9.isBuffer(e)&&!(e instanceof global.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof t=="function")a=t,t=0,r=e.length;else if(typeof r=="function")a=r,r=e.length-t;else if(typeof a!="function")throw new TypeError('"cb" argument must be a function');return c9(t,e.length),d9(r,t,e.length),v9(e,t,r,a)}function v9(e,t,r,a){if(process.browser){var n=e.buffer,d=new Uint8Array(n,t,r);if(dp.getRandomValues(d),a){process.nextTick(function(){a(null,e)});return}return e}if(a){o9(r,function(b,A){if(b)return a(b);A.copy(e,t),a(null,e)});return}var m=o9(r);return m.copy(e,t),e}function xH(e,t,r){if(typeof t>"u"&&(t=0),!h9.isBuffer(e)&&!(e instanceof global.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return c9(t,e.length),r===void 0&&(r=e.length-t),d9(r,t,e.length),v9(e,t,r)}});var vp=P(me=>{"use strict";M();me.randomBytes=me.rng=me.pseudoRandomBytes=me.prng=qf();me.createHash=me.Hash=Ba();me.createHmac=me.Hmac=S1();var wH=Bw(),MH=Object.keys(wH),AH=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(MH);me.getHashes=function(){return AH};var g9=U1();me.pbkdf2=g9.pbkdf2;me.pbkdf2Sync=g9.pbkdf2Sync;var en=Z5();me.Cipher=en.Cipher;me.createCipher=en.createCipher;me.Cipheriv=en.Cipheriv;me.createCipheriv=en.createCipheriv;me.Decipher=en.Decipher;me.createDecipher=en.createDecipher;me.Decipheriv=en.Decipheriv;me.createDecipheriv=en.createDecipheriv;me.getCiphers=en.getCiphers;me.listCiphers=en.listCiphers;var Ps=lM();me.DiffieHellmanGroup=Ps.DiffieHellmanGroup;me.createDiffieHellmanGroup=Ps.createDiffieHellmanGroup;me.getDiffieHellman=Ps.getDiffieHellman;me.createDiffieHellman=Ps.createDiffieHellman;me.DiffieHellman=Ps.DiffieHellman;var Du=FA();me.createSign=Du.createSign;me.Sign=Du.Sign;me.createVerify=Du.createVerify;me.Verify=Du.Verify;me.createECDH=jA();var ku=f9();me.publicEncrypt=ku.publicEncrypt;me.privateEncrypt=ku.privateEncrypt;me.publicDecrypt=ku.publicDecrypt;me.privateDecrypt=ku.privateDecrypt;var m9=p9();me.randomFill=m9.randomFill;me.randomFillSync=m9.randomFillSync;me.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join(` +`))};me.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}});var b9=P((oft,Pu)=>{M();(function(){"use strict";var e="input is invalid type",t="finalize already called",r=typeof window=="object",a=r?window:{};a.JS_SHA3_NO_WINDOW&&(r=!1);var n=!r&&typeof self=="object",d=!a.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?a=global:n&&(a=self);var m=!a.JS_SHA3_NO_COMMON_JS&&typeof Pu=="object"&&Pu.exports,b=typeof define=="function"&&define.amd,A=!a.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",B="0123456789abcdef".split(""),C=[31,7936,2031616,520093696],D=[4,1024,262144,67108864],K=[1,256,65536,16777216],j=[6,1536,393216,100663296],Z=[0,8,16,24],qt=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],Rt=[224,256,384,512],J=[128,256],Ot=["hex","buffer","arrayBuffer","array","digest"],ht={128:168,256:136};(a.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(E){return Object.prototype.toString.call(E)==="[object Array]"}),A&&(a.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(E){return typeof E=="object"&&E.buffer&&E.buffer.constructor===ArrayBuffer});for(var Lt=function(E,L,$){return function(F){return new w(E,L,E).update(F)[$]()}},ee=function(E,L,$){return function(F,Q){return new w(E,L,Q).update(F)[$]()}},$t=function(E,L,$){return function(F,Q,Ft,Y){return s["cshake"+E].update(F,Q,Ft,Y)[$]()}},Gt=function(E,L,$){return function(F,Q,Ft,Y){return s["kmac"+E].update(F,Q,Ft,Y)[$]()}},tt=function(E,L,$,F){for(var Q=0;Q>5,this.byteCount=this.blockCount<<2,this.outputBlocks=$>>5,this.extraBytes=($&31)>>3;for(var F=0;F<50;++F)this.s[F]=0}w.prototype.update=function(E){if(this.finalized)throw new Error(t);var L,$=typeof E;if($!=="string"){if($==="object"){if(E===null)throw new Error(e);if(A&&E.constructor===ArrayBuffer)E=new Uint8Array(E);else if(!Array.isArray(E)&&(!A||!ArrayBuffer.isView(E)))throw new Error(e)}else throw new Error(e);L=!0}for(var F=this.blocks,Q=this.byteCount,Ft=E.length,Y=this.blockCount,G=0,se=this.s,W,X;G>2]|=E[G]<>2]|=X<>2]|=(192|X>>6)<>2]|=(128|X&63)<=57344?(F[W>>2]|=(224|X>>12)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<>2]|=(240|X>>18)<>2]|=(128|X>>12&63)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<=Q){for(this.start=W-Q,this.block=F[Y],W=0;W>8,$=E&255;$>0;)Q.unshift($),E=E>>8,$=E&255,++F;return L?Q.push(F):Q.unshift(F),this.update(Q),Q.length},w.prototype.encodeString=function(E){var L,$=typeof E;if($!=="string"){if($==="object"){if(E===null)throw new Error(e);if(A&&E.constructor===ArrayBuffer)E=new Uint8Array(E);else if(!Array.isArray(E)&&(!A||!ArrayBuffer.isView(E)))throw new Error(e)}else throw new Error(e);L=!0}var F=0,Q=E.length;if(L)F=Q;else for(var Ft=0;Ft=57344?F+=3:(Y=65536+((Y&1023)<<10|E.charCodeAt(++Ft)&1023),F+=4)}return F+=this.encode(F*8),this.update(E),F},w.prototype.bytepad=function(E,L){for(var $=this.encode(L),F=0;F>2]|=this.padding[L&3],this.lastByteIndex===this.byteCount)for(E[0]=E[$],L=1;L<$+1;++L)E[L]=0;for(E[$-1]|=2147483648,L=0;L<$;++L)F[L]^=E[L];k(F)}},w.prototype.toString=w.prototype.hex=function(){this.finalize();for(var E=this.blockCount,L=this.s,$=this.outputBlocks,F=this.extraBytes,Q=0,Ft=0,Y="",G;Ft<$;){for(Q=0;Q>4&15]+B[G&15]+B[G>>12&15]+B[G>>8&15]+B[G>>20&15]+B[G>>16&15]+B[G>>28&15]+B[G>>24&15];Ft%E===0&&(k(L),Q=0)}return F&&(G=L[Q],Y+=B[G>>4&15]+B[G&15],F>1&&(Y+=B[G>>12&15]+B[G>>8&15]),F>2&&(Y+=B[G>>20&15]+B[G>>16&15])),Y},w.prototype.arrayBuffer=function(){this.finalize();var E=this.blockCount,L=this.s,$=this.outputBlocks,F=this.extraBytes,Q=0,Ft=0,Y=this.outputBits>>3,G;F?G=new ArrayBuffer($+1<<2):G=new ArrayBuffer(Y);for(var se=new Uint32Array(G);Ft<$;){for(Q=0;Q>8&255,Y[G+2]=se>>16&255,Y[G+3]=se>>24&255;Ft%E===0&&k(L)}return F&&(G=Ft<<2,se=L[Q],Y[G]=se&255,F>1&&(Y[G+1]=se>>8&255),F>2&&(Y[G+2]=se>>16&255)),Y};function S(E,L,$){w.call(this,E,L,$)}S.prototype=new w,S.prototype.finalize=function(){return this.encode(this.outputBits,!0),w.prototype.finalize.call(this)};var k=function(E){var L,$,F,Q,Ft,Y,G,se,W,X,Ne,At,at,Te,_t,gt,De,dt,mt,Oe,bt,yt,Fe,St,xt,ke,vt,ut,Ce,lt,pt,Re,ct,wt,Ke,Bt,Ct,Me,ot,st,Pe,Mt,It,ze,ft,Et,T,R,q,_,O,N,et,H,z,zt,Dt,Jt,Qt,Xt,te,ie,re;for(F=0;F<48;F+=2)Q=E[0]^E[10]^E[20]^E[30]^E[40],Ft=E[1]^E[11]^E[21]^E[31]^E[41],Y=E[2]^E[12]^E[22]^E[32]^E[42],G=E[3]^E[13]^E[23]^E[33]^E[43],se=E[4]^E[14]^E[24]^E[34]^E[44],W=E[5]^E[15]^E[25]^E[35]^E[45],X=E[6]^E[16]^E[26]^E[36]^E[46],Ne=E[7]^E[17]^E[27]^E[37]^E[47],At=E[8]^E[18]^E[28]^E[38]^E[48],at=E[9]^E[19]^E[29]^E[39]^E[49],L=At^(Y<<1|G>>>31),$=at^(G<<1|Y>>>31),E[0]^=L,E[1]^=$,E[10]^=L,E[11]^=$,E[20]^=L,E[21]^=$,E[30]^=L,E[31]^=$,E[40]^=L,E[41]^=$,L=Q^(se<<1|W>>>31),$=Ft^(W<<1|se>>>31),E[2]^=L,E[3]^=$,E[12]^=L,E[13]^=$,E[22]^=L,E[23]^=$,E[32]^=L,E[33]^=$,E[42]^=L,E[43]^=$,L=Y^(X<<1|Ne>>>31),$=G^(Ne<<1|X>>>31),E[4]^=L,E[5]^=$,E[14]^=L,E[15]^=$,E[24]^=L,E[25]^=$,E[34]^=L,E[35]^=$,E[44]^=L,E[45]^=$,L=se^(At<<1|at>>>31),$=W^(at<<1|At>>>31),E[6]^=L,E[7]^=$,E[16]^=L,E[17]^=$,E[26]^=L,E[27]^=$,E[36]^=L,E[37]^=$,E[46]^=L,E[47]^=$,L=X^(Q<<1|Ft>>>31),$=Ne^(Ft<<1|Q>>>31),E[8]^=L,E[9]^=$,E[18]^=L,E[19]^=$,E[28]^=L,E[29]^=$,E[38]^=L,E[39]^=$,E[48]^=L,E[49]^=$,Te=E[0],_t=E[1],Et=E[11]<<4|E[10]>>>28,T=E[10]<<4|E[11]>>>28,ut=E[20]<<3|E[21]>>>29,Ce=E[21]<<3|E[20]>>>29,Xt=E[31]<<9|E[30]>>>23,te=E[30]<<9|E[31]>>>23,Mt=E[40]<<18|E[41]>>>14,It=E[41]<<18|E[40]>>>14,wt=E[2]<<1|E[3]>>>31,Ke=E[3]<<1|E[2]>>>31,gt=E[13]<<12|E[12]>>>20,De=E[12]<<12|E[13]>>>20,R=E[22]<<10|E[23]>>>22,q=E[23]<<10|E[22]>>>22,lt=E[33]<<13|E[32]>>>19,pt=E[32]<<13|E[33]>>>19,ie=E[42]<<2|E[43]>>>30,re=E[43]<<2|E[42]>>>30,H=E[5]<<30|E[4]>>>2,z=E[4]<<30|E[5]>>>2,Bt=E[14]<<6|E[15]>>>26,Ct=E[15]<<6|E[14]>>>26,dt=E[25]<<11|E[24]>>>21,mt=E[24]<<11|E[25]>>>21,_=E[34]<<15|E[35]>>>17,O=E[35]<<15|E[34]>>>17,Re=E[45]<<29|E[44]>>>3,ct=E[44]<<29|E[45]>>>3,St=E[6]<<28|E[7]>>>4,xt=E[7]<<28|E[6]>>>4,zt=E[17]<<23|E[16]>>>9,Dt=E[16]<<23|E[17]>>>9,Me=E[26]<<25|E[27]>>>7,ot=E[27]<<25|E[26]>>>7,Oe=E[36]<<21|E[37]>>>11,bt=E[37]<<21|E[36]>>>11,N=E[47]<<24|E[46]>>>8,et=E[46]<<24|E[47]>>>8,ze=E[8]<<27|E[9]>>>5,ft=E[9]<<27|E[8]>>>5,ke=E[18]<<20|E[19]>>>12,vt=E[19]<<20|E[18]>>>12,Jt=E[29]<<7|E[28]>>>25,Qt=E[28]<<7|E[29]>>>25,st=E[38]<<8|E[39]>>>24,Pe=E[39]<<8|E[38]>>>24,yt=E[48]<<14|E[49]>>>18,Fe=E[49]<<14|E[48]>>>18,E[0]=Te^~gt&dt,E[1]=_t^~De&mt,E[10]=St^~ke&ut,E[11]=xt^~vt&Ce,E[20]=wt^~Bt&Me,E[21]=Ke^~Ct&ot,E[30]=ze^~Et&R,E[31]=ft^~T&q,E[40]=H^~zt&Jt,E[41]=z^~Dt&Qt,E[2]=gt^~dt&Oe,E[3]=De^~mt&bt,E[12]=ke^~ut<,E[13]=vt^~Ce&pt,E[22]=Bt^~Me&st,E[23]=Ct^~ot&Pe,E[32]=Et^~R&_,E[33]=T^~q&O,E[42]=zt^~Jt&Xt,E[43]=Dt^~Qt&te,E[4]=dt^~Oe&yt,E[5]=mt^~bt&Fe,E[14]=ut^~lt&Re,E[15]=Ce^~pt&ct,E[24]=Me^~st&Mt,E[25]=ot^~Pe&It,E[34]=R^~_&N,E[35]=q^~O&et,E[44]=Jt^~Xt&ie,E[45]=Qt^~te&re,E[6]=Oe^~yt&Te,E[7]=bt^~Fe&_t,E[16]=lt^~Re&St,E[17]=pt^~ct&xt,E[26]=st^~Mt&wt,E[27]=Pe^~It&Ke,E[36]=_^~N&ze,E[37]=O^~et&ft,E[46]=Xt^~ie&H,E[47]=te^~re&z,E[8]=yt^~Te>,E[9]=Fe^~_t&De,E[18]=Re^~St&ke,E[19]=ct^~xt&vt,E[28]=Mt^~wt&Bt,E[29]=It^~Ke&Ct,E[38]=N^~ze&Et,E[39]=et^~ft&T,E[48]=ie^~H&zt,E[49]=re^~z&Dt,E[0]^=qt[F],E[1]^=qt[F+1]};if(m)Pu.exports=s;else{for(p=0;p{M();x9.exports=y9;var Uu=class extends Error{};Uu.prototype.name="AssertionError";function y9(e,t){if(!e){var r=new Uu(t);throw Error.captureStackTrace&&Error.captureStackTrace(r,y9),r}}});var A9=P((lft,M9)=>{M();function w9(e){return e.length}function _H(e){let t=e.byteLength,r="";for(let a=0;a{M();var eo="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ia=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(t-1)===61&&t--,t*3>>>2}function EH(e){let t=e.byteLength,r="";for(let a=0;a>2]+eo[(e[a]&3)<<4|e[a+1]>>4]+eo[(e[a+1]&15)<<2|e[a+2]>>6]+eo[e[a+2]&63];return t%3===2?r=r.substring(0,r.length-1)+"=":t%3===1&&(r=r.substring(0,r.length-2)+"=="),r}function SH(e,t,r=0,a=_9(t)){let n=Math.min(a,e.byteLength-r);for(let d=0,m=0;d>4,e[m++]=(A&15)<<4|B>>2,e[m++]=(B&3)<<6|C&63}return n}I9.exports={byteLength:_9,toString:EH,write:SH}});var q9=P((pft,C9)=>{M();function B9(e){return e.length>>>1}function BH(e){let t=e.byteLength;e=new DataView(e.buffer,e.byteOffset,t);let r="",a=0;for(let n=t-t%4;a=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}});var T9=P((mft,R9)=>{M();function gp(e){let t=0;for(let r=0,a=e.length;r=55296&&n<=56319&&r+1=56320&&d<=57343){t+=4,r++;continue}}n<=127?t+=1:n<=2047?t+=2:t+=3}return t}var mp;if(typeof TextDecoder<"u"){let e=new TextDecoder;mp=function(r){return e.decode(r)}}else mp=function(t){let r=t.byteLength,a="",n=0;for(;n0){let A=0;for(;A>B,B-=6;B>=0;)t[b++]=128|A>>B&63,B-=6;m+=A>=65536?2:1}return d};R9.exports={byteLength:gp,toString:mp,write:bp}});var k9=P((yft,D9)=>{M();function O9(e){return e.length*2}function qH(e){let t=e.byteLength,r="";for(let a=0;a>8,B=b%256;e[r+m*2]=B,e[r+m*2+1]=A}return n}D9.exports={byteLength:O9,toString:qH,write:RH}});var F9=P((xp,N9)=>{M();var TH=A9(),OH=E9(),DH=q9(),kH=T9(),PH=k9(),Lu=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Us(e){switch(e){case"ascii":return TH;case"base64":return OH;case"hex":return DH;case"utf8":case"utf-8":case void 0:return kH;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return PH;default:throw new Error(`Unknown encoding: ${e}`)}}function P9(e){return e instanceof Uint8Array}function UH(e){try{return Us(e),!0}catch{return!1}}function LH(e,t,r){let a=new Uint8Array(e);return t!==void 0&&xp.fill(a,t,0,a.byteLength,r),a}function NH(e){return new Uint8Array(e)}function FH(e){return new Uint8Array(e)}function KH(e,t){return Us(t).byteLength(e)}function QH(e,t){if(e===t)return 0;let r=Math.min(e.byteLength,t.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),t=new DataView(t.buffer,t.byteOffset,t.byteLength);let a=0;for(let n=r-r%4;ad)return 1}return e.byteLength>t.byteLength?1:e.byteLengtha+n.byteLength,0));let r=new Uint8Array(t);return e.reduce((a,n)=>(r.set(n,a),a+n.byteLength),0),r}function jH(e,t,r=0,a=0,n=e.byteLength){if(n>0&&n=e.byteLength)throw new RangeError("sourceStart is out of range");if(n<0)throw new RangeError("sourceEnd is out of range");r>=t.byteLength&&(r=t.byteLength),n>e.byteLength&&(n=e.byteLength),t.byteLength-r=e.byteLength){if(n)return-1;r=e.byteLength-1}else if(r<0)if(n)r=0;else return-1;if(typeof t=="string")t=yp(t,a);else if(typeof t=="number")return t=t&255,n?e.indexOf(t,r):e.lastIndexOf(t,r);if(t.byteLength===0)return-1;if(n){let d=-1;for(let m=r;me.byteLength&&(r=e.byteLength-t.byteLength);for(let d=r;d>=0;d--){let m=!0;for(let b=0;b=n||a<=r?"":(r<0&&(r=0),a>n&&(a=n),(r!==0||a{M();var dj=(e,t)=>function(){return t||(0,e[Object.keys(e)[0]])((t={exports:{}}).exports,t),t.exports},vj=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return r=>{for(var a=r.length,n=new Uint8Array((a-(r[a-1]=="=")-(r[a-2]=="="))*3/4|0),d=0,m=0;d>4,n[m++]=A<<4|B>>2,n[m++]=B<<6|C}return n}})(),pj=dj({"wasm-binary:./blake2b.wat"(e,t){t.exports=vj("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")}}),gj=pj(),mj=WebAssembly.compile(gj);K9.exports=async e=>(await WebAssembly.instantiate(await mj,e)).exports});var Z9=P((Eft,rn)=>{M();var Gr=pp(),bj=F9(),qn=null,H9=typeof WebAssembly<"u"&&Q9()().then(e=>{qn=e}),Cn=64,Nu=[];rn.exports=Rr;var j9=rn.exports.BYTES_MIN=16,z9=rn.exports.BYTES_MAX=64,_ft=rn.exports.BYTES=32,V9=rn.exports.KEYBYTES_MIN=16,Y9=rn.exports.KEYBYTES_MAX=64,Ift=rn.exports.KEYBYTES=32,G9=rn.exports.SALTBYTES=16,$9=rn.exports.PERSONALBYTES=16;function Rr(e,t,r,a,n){if(!(this instanceof Rr))return new Rr(e,t,r,a,n);if(!qn)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),n!==!0&&(Gr(e>=j9,"digestLength must be at least "+j9+", was given "+e),Gr(e<=z9,"digestLength must be at most "+z9+", was given "+e),t!=null&&(Gr(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),Gr(t.length>=V9,"key must be at least "+V9+", was given "+t.length),Gr(t.length<=Y9,"key must be at least "+Y9+", was given "+t.length)),r!=null&&(Gr(r instanceof Uint8Array,"salt must be Uint8Array or Buffer"),Gr(r.length===G9,"salt must be exactly "+G9+", was given "+r.length)),a!=null&&(Gr(a instanceof Uint8Array,"personal must be Uint8Array or Buffer"),Gr(a.length===$9,"personal must be exactly "+$9+", was given "+a.length))),Nu.length||(Nu.push(Cn),Cn+=216),this.digestLength=e,this.finalized=!1,this.pointer=Nu.pop(),this._memory=new Uint8Array(qn.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=t?t.length:0,this._memory[2]=1,this._memory[3]=1,r&&this._memory.set(r,32),a&&this._memory.set(a,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),qn.blake2b_init(this.pointer,this.digestLength),t&&(this.update(t),this._memory.fill(0,Cn,Cn+t.length),this._memory[this.pointer+200]=128)}Rr.prototype._realloc=function(e){qn.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(qn.memory.buffer)};Rr.prototype.update=function(e){return Gr(this.finalized===!1,"Hash instance finalized"),Gr(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),Cn+e.length>this._memory.length&&this._realloc(Cn+e.length),this._memory.set(e,Cn),qn.blake2b_update(this.pointer,Cn,Cn+e.length),this};Rr.prototype.digest=function(e){if(Gr(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,Nu.push(this.pointer),qn.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return bj.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);Gr(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var t=0;te(),e):e(new Error("WebAssembly not supported"))};Rr.prototype.ready=Rr.ready;Rr.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};Rr.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function yj(){}});var s_=P((qft,Tr)=>{M();var gi=pp(),Ns=Z9();function Fu(e,t,r){var a=e[t]+e[r],n=e[t+1]+e[r+1];a>=4294967296&&n++,e[t]=a,e[t+1]=n}function W9(e,t,r,a){var n=e[t]+r;r<0&&(n+=4294967296);var d=e[t+1]+a;n>=4294967296&&d++,e[t]=n,e[t+1]=d}function n_(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function sf(e,t,r,a,n,d){var m=Ls[n],b=Ls[n+1],A=Ls[d],B=Ls[d+1];Fu(ce,e,t),W9(ce,e,m,b);var C=ce[a]^ce[e],D=ce[a+1]^ce[e+1];ce[a]=D,ce[a+1]=C,Fu(ce,r,a),C=ce[t]^ce[r],D=ce[t+1]^ce[r+1],ce[t]=C>>>24^D<<8,ce[t+1]=D>>>24^C<<8,Fu(ce,e,t),W9(ce,e,A,B),C=ce[a]^ce[e],D=ce[a+1]^ce[e+1],ce[a]=C>>>16^D<<16,ce[a+1]=D>>>16^C<<16,Fu(ce,r,a),C=ce[t]^ce[r],D=ce[t+1]^ce[r+1],ce[t]=D>>>31^C<<1,ce[t+1]=C>>>31^D<<1}var f_=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),xj=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],Sr=new Uint8Array(xj.map(function(e){return e*2})),ce=new Uint32Array(32),Ls=new Uint32Array(32);function a_(e,t){var r=0;for(r=0;r<16;r++)ce[r]=e.h[r],ce[r+16]=f_[r];for(ce[24]=ce[24]^e.t,ce[25]=ce[25]^e.t/4294967296,t&&(ce[28]=~ce[28],ce[29]=~ce[29]),r=0;r<32;r++)Ls[r]=n_(e.b,4*r);for(r=0;r<12;r++)sf(0,8,16,24,Sr[r*16+0],Sr[r*16+1]),sf(2,10,18,26,Sr[r*16+2],Sr[r*16+3]),sf(4,12,20,28,Sr[r*16+4],Sr[r*16+5]),sf(6,14,22,30,Sr[r*16+6],Sr[r*16+7]),sf(0,10,20,30,Sr[r*16+8],Sr[r*16+9]),sf(2,12,22,24,Sr[r*16+10],Sr[r*16+11]),sf(4,14,16,26,Sr[r*16+12],Sr[r*16+13]),sf(6,8,18,28,Sr[r*16+14],Sr[r*16+15]);for(r=0;r<16;r++)e.h[r]=e.h[r]^ce[r]^ce[r+16]}var hf=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function ro(e,t,r,a){hf.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,hf[0]=e,t&&(hf[1]=t.length),hf[2]=1,hf[3]=1,r&&hf.set(r,32),a&&hf.set(a,48);for(var n=0;n<16;n++)this.h[n]=f_[n]^n_(hf,n*4);t&&(o_(this,t),this.c=128)}ro.prototype.update=function(e){return gi(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),o_(this,e),this};ro.prototype.digest=function(e){var t=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return gi(t instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),gi(t.length>=this.outlen,"out must have at least outlen bytes of space"),wj(this,t),e==="hex"?Mj(t):t};ro.prototype.final=ro.prototype.digest;ro.ready=function(e){Ns.ready(function(){e()})};function o_(e,t){for(var r=0;r>2]>>8*(r&3);return t}function Mj(e){for(var t="",r=0;r=J9,"outlen must be at least "+J9+", was given "+t),gi(t<=X9,"outlen must be at most "+X9+", was given "+t),r!=null&&(gi(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),gi(r.length>=t_,"key must be at least "+t_+", was given "+r.length),gi(r.length<=e_,"key must be at most "+e_+", was given "+r.length)),a!=null&&(gi(a instanceof Uint8Array,"salt must be Uint8Array or Buffer"),gi(a.length===r_,"salt must be exactly "+r_+", was given "+a.length)),n!=null&&(gi(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),gi(n.length===i_,"personal must be exactly "+i_+", was given "+n.length))),new _j(t,r,a,n)};Tr.exports.ready=function(e){Ns.ready(function(){e()})};Tr.exports.WASM_SUPPORTED=Ns.SUPPORTED;Tr.exports.WASM_LOADED=!1;var J9=Tr.exports.BYTES_MIN=16,X9=Tr.exports.BYTES_MAX=64,Bft=Tr.exports.BYTES=32,t_=Tr.exports.KEYBYTES_MIN=16,e_=Tr.exports.KEYBYTES_MAX=64,Cft=Tr.exports.KEYBYTES=32,r_=Tr.exports.SALTBYTES=16,i_=Tr.exports.PERSONALBYTES=16;Ns.ready(function(e){e||(Tr.exports.WASM_LOADED=!0,Tr.exports=Ns)})});var M_=P(Rn=>{"use strict";M();Object.defineProperty(Rn,"__esModule",{value:!0});var Tft=new Uint8Array(16),g_=new Uint8Array(32);g_[0]=9;function oe(e){var t,r=new Float64Array(16);if(e)for(t=0;t>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=r&255,e[t+4]=a>>24&255,e[t+5]=a>>16&255,e[t+6]=a>>8&255,e[t+7]=a&255}function Cj(e,t,r,a,n){var d,m=0;for(d=0;d>>8)-1}function m_(e,t,r,a){return Cj(e,t,r,a,32)}function uf(e,t){var r;for(r=0;r<16;r++)e[r]=t[r]|0}function wp(e){var t,r,a=1;for(t=0;t<16;t++)r=e[t]+a+65535,a=Math.floor(r/65536),e[t]=r-a*65536;e[0]+=a-1+37*(a-1)}function io(e,t,r){for(var a,n=~(r-1),d=0;d<16;d++)a=n&(e[d]^t[d]),e[d]^=a,t[d]^=a}function fo(e,t){var r,a,n,d=oe(),m=oe();for(r=0;r<16;r++)m[r]=t[r];for(wp(m),wp(m),wp(m),a=0;a<2;a++){for(d[0]=m[0]-65517,r=1;r<15;r++)d[r]=m[r]-65535-(d[r-1]>>16&1),d[r-1]&=65535;d[15]=m[15]-32767-(d[14]>>16&1),n=d[15]>>16&1,d[14]&=65535,io(m,d,1-n)}for(r=0;r<16;r++)e[2*r]=m[r]&255,e[2*r+1]=m[r]>>8}function c_(e,t){var r=new Uint8Array(32),a=new Uint8Array(32);return fo(r,e),fo(a,t),m_(r,0,a,0)}function b_(e){var t=new Uint8Array(32);return fo(t,e),t[0]&1}function Ep(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function ki(e,t,r){for(var a=0;a<16;a++)e[a]=t[a]+r[a]}function Ui(e,t,r){for(var a=0;a<16;a++)e[a]=t[a]-r[a]}function Ae(e,t,r){var a,n,d=0,m=0,b=0,A=0,B=0,C=0,D=0,K=0,j=0,Z=0,qt=0,Rt=0,J=0,Ot=0,ht=0,Lt=0,ee=0,$t=0,Gt=0,tt=0,rt=0,v=0,i=0,o=0,h=0,s=0,u=0,p=0,g=0,l=0,f=0,c=r[0],I=r[1],w=r[2],S=r[3],k=r[4],E=r[5],L=r[6],$=r[7],F=r[8],Q=r[9],Ft=r[10],Y=r[11],G=r[12],se=r[13],W=r[14],X=r[15];a=t[0],d+=a*c,m+=a*I,b+=a*w,A+=a*S,B+=a*k,C+=a*E,D+=a*L,K+=a*$,j+=a*F,Z+=a*Q,qt+=a*Ft,Rt+=a*Y,J+=a*G,Ot+=a*se,ht+=a*W,Lt+=a*X,a=t[1],m+=a*c,b+=a*I,A+=a*w,B+=a*S,C+=a*k,D+=a*E,K+=a*L,j+=a*$,Z+=a*F,qt+=a*Q,Rt+=a*Ft,J+=a*Y,Ot+=a*G,ht+=a*se,Lt+=a*W,ee+=a*X,a=t[2],b+=a*c,A+=a*I,B+=a*w,C+=a*S,D+=a*k,K+=a*E,j+=a*L,Z+=a*$,qt+=a*F,Rt+=a*Q,J+=a*Ft,Ot+=a*Y,ht+=a*G,Lt+=a*se,ee+=a*W,$t+=a*X,a=t[3],A+=a*c,B+=a*I,C+=a*w,D+=a*S,K+=a*k,j+=a*E,Z+=a*L,qt+=a*$,Rt+=a*F,J+=a*Q,Ot+=a*Ft,ht+=a*Y,Lt+=a*G,ee+=a*se,$t+=a*W,Gt+=a*X,a=t[4],B+=a*c,C+=a*I,D+=a*w,K+=a*S,j+=a*k,Z+=a*E,qt+=a*L,Rt+=a*$,J+=a*F,Ot+=a*Q,ht+=a*Ft,Lt+=a*Y,ee+=a*G,$t+=a*se,Gt+=a*W,tt+=a*X,a=t[5],C+=a*c,D+=a*I,K+=a*w,j+=a*S,Z+=a*k,qt+=a*E,Rt+=a*L,J+=a*$,Ot+=a*F,ht+=a*Q,Lt+=a*Ft,ee+=a*Y,$t+=a*G,Gt+=a*se,tt+=a*W,rt+=a*X,a=t[6],D+=a*c,K+=a*I,j+=a*w,Z+=a*S,qt+=a*k,Rt+=a*E,J+=a*L,Ot+=a*$,ht+=a*F,Lt+=a*Q,ee+=a*Ft,$t+=a*Y,Gt+=a*G,tt+=a*se,rt+=a*W,v+=a*X,a=t[7],K+=a*c,j+=a*I,Z+=a*w,qt+=a*S,Rt+=a*k,J+=a*E,Ot+=a*L,ht+=a*$,Lt+=a*F,ee+=a*Q,$t+=a*Ft,Gt+=a*Y,tt+=a*G,rt+=a*se,v+=a*W,i+=a*X,a=t[8],j+=a*c,Z+=a*I,qt+=a*w,Rt+=a*S,J+=a*k,Ot+=a*E,ht+=a*L,Lt+=a*$,ee+=a*F,$t+=a*Q,Gt+=a*Ft,tt+=a*Y,rt+=a*G,v+=a*se,i+=a*W,o+=a*X,a=t[9],Z+=a*c,qt+=a*I,Rt+=a*w,J+=a*S,Ot+=a*k,ht+=a*E,Lt+=a*L,ee+=a*$,$t+=a*F,Gt+=a*Q,tt+=a*Ft,rt+=a*Y,v+=a*G,i+=a*se,o+=a*W,h+=a*X,a=t[10],qt+=a*c,Rt+=a*I,J+=a*w,Ot+=a*S,ht+=a*k,Lt+=a*E,ee+=a*L,$t+=a*$,Gt+=a*F,tt+=a*Q,rt+=a*Ft,v+=a*Y,i+=a*G,o+=a*se,h+=a*W,s+=a*X,a=t[11],Rt+=a*c,J+=a*I,Ot+=a*w,ht+=a*S,Lt+=a*k,ee+=a*E,$t+=a*L,Gt+=a*$,tt+=a*F,rt+=a*Q,v+=a*Ft,i+=a*Y,o+=a*G,h+=a*se,s+=a*W,u+=a*X,a=t[12],J+=a*c,Ot+=a*I,ht+=a*w,Lt+=a*S,ee+=a*k,$t+=a*E,Gt+=a*L,tt+=a*$,rt+=a*F,v+=a*Q,i+=a*Ft,o+=a*Y,h+=a*G,s+=a*se,u+=a*W,p+=a*X,a=t[13],Ot+=a*c,ht+=a*I,Lt+=a*w,ee+=a*S,$t+=a*k,Gt+=a*E,tt+=a*L,rt+=a*$,v+=a*F,i+=a*Q,o+=a*Ft,h+=a*Y,s+=a*G,u+=a*se,p+=a*W,g+=a*X,a=t[14],ht+=a*c,Lt+=a*I,ee+=a*w,$t+=a*S,Gt+=a*k,tt+=a*E,rt+=a*L,v+=a*$,i+=a*F,o+=a*Q,h+=a*Ft,s+=a*Y,u+=a*G,p+=a*se,g+=a*W,l+=a*X,a=t[15],Lt+=a*c,ee+=a*I,$t+=a*w,Gt+=a*S,tt+=a*k,rt+=a*E,v+=a*L,i+=a*$,o+=a*F,h+=a*Q,s+=a*Ft,u+=a*Y,p+=a*G,g+=a*se,l+=a*W,f+=a*X,d+=38*ee,m+=38*$t,b+=38*Gt,A+=38*tt,B+=38*rt,C+=38*v,D+=38*i,K+=38*o,j+=38*h,Z+=38*s,qt+=38*u,Rt+=38*p,J+=38*g,Ot+=38*l,ht+=38*f,n=1,a=d+n+65535,n=Math.floor(a/65536),d=a-n*65536,a=m+n+65535,n=Math.floor(a/65536),m=a-n*65536,a=b+n+65535,n=Math.floor(a/65536),b=a-n*65536,a=A+n+65535,n=Math.floor(a/65536),A=a-n*65536,a=B+n+65535,n=Math.floor(a/65536),B=a-n*65536,a=C+n+65535,n=Math.floor(a/65536),C=a-n*65536,a=D+n+65535,n=Math.floor(a/65536),D=a-n*65536,a=K+n+65535,n=Math.floor(a/65536),K=a-n*65536,a=j+n+65535,n=Math.floor(a/65536),j=a-n*65536,a=Z+n+65535,n=Math.floor(a/65536),Z=a-n*65536,a=qt+n+65535,n=Math.floor(a/65536),qt=a-n*65536,a=Rt+n+65535,n=Math.floor(a/65536),Rt=a-n*65536,a=J+n+65535,n=Math.floor(a/65536),J=a-n*65536,a=Ot+n+65535,n=Math.floor(a/65536),Ot=a-n*65536,a=ht+n+65535,n=Math.floor(a/65536),ht=a-n*65536,a=Lt+n+65535,n=Math.floor(a/65536),Lt=a-n*65536,d+=n-1+37*(n-1),n=1,a=d+n+65535,n=Math.floor(a/65536),d=a-n*65536,a=m+n+65535,n=Math.floor(a/65536),m=a-n*65536,a=b+n+65535,n=Math.floor(a/65536),b=a-n*65536,a=A+n+65535,n=Math.floor(a/65536),A=a-n*65536,a=B+n+65535,n=Math.floor(a/65536),B=a-n*65536,a=C+n+65535,n=Math.floor(a/65536),C=a-n*65536,a=D+n+65535,n=Math.floor(a/65536),D=a-n*65536,a=K+n+65535,n=Math.floor(a/65536),K=a-n*65536,a=j+n+65535,n=Math.floor(a/65536),j=a-n*65536,a=Z+n+65535,n=Math.floor(a/65536),Z=a-n*65536,a=qt+n+65535,n=Math.floor(a/65536),qt=a-n*65536,a=Rt+n+65535,n=Math.floor(a/65536),Rt=a-n*65536,a=J+n+65535,n=Math.floor(a/65536),J=a-n*65536,a=Ot+n+65535,n=Math.floor(a/65536),Ot=a-n*65536,a=ht+n+65535,n=Math.floor(a/65536),ht=a-n*65536,a=Lt+n+65535,n=Math.floor(a/65536),Lt=a-n*65536,d+=n-1+37*(n-1),e[0]=d,e[1]=m,e[2]=b,e[3]=A,e[4]=B,e[5]=C,e[6]=D,e[7]=K,e[8]=j,e[9]=Z,e[10]=qt,e[11]=Rt,e[12]=J,e[13]=Ot,e[14]=ht,e[15]=Lt}function Pi(e,t){Ae(e,t,t)}function Sp(e,t){var r=oe(),a;for(a=0;a<16;a++)r[a]=t[a];for(a=253;a>=0;a--)Pi(r,r),a!==2&&a!==4&&Ae(r,r,t);for(a=0;a<16;a++)e[a]=r[a]}function qj(e,t){var r=oe(),a;for(a=0;a<16;a++)r[a]=t[a];for(a=250;a>=0;a--)Pi(r,r),a!==1&&Ae(r,r,t);for(a=0;a<16;a++)e[a]=r[a]}function y_(e,t,r){var a=new Uint8Array(32),n=new Float64Array(80),d,m,b=oe(),A=oe(),B=oe(),C=oe(),D=oe(),K=oe();for(m=0;m<31;m++)a[m]=t[m];for(a[31]=t[31]&127|64,a[0]&=248,Ep(n,r),m=0;m<16;m++)A[m]=n[m],C[m]=b[m]=B[m]=0;for(b[0]=C[0]=1,m=254;m>=0;--m)d=a[m>>>3]>>>(m&7)&1,io(b,A,d),io(B,C,d),ki(D,b,B),Ui(b,b,B),ki(B,A,C),Ui(A,A,C),Pi(C,D),Pi(K,b),Ae(b,B,b),Ae(B,A,D),ki(D,b,B),Ui(b,b,B),Pi(A,b),Ui(B,C,K),Ae(b,B,Ij),ki(b,b,C),Ae(B,B,b),Ae(b,C,K),Ae(C,A,n),Pi(A,D),io(b,A,d),io(B,C,d);for(m=0;m<16;m++)n[m+16]=b[m],n[m+32]=B[m],n[m+48]=A[m],n[m+64]=C[m];var j=n.subarray(32),Z=n.subarray(16);return Sp(j,j),Ae(Z,Z,j),fo(e,Z),0}function Rj(e,t){return y_(e,t,g_)}var d_=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function v_(e,t,r,a){for(var n=new Int32Array(16),d=new Int32Array(16),m,b,A,B,C,D,K,j,Z,qt,Rt,J,Ot,ht,Lt,ee,$t,Gt,tt,rt,v,i,o,h,s,u,p=e[0],g=e[1],l=e[2],f=e[3],c=e[4],I=e[5],w=e[6],S=e[7],k=t[0],E=t[1],L=t[2],$=t[3],F=t[4],Q=t[5],Ft=t[6],Y=t[7],G=0;a>=128;){for(tt=0;tt<16;tt++)rt=8*tt+G,n[tt]=r[rt+0]<<24|r[rt+1]<<16|r[rt+2]<<8|r[rt+3],d[tt]=r[rt+4]<<24|r[rt+5]<<16|r[rt+6]<<8|r[rt+7];for(tt=0;tt<80;tt++)if(m=p,b=g,A=l,B=f,C=c,D=I,K=w,j=S,Z=k,qt=E,Rt=L,J=$,Ot=F,ht=Q,Lt=Ft,ee=Y,v=S,i=Y,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=(c>>>14|F<<32-14)^(c>>>18|F<<32-18)^(F>>>41-32|c<<32-(41-32)),i=(F>>>14|c<<32-14)^(F>>>18|c<<32-18)^(c>>>41-32|F<<32-(41-32)),o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,v=c&I^~c&w,i=F&Q^~F&Ft,o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,v=d_[tt*2],i=d_[tt*2+1],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,v=n[tt%16],i=d[tt%16],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,$t=s&65535|u<<16,Gt=o&65535|h<<16,v=$t,i=Gt,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=(p>>>28|k<<32-28)^(k>>>34-32|p<<32-(34-32))^(k>>>39-32|p<<32-(39-32)),i=(k>>>28|p<<32-28)^(p>>>34-32|k<<32-(34-32))^(p>>>39-32|k<<32-(39-32)),o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,v=p&g^p&l^g&l,i=k&E^k&L^E&L,o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,j=s&65535|u<<16,ee=o&65535|h<<16,v=B,i=J,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=$t,i=Gt,o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,B=s&65535|u<<16,J=o&65535|h<<16,g=m,l=b,f=A,c=B,I=C,w=D,S=K,p=j,E=Z,L=qt,$=Rt,F=J,Q=Ot,Ft=ht,Y=Lt,k=ee,tt%16===15)for(rt=0;rt<16;rt++)v=n[rt],i=d[rt],o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=n[(rt+9)%16],i=d[(rt+9)%16],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,$t=n[(rt+1)%16],Gt=d[(rt+1)%16],v=($t>>>1|Gt<<32-1)^($t>>>8|Gt<<32-8)^$t>>>7,i=(Gt>>>1|$t<<32-1)^(Gt>>>8|$t<<32-8)^(Gt>>>7|$t<<32-7),o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,$t=n[(rt+14)%16],Gt=d[(rt+14)%16],v=($t>>>19|Gt<<32-19)^(Gt>>>61-32|$t<<32-(61-32))^$t>>>6,i=(Gt>>>19|$t<<32-19)^($t>>>61-32|Gt<<32-(61-32))^(Gt>>>6|$t<<32-6),o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,n[rt]=s&65535|u<<16,d[rt]=o&65535|h<<16;v=p,i=k,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[0],i=t[0],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[0]=p=s&65535|u<<16,t[0]=k=o&65535|h<<16,v=g,i=E,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[1],i=t[1],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[1]=g=s&65535|u<<16,t[1]=E=o&65535|h<<16,v=l,i=L,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[2],i=t[2],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[2]=l=s&65535|u<<16,t[2]=L=o&65535|h<<16,v=f,i=$,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[3],i=t[3],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[3]=f=s&65535|u<<16,t[3]=$=o&65535|h<<16,v=c,i=F,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[4],i=t[4],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[4]=c=s&65535|u<<16,t[4]=F=o&65535|h<<16,v=I,i=Q,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[5],i=t[5],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[5]=I=s&65535|u<<16,t[5]=Q=o&65535|h<<16,v=w,i=Ft,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[6],i=t[6],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[6]=w=s&65535|u<<16,t[6]=Ft=o&65535|h<<16,v=S,i=Y,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[7],i=t[7],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[7]=S=s&65535|u<<16,t[7]=Y=o&65535|h<<16,G+=128,a-=128}return a}function Fs(e,t,r){var a=new Int32Array(8),n=new Int32Array(8),d=new Uint8Array(256),m,b=r;for(a[0]=1779033703,a[1]=3144134277,a[2]=1013904242,a[3]=2773480762,a[4]=1359893119,a[5]=2600822924,a[6]=528734635,a[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,v_(a,n,t,r),r%=128,m=0;m=0;--n)a=r[n/8|0]>>(n&7)&1,p_(e,t,a),_p(t,e),_p(e,e),p_(e,t,a)}function Qu(e,t){var r=[oe(),oe(),oe(),oe()];uf(r[0],h_),uf(r[1],u_),uf(r[2],no),Ae(r[3],h_,u_),x_(e,r,t)}var Mp=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Bp(e,t){var r,a,n,d;for(a=63;a>=32;--a){for(r=0,n=a-32,d=a-12;n>8,t[n]-=r*256;t[n]+=r,t[a]=0}for(r=0,n=0;n<32;n++)t[n]+=r-(t[31]>>4)*Mp[n],r=t[n]>>8,t[n]&=255;for(n=0;n<32;n++)t[n]-=r*Mp[n];for(a=0;a<32;a++)t[a+1]+=t[a]>>8,e[a]=t[a]&255}function Ks(e){var t=new Float64Array(64),r;for(r=0;r<64;r++)t[r]=e[r];for(r=0;r<64;r++)e[r]=0;Bp(e,t)}function Tj(e,t,r,a){var n=new Uint8Array(64),d=new Uint8Array(64),m,b,A=new Float64Array(64),B=[oe(),oe(),oe(),oe()];for(m=0;m>7&&Ui(e[0],Ap,e[0]),Ae(e[3],e[0],e[1]),0)}function kj(e,t,r,a){var n,d,m=new Uint8Array(32),b=new Uint8Array(64),A=[oe(),oe(),oe(),oe()],B=[oe(),oe(),oe(),oe()];if(d=-1,r<64||Dj(B,a))return-1;for(n=0;n=0}Rn.verify=Kj;function Qj(e){if(lf(e),e.length!==32)throw new Error("wrong seed length");for(var t=new Uint8Array(32),r=new Uint8Array(32),a=0;a<32;a++)t[a]=e[a];return Rj(r,t),t[0]&=248,t[31]&=127,t[31]|=64,r[31]&=127,{public:r,private:t}}Rn.generateKeyPair=Qj;Rn.default={}});var A_=P((kft,Hu)=>{M();(function(e){"use strict";var t=function(T){var R,q=new Float64Array(16);if(T)for(R=0;R>24&255,T[R+1]=q>>16&255,T[R+2]=q>>8&255,T[R+3]=q&255,T[R+4]=_>>24&255,T[R+5]=_>>16&255,T[R+6]=_>>8&255,T[R+7]=_&255}function Z(T,R,q,_,O){var N,et=0;for(N=0;N>>8)-1}function qt(T,R,q,_){return Z(T,R,q,_,16)}function Rt(T,R,q,_){return Z(T,R,q,_,32)}function J(T,R,q,_){for(var O=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,N=q[0]&255|(q[1]&255)<<8|(q[2]&255)<<16|(q[3]&255)<<24,et=q[4]&255|(q[5]&255)<<8|(q[6]&255)<<16|(q[7]&255)<<24,H=q[8]&255|(q[9]&255)<<8|(q[10]&255)<<16|(q[11]&255)<<24,z=q[12]&255|(q[13]&255)<<8|(q[14]&255)<<16|(q[15]&255)<<24,zt=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,Dt=R[0]&255|(R[1]&255)<<8|(R[2]&255)<<16|(R[3]&255)<<24,Jt=R[4]&255|(R[5]&255)<<8|(R[6]&255)<<16|(R[7]&255)<<24,Qt=R[8]&255|(R[9]&255)<<8|(R[10]&255)<<16|(R[11]&255)<<24,Xt=R[12]&255|(R[13]&255)<<8|(R[14]&255)<<16|(R[15]&255)<<24,te=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,ie=q[16]&255|(q[17]&255)<<8|(q[18]&255)<<16|(q[19]&255)<<24,re=q[20]&255|(q[21]&255)<<8|(q[22]&255)<<16|(q[23]&255)<<24,ne=q[24]&255|(q[25]&255)<<8|(q[26]&255)<<16|(q[27]&255)<<24,ae=q[28]&255|(q[29]&255)<<8|(q[30]&255)<<16|(q[31]&255)<<24,fe=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,Vt=O,Wt=N,Ht=et,Yt=H,Zt=z,Kt=zt,it=Dt,nt=Jt,Nt=Qt,kt=Xt,Ut=te,jt=ie,he=re,ue=ne,de=ae,le=fe,V,be=0;be<20;be+=2)V=Vt+he|0,Zt^=V<<7|V>>>32-7,V=Zt+Vt|0,Nt^=V<<9|V>>>32-9,V=Nt+Zt|0,he^=V<<13|V>>>32-13,V=he+Nt|0,Vt^=V<<18|V>>>32-18,V=Kt+Wt|0,kt^=V<<7|V>>>32-7,V=kt+Kt|0,ue^=V<<9|V>>>32-9,V=ue+kt|0,Wt^=V<<13|V>>>32-13,V=Wt+ue|0,Kt^=V<<18|V>>>32-18,V=Ut+it|0,de^=V<<7|V>>>32-7,V=de+Ut|0,Ht^=V<<9|V>>>32-9,V=Ht+de|0,it^=V<<13|V>>>32-13,V=it+Ht|0,Ut^=V<<18|V>>>32-18,V=le+jt|0,Yt^=V<<7|V>>>32-7,V=Yt+le|0,nt^=V<<9|V>>>32-9,V=nt+Yt|0,jt^=V<<13|V>>>32-13,V=jt+nt|0,le^=V<<18|V>>>32-18,V=Vt+Yt|0,Wt^=V<<7|V>>>32-7,V=Wt+Vt|0,Ht^=V<<9|V>>>32-9,V=Ht+Wt|0,Yt^=V<<13|V>>>32-13,V=Yt+Ht|0,Vt^=V<<18|V>>>32-18,V=Kt+Zt|0,it^=V<<7|V>>>32-7,V=it+Kt|0,nt^=V<<9|V>>>32-9,V=nt+it|0,Zt^=V<<13|V>>>32-13,V=Zt+nt|0,Kt^=V<<18|V>>>32-18,V=Ut+kt|0,jt^=V<<7|V>>>32-7,V=jt+Ut|0,Nt^=V<<9|V>>>32-9,V=Nt+jt|0,kt^=V<<13|V>>>32-13,V=kt+Nt|0,Ut^=V<<18|V>>>32-18,V=le+de|0,he^=V<<7|V>>>32-7,V=he+le|0,ue^=V<<9|V>>>32-9,V=ue+he|0,de^=V<<13|V>>>32-13,V=de+ue|0,le^=V<<18|V>>>32-18;Vt=Vt+O|0,Wt=Wt+N|0,Ht=Ht+et|0,Yt=Yt+H|0,Zt=Zt+z|0,Kt=Kt+zt|0,it=it+Dt|0,nt=nt+Jt|0,Nt=Nt+Qt|0,kt=kt+Xt|0,Ut=Ut+te|0,jt=jt+ie|0,he=he+re|0,ue=ue+ne|0,de=de+ae|0,le=le+fe|0,T[0]=Vt>>>0&255,T[1]=Vt>>>8&255,T[2]=Vt>>>16&255,T[3]=Vt>>>24&255,T[4]=Wt>>>0&255,T[5]=Wt>>>8&255,T[6]=Wt>>>16&255,T[7]=Wt>>>24&255,T[8]=Ht>>>0&255,T[9]=Ht>>>8&255,T[10]=Ht>>>16&255,T[11]=Ht>>>24&255,T[12]=Yt>>>0&255,T[13]=Yt>>>8&255,T[14]=Yt>>>16&255,T[15]=Yt>>>24&255,T[16]=Zt>>>0&255,T[17]=Zt>>>8&255,T[18]=Zt>>>16&255,T[19]=Zt>>>24&255,T[20]=Kt>>>0&255,T[21]=Kt>>>8&255,T[22]=Kt>>>16&255,T[23]=Kt>>>24&255,T[24]=it>>>0&255,T[25]=it>>>8&255,T[26]=it>>>16&255,T[27]=it>>>24&255,T[28]=nt>>>0&255,T[29]=nt>>>8&255,T[30]=nt>>>16&255,T[31]=nt>>>24&255,T[32]=Nt>>>0&255,T[33]=Nt>>>8&255,T[34]=Nt>>>16&255,T[35]=Nt>>>24&255,T[36]=kt>>>0&255,T[37]=kt>>>8&255,T[38]=kt>>>16&255,T[39]=kt>>>24&255,T[40]=Ut>>>0&255,T[41]=Ut>>>8&255,T[42]=Ut>>>16&255,T[43]=Ut>>>24&255,T[44]=jt>>>0&255,T[45]=jt>>>8&255,T[46]=jt>>>16&255,T[47]=jt>>>24&255,T[48]=he>>>0&255,T[49]=he>>>8&255,T[50]=he>>>16&255,T[51]=he>>>24&255,T[52]=ue>>>0&255,T[53]=ue>>>8&255,T[54]=ue>>>16&255,T[55]=ue>>>24&255,T[56]=de>>>0&255,T[57]=de>>>8&255,T[58]=de>>>16&255,T[59]=de>>>24&255,T[60]=le>>>0&255,T[61]=le>>>8&255,T[62]=le>>>16&255,T[63]=le>>>24&255}function Ot(T,R,q,_){for(var O=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,N=q[0]&255|(q[1]&255)<<8|(q[2]&255)<<16|(q[3]&255)<<24,et=q[4]&255|(q[5]&255)<<8|(q[6]&255)<<16|(q[7]&255)<<24,H=q[8]&255|(q[9]&255)<<8|(q[10]&255)<<16|(q[11]&255)<<24,z=q[12]&255|(q[13]&255)<<8|(q[14]&255)<<16|(q[15]&255)<<24,zt=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,Dt=R[0]&255|(R[1]&255)<<8|(R[2]&255)<<16|(R[3]&255)<<24,Jt=R[4]&255|(R[5]&255)<<8|(R[6]&255)<<16|(R[7]&255)<<24,Qt=R[8]&255|(R[9]&255)<<8|(R[10]&255)<<16|(R[11]&255)<<24,Xt=R[12]&255|(R[13]&255)<<8|(R[14]&255)<<16|(R[15]&255)<<24,te=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,ie=q[16]&255|(q[17]&255)<<8|(q[18]&255)<<16|(q[19]&255)<<24,re=q[20]&255|(q[21]&255)<<8|(q[22]&255)<<16|(q[23]&255)<<24,ne=q[24]&255|(q[25]&255)<<8|(q[26]&255)<<16|(q[27]&255)<<24,ae=q[28]&255|(q[29]&255)<<8|(q[30]&255)<<16|(q[31]&255)<<24,fe=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,Vt=O,Wt=N,Ht=et,Yt=H,Zt=z,Kt=zt,it=Dt,nt=Jt,Nt=Qt,kt=Xt,Ut=te,jt=ie,he=re,ue=ne,de=ae,le=fe,V,be=0;be<20;be+=2)V=Vt+he|0,Zt^=V<<7|V>>>32-7,V=Zt+Vt|0,Nt^=V<<9|V>>>32-9,V=Nt+Zt|0,he^=V<<13|V>>>32-13,V=he+Nt|0,Vt^=V<<18|V>>>32-18,V=Kt+Wt|0,kt^=V<<7|V>>>32-7,V=kt+Kt|0,ue^=V<<9|V>>>32-9,V=ue+kt|0,Wt^=V<<13|V>>>32-13,V=Wt+ue|0,Kt^=V<<18|V>>>32-18,V=Ut+it|0,de^=V<<7|V>>>32-7,V=de+Ut|0,Ht^=V<<9|V>>>32-9,V=Ht+de|0,it^=V<<13|V>>>32-13,V=it+Ht|0,Ut^=V<<18|V>>>32-18,V=le+jt|0,Yt^=V<<7|V>>>32-7,V=Yt+le|0,nt^=V<<9|V>>>32-9,V=nt+Yt|0,jt^=V<<13|V>>>32-13,V=jt+nt|0,le^=V<<18|V>>>32-18,V=Vt+Yt|0,Wt^=V<<7|V>>>32-7,V=Wt+Vt|0,Ht^=V<<9|V>>>32-9,V=Ht+Wt|0,Yt^=V<<13|V>>>32-13,V=Yt+Ht|0,Vt^=V<<18|V>>>32-18,V=Kt+Zt|0,it^=V<<7|V>>>32-7,V=it+Kt|0,nt^=V<<9|V>>>32-9,V=nt+it|0,Zt^=V<<13|V>>>32-13,V=Zt+nt|0,Kt^=V<<18|V>>>32-18,V=Ut+kt|0,jt^=V<<7|V>>>32-7,V=jt+Ut|0,Nt^=V<<9|V>>>32-9,V=Nt+jt|0,kt^=V<<13|V>>>32-13,V=kt+Nt|0,Ut^=V<<18|V>>>32-18,V=le+de|0,he^=V<<7|V>>>32-7,V=he+le|0,ue^=V<<9|V>>>32-9,V=ue+he|0,de^=V<<13|V>>>32-13,V=de+ue|0,le^=V<<18|V>>>32-18;T[0]=Vt>>>0&255,T[1]=Vt>>>8&255,T[2]=Vt>>>16&255,T[3]=Vt>>>24&255,T[4]=Kt>>>0&255,T[5]=Kt>>>8&255,T[6]=Kt>>>16&255,T[7]=Kt>>>24&255,T[8]=Ut>>>0&255,T[9]=Ut>>>8&255,T[10]=Ut>>>16&255,T[11]=Ut>>>24&255,T[12]=le>>>0&255,T[13]=le>>>8&255,T[14]=le>>>16&255,T[15]=le>>>24&255,T[16]=it>>>0&255,T[17]=it>>>8&255,T[18]=it>>>16&255,T[19]=it>>>24&255,T[20]=nt>>>0&255,T[21]=nt>>>8&255,T[22]=nt>>>16&255,T[23]=nt>>>24&255,T[24]=Nt>>>0&255,T[25]=Nt>>>8&255,T[26]=Nt>>>16&255,T[27]=Nt>>>24&255,T[28]=kt>>>0&255,T[29]=kt>>>8&255,T[30]=kt>>>16&255,T[31]=kt>>>24&255}function ht(T,R,q,_){J(T,R,q,_)}function Lt(T,R,q,_){Ot(T,R,q,_)}var ee=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function $t(T,R,q,_,O,N,et){var H=new Uint8Array(16),z=new Uint8Array(64),zt,Dt;for(Dt=0;Dt<16;Dt++)H[Dt]=0;for(Dt=0;Dt<8;Dt++)H[Dt]=N[Dt];for(;O>=64;){for(ht(z,H,et,ee),Dt=0;Dt<64;Dt++)T[R+Dt]=q[_+Dt]^z[Dt];for(zt=1,Dt=8;Dt<16;Dt++)zt=zt+(H[Dt]&255)|0,H[Dt]=zt&255,zt>>>=8;O-=64,R+=64,_+=64}if(O>0)for(ht(z,H,et,ee),Dt=0;Dt=64;){for(ht(et,N,O,ee),z=0;z<64;z++)T[R+z]=et[z];for(H=1,z=8;z<16;z++)H=H+(N[z]&255)|0,N[z]=H&255,H>>>=8;q-=64,R+=64}if(q>0)for(ht(et,N,O,ee),z=0;z>>13|q<<3)&8191,_=T[4]&255|(T[5]&255)<<8,this.r[2]=(q>>>10|_<<6)&7939,O=T[6]&255|(T[7]&255)<<8,this.r[3]=(_>>>7|O<<9)&8191,N=T[8]&255|(T[9]&255)<<8,this.r[4]=(O>>>4|N<<12)&255,this.r[5]=N>>>1&8190,et=T[10]&255|(T[11]&255)<<8,this.r[6]=(N>>>14|et<<2)&8191,H=T[12]&255|(T[13]&255)<<8,this.r[7]=(et>>>11|H<<5)&8065,z=T[14]&255|(T[15]&255)<<8,this.r[8]=(H>>>8|z<<8)&8191,this.r[9]=z>>>5&127,this.pad[0]=T[16]&255|(T[17]&255)<<8,this.pad[1]=T[18]&255|(T[19]&255)<<8,this.pad[2]=T[20]&255|(T[21]&255)<<8,this.pad[3]=T[22]&255|(T[23]&255)<<8,this.pad[4]=T[24]&255|(T[25]&255)<<8,this.pad[5]=T[26]&255|(T[27]&255)<<8,this.pad[6]=T[28]&255|(T[29]&255)<<8,this.pad[7]=T[30]&255|(T[31]&255)<<8};v.prototype.blocks=function(T,R,q){for(var _=this.fin?0:2048,O,N,et,H,z,zt,Dt,Jt,Qt,Xt,te,ie,re,ne,ae,fe,Vt,Wt,Ht,Yt=this.h[0],Zt=this.h[1],Kt=this.h[2],it=this.h[3],nt=this.h[4],Nt=this.h[5],kt=this.h[6],Ut=this.h[7],jt=this.h[8],he=this.h[9],ue=this.r[0],de=this.r[1],le=this.r[2],V=this.r[3],be=this.r[4],Ee=this.r[5],Se=this.r[6],pe=this.r[7],_e=this.r[8],Ie=this.r[9];q>=16;)O=T[R+0]&255|(T[R+1]&255)<<8,Yt+=O&8191,N=T[R+2]&255|(T[R+3]&255)<<8,Zt+=(O>>>13|N<<3)&8191,et=T[R+4]&255|(T[R+5]&255)<<8,Kt+=(N>>>10|et<<6)&8191,H=T[R+6]&255|(T[R+7]&255)<<8,it+=(et>>>7|H<<9)&8191,z=T[R+8]&255|(T[R+9]&255)<<8,nt+=(H>>>4|z<<12)&8191,Nt+=z>>>1&8191,zt=T[R+10]&255|(T[R+11]&255)<<8,kt+=(z>>>14|zt<<2)&8191,Dt=T[R+12]&255|(T[R+13]&255)<<8,Ut+=(zt>>>11|Dt<<5)&8191,Jt=T[R+14]&255|(T[R+15]&255)<<8,jt+=(Dt>>>8|Jt<<8)&8191,he+=Jt>>>5|_,Qt=0,Xt=Qt,Xt+=Yt*ue,Xt+=Zt*(5*Ie),Xt+=Kt*(5*_e),Xt+=it*(5*pe),Xt+=nt*(5*Se),Qt=Xt>>>13,Xt&=8191,Xt+=Nt*(5*Ee),Xt+=kt*(5*be),Xt+=Ut*(5*V),Xt+=jt*(5*le),Xt+=he*(5*de),Qt+=Xt>>>13,Xt&=8191,te=Qt,te+=Yt*de,te+=Zt*ue,te+=Kt*(5*Ie),te+=it*(5*_e),te+=nt*(5*pe),Qt=te>>>13,te&=8191,te+=Nt*(5*Se),te+=kt*(5*Ee),te+=Ut*(5*be),te+=jt*(5*V),te+=he*(5*le),Qt+=te>>>13,te&=8191,ie=Qt,ie+=Yt*le,ie+=Zt*de,ie+=Kt*ue,ie+=it*(5*Ie),ie+=nt*(5*_e),Qt=ie>>>13,ie&=8191,ie+=Nt*(5*pe),ie+=kt*(5*Se),ie+=Ut*(5*Ee),ie+=jt*(5*be),ie+=he*(5*V),Qt+=ie>>>13,ie&=8191,re=Qt,re+=Yt*V,re+=Zt*le,re+=Kt*de,re+=it*ue,re+=nt*(5*Ie),Qt=re>>>13,re&=8191,re+=Nt*(5*_e),re+=kt*(5*pe),re+=Ut*(5*Se),re+=jt*(5*Ee),re+=he*(5*be),Qt+=re>>>13,re&=8191,ne=Qt,ne+=Yt*be,ne+=Zt*V,ne+=Kt*le,ne+=it*de,ne+=nt*ue,Qt=ne>>>13,ne&=8191,ne+=Nt*(5*Ie),ne+=kt*(5*_e),ne+=Ut*(5*pe),ne+=jt*(5*Se),ne+=he*(5*Ee),Qt+=ne>>>13,ne&=8191,ae=Qt,ae+=Yt*Ee,ae+=Zt*be,ae+=Kt*V,ae+=it*le,ae+=nt*de,Qt=ae>>>13,ae&=8191,ae+=Nt*ue,ae+=kt*(5*Ie),ae+=Ut*(5*_e),ae+=jt*(5*pe),ae+=he*(5*Se),Qt+=ae>>>13,ae&=8191,fe=Qt,fe+=Yt*Se,fe+=Zt*Ee,fe+=Kt*be,fe+=it*V,fe+=nt*le,Qt=fe>>>13,fe&=8191,fe+=Nt*de,fe+=kt*ue,fe+=Ut*(5*Ie),fe+=jt*(5*_e),fe+=he*(5*pe),Qt+=fe>>>13,fe&=8191,Vt=Qt,Vt+=Yt*pe,Vt+=Zt*Se,Vt+=Kt*Ee,Vt+=it*be,Vt+=nt*V,Qt=Vt>>>13,Vt&=8191,Vt+=Nt*le,Vt+=kt*de,Vt+=Ut*ue,Vt+=jt*(5*Ie),Vt+=he*(5*_e),Qt+=Vt>>>13,Vt&=8191,Wt=Qt,Wt+=Yt*_e,Wt+=Zt*pe,Wt+=Kt*Se,Wt+=it*Ee,Wt+=nt*be,Qt=Wt>>>13,Wt&=8191,Wt+=Nt*V,Wt+=kt*le,Wt+=Ut*de,Wt+=jt*ue,Wt+=he*(5*Ie),Qt+=Wt>>>13,Wt&=8191,Ht=Qt,Ht+=Yt*Ie,Ht+=Zt*_e,Ht+=Kt*pe,Ht+=it*Se,Ht+=nt*Ee,Qt=Ht>>>13,Ht&=8191,Ht+=Nt*be,Ht+=kt*V,Ht+=Ut*le,Ht+=jt*de,Ht+=he*ue,Qt+=Ht>>>13,Ht&=8191,Qt=(Qt<<2)+Qt|0,Qt=Qt+Xt|0,Xt=Qt&8191,Qt=Qt>>>13,te+=Qt,Yt=Xt,Zt=te,Kt=ie,it=re,nt=ne,Nt=ae,kt=fe,Ut=Vt,jt=Wt,he=Ht,R+=16,q-=16;this.h[0]=Yt,this.h[1]=Zt,this.h[2]=Kt,this.h[3]=it,this.h[4]=nt,this.h[5]=Nt,this.h[6]=kt,this.h[7]=Ut,this.h[8]=jt,this.h[9]=he},v.prototype.finish=function(T,R){var q=new Uint16Array(10),_,O,N,et;if(this.leftover){for(et=this.leftover,this.buffer[et++]=1;et<16;et++)this.buffer[et]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(_=this.h[1]>>>13,this.h[1]&=8191,et=2;et<10;et++)this.h[et]+=_,_=this.h[et]>>>13,this.h[et]&=8191;for(this.h[0]+=_*5,_=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=_,_=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=_,q[0]=this.h[0]+5,_=q[0]>>>13,q[0]&=8191,et=1;et<10;et++)q[et]=this.h[et]+_,_=q[et]>>>13,q[et]&=8191;for(q[9]-=1<<13,O=(_^1)-1,et=0;et<10;et++)q[et]&=O;for(O=~O,et=0;et<10;et++)this.h[et]=this.h[et]&O|q[et];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,N=this.h[0]+this.pad[0],this.h[0]=N&65535,et=1;et<8;et++)N=(this.h[et]+this.pad[et]|0)+(N>>>16)|0,this.h[et]=N&65535;T[R+0]=this.h[0]>>>0&255,T[R+1]=this.h[0]>>>8&255,T[R+2]=this.h[1]>>>0&255,T[R+3]=this.h[1]>>>8&255,T[R+4]=this.h[2]>>>0&255,T[R+5]=this.h[2]>>>8&255,T[R+6]=this.h[3]>>>0&255,T[R+7]=this.h[3]>>>8&255,T[R+8]=this.h[4]>>>0&255,T[R+9]=this.h[4]>>>8&255,T[R+10]=this.h[5]>>>0&255,T[R+11]=this.h[5]>>>8&255,T[R+12]=this.h[6]>>>0&255,T[R+13]=this.h[6]>>>8&255,T[R+14]=this.h[7]>>>0&255,T[R+15]=this.h[7]>>>8&255},v.prototype.update=function(T,R,q){var _,O;if(this.leftover){for(O=16-this.leftover,O>q&&(O=q),_=0;_=16&&(O=q-q%16,this.blocks(T,R,O),R+=O,q-=O),q){for(_=0;_>16&1),N[q-1]&=65535;N[15]=et[15]-32767-(N[14]>>16&1),O=N[15]>>16&1,N[14]&=65535,g(et,N,1-O)}for(q=0;q<16;q++)T[2*q]=et[q]&255,T[2*q+1]=et[q]>>8}function f(T,R){var q=new Uint8Array(32),_=new Uint8Array(32);return l(q,T),l(_,R),Rt(q,0,_,0)}function c(T){var R=new Uint8Array(32);return l(R,T),R[0]&1}function I(T,R){var q;for(q=0;q<16;q++)T[q]=R[2*q]+(R[2*q+1]<<8);T[15]&=32767}function w(T,R,q){for(var _=0;_<16;_++)T[_]=R[_]+q[_]}function S(T,R,q){for(var _=0;_<16;_++)T[_]=R[_]-q[_]}function k(T,R,q){var _,O,N=0,et=0,H=0,z=0,zt=0,Dt=0,Jt=0,Qt=0,Xt=0,te=0,ie=0,re=0,ne=0,ae=0,fe=0,Vt=0,Wt=0,Ht=0,Yt=0,Zt=0,Kt=0,it=0,nt=0,Nt=0,kt=0,Ut=0,jt=0,he=0,ue=0,de=0,le=0,V=q[0],be=q[1],Ee=q[2],Se=q[3],pe=q[4],_e=q[5],Ie=q[6],er=q[7],Ue=q[8],Ze=q[9],We=q[10],Je=q[11],nr=q[12],mr=q[13],br=q[14],yr=q[15];_=R[0],N+=_*V,et+=_*be,H+=_*Ee,z+=_*Se,zt+=_*pe,Dt+=_*_e,Jt+=_*Ie,Qt+=_*er,Xt+=_*Ue,te+=_*Ze,ie+=_*We,re+=_*Je,ne+=_*nr,ae+=_*mr,fe+=_*br,Vt+=_*yr,_=R[1],et+=_*V,H+=_*be,z+=_*Ee,zt+=_*Se,Dt+=_*pe,Jt+=_*_e,Qt+=_*Ie,Xt+=_*er,te+=_*Ue,ie+=_*Ze,re+=_*We,ne+=_*Je,ae+=_*nr,fe+=_*mr,Vt+=_*br,Wt+=_*yr,_=R[2],H+=_*V,z+=_*be,zt+=_*Ee,Dt+=_*Se,Jt+=_*pe,Qt+=_*_e,Xt+=_*Ie,te+=_*er,ie+=_*Ue,re+=_*Ze,ne+=_*We,ae+=_*Je,fe+=_*nr,Vt+=_*mr,Wt+=_*br,Ht+=_*yr,_=R[3],z+=_*V,zt+=_*be,Dt+=_*Ee,Jt+=_*Se,Qt+=_*pe,Xt+=_*_e,te+=_*Ie,ie+=_*er,re+=_*Ue,ne+=_*Ze,ae+=_*We,fe+=_*Je,Vt+=_*nr,Wt+=_*mr,Ht+=_*br,Yt+=_*yr,_=R[4],zt+=_*V,Dt+=_*be,Jt+=_*Ee,Qt+=_*Se,Xt+=_*pe,te+=_*_e,ie+=_*Ie,re+=_*er,ne+=_*Ue,ae+=_*Ze,fe+=_*We,Vt+=_*Je,Wt+=_*nr,Ht+=_*mr,Yt+=_*br,Zt+=_*yr,_=R[5],Dt+=_*V,Jt+=_*be,Qt+=_*Ee,Xt+=_*Se,te+=_*pe,ie+=_*_e,re+=_*Ie,ne+=_*er,ae+=_*Ue,fe+=_*Ze,Vt+=_*We,Wt+=_*Je,Ht+=_*nr,Yt+=_*mr,Zt+=_*br,Kt+=_*yr,_=R[6],Jt+=_*V,Qt+=_*be,Xt+=_*Ee,te+=_*Se,ie+=_*pe,re+=_*_e,ne+=_*Ie,ae+=_*er,fe+=_*Ue,Vt+=_*Ze,Wt+=_*We,Ht+=_*Je,Yt+=_*nr,Zt+=_*mr,Kt+=_*br,it+=_*yr,_=R[7],Qt+=_*V,Xt+=_*be,te+=_*Ee,ie+=_*Se,re+=_*pe,ne+=_*_e,ae+=_*Ie,fe+=_*er,Vt+=_*Ue,Wt+=_*Ze,Ht+=_*We,Yt+=_*Je,Zt+=_*nr,Kt+=_*mr,it+=_*br,nt+=_*yr,_=R[8],Xt+=_*V,te+=_*be,ie+=_*Ee,re+=_*Se,ne+=_*pe,ae+=_*_e,fe+=_*Ie,Vt+=_*er,Wt+=_*Ue,Ht+=_*Ze,Yt+=_*We,Zt+=_*Je,Kt+=_*nr,it+=_*mr,nt+=_*br,Nt+=_*yr,_=R[9],te+=_*V,ie+=_*be,re+=_*Ee,ne+=_*Se,ae+=_*pe,fe+=_*_e,Vt+=_*Ie,Wt+=_*er,Ht+=_*Ue,Yt+=_*Ze,Zt+=_*We,Kt+=_*Je,it+=_*nr,nt+=_*mr,Nt+=_*br,kt+=_*yr,_=R[10],ie+=_*V,re+=_*be,ne+=_*Ee,ae+=_*Se,fe+=_*pe,Vt+=_*_e,Wt+=_*Ie,Ht+=_*er,Yt+=_*Ue,Zt+=_*Ze,Kt+=_*We,it+=_*Je,nt+=_*nr,Nt+=_*mr,kt+=_*br,Ut+=_*yr,_=R[11],re+=_*V,ne+=_*be,ae+=_*Ee,fe+=_*Se,Vt+=_*pe,Wt+=_*_e,Ht+=_*Ie,Yt+=_*er,Zt+=_*Ue,Kt+=_*Ze,it+=_*We,nt+=_*Je,Nt+=_*nr,kt+=_*mr,Ut+=_*br,jt+=_*yr,_=R[12],ne+=_*V,ae+=_*be,fe+=_*Ee,Vt+=_*Se,Wt+=_*pe,Ht+=_*_e,Yt+=_*Ie,Zt+=_*er,Kt+=_*Ue,it+=_*Ze,nt+=_*We,Nt+=_*Je,kt+=_*nr,Ut+=_*mr,jt+=_*br,he+=_*yr,_=R[13],ae+=_*V,fe+=_*be,Vt+=_*Ee,Wt+=_*Se,Ht+=_*pe,Yt+=_*_e,Zt+=_*Ie,Kt+=_*er,it+=_*Ue,nt+=_*Ze,Nt+=_*We,kt+=_*Je,Ut+=_*nr,jt+=_*mr,he+=_*br,ue+=_*yr,_=R[14],fe+=_*V,Vt+=_*be,Wt+=_*Ee,Ht+=_*Se,Yt+=_*pe,Zt+=_*_e,Kt+=_*Ie,it+=_*er,nt+=_*Ue,Nt+=_*Ze,kt+=_*We,Ut+=_*Je,jt+=_*nr,he+=_*mr,ue+=_*br,de+=_*yr,_=R[15],Vt+=_*V,Wt+=_*be,Ht+=_*Ee,Yt+=_*Se,Zt+=_*pe,Kt+=_*_e,it+=_*Ie,nt+=_*er,Nt+=_*Ue,kt+=_*Ze,Ut+=_*We,jt+=_*Je,he+=_*nr,ue+=_*mr,de+=_*br,le+=_*yr,N+=38*Wt,et+=38*Ht,H+=38*Yt,z+=38*Zt,zt+=38*Kt,Dt+=38*it,Jt+=38*nt,Qt+=38*Nt,Xt+=38*kt,te+=38*Ut,ie+=38*jt,re+=38*he,ne+=38*ue,ae+=38*de,fe+=38*le,O=1,_=N+O+65535,O=Math.floor(_/65536),N=_-O*65536,_=et+O+65535,O=Math.floor(_/65536),et=_-O*65536,_=H+O+65535,O=Math.floor(_/65536),H=_-O*65536,_=z+O+65535,O=Math.floor(_/65536),z=_-O*65536,_=zt+O+65535,O=Math.floor(_/65536),zt=_-O*65536,_=Dt+O+65535,O=Math.floor(_/65536),Dt=_-O*65536,_=Jt+O+65535,O=Math.floor(_/65536),Jt=_-O*65536,_=Qt+O+65535,O=Math.floor(_/65536),Qt=_-O*65536,_=Xt+O+65535,O=Math.floor(_/65536),Xt=_-O*65536,_=te+O+65535,O=Math.floor(_/65536),te=_-O*65536,_=ie+O+65535,O=Math.floor(_/65536),ie=_-O*65536,_=re+O+65535,O=Math.floor(_/65536),re=_-O*65536,_=ne+O+65535,O=Math.floor(_/65536),ne=_-O*65536,_=ae+O+65535,O=Math.floor(_/65536),ae=_-O*65536,_=fe+O+65535,O=Math.floor(_/65536),fe=_-O*65536,_=Vt+O+65535,O=Math.floor(_/65536),Vt=_-O*65536,N+=O-1+37*(O-1),O=1,_=N+O+65535,O=Math.floor(_/65536),N=_-O*65536,_=et+O+65535,O=Math.floor(_/65536),et=_-O*65536,_=H+O+65535,O=Math.floor(_/65536),H=_-O*65536,_=z+O+65535,O=Math.floor(_/65536),z=_-O*65536,_=zt+O+65535,O=Math.floor(_/65536),zt=_-O*65536,_=Dt+O+65535,O=Math.floor(_/65536),Dt=_-O*65536,_=Jt+O+65535,O=Math.floor(_/65536),Jt=_-O*65536,_=Qt+O+65535,O=Math.floor(_/65536),Qt=_-O*65536,_=Xt+O+65535,O=Math.floor(_/65536),Xt=_-O*65536,_=te+O+65535,O=Math.floor(_/65536),te=_-O*65536,_=ie+O+65535,O=Math.floor(_/65536),ie=_-O*65536,_=re+O+65535,O=Math.floor(_/65536),re=_-O*65536,_=ne+O+65535,O=Math.floor(_/65536),ne=_-O*65536,_=ae+O+65535,O=Math.floor(_/65536),ae=_-O*65536,_=fe+O+65535,O=Math.floor(_/65536),fe=_-O*65536,_=Vt+O+65535,O=Math.floor(_/65536),Vt=_-O*65536,N+=O-1+37*(O-1),T[0]=N,T[1]=et,T[2]=H,T[3]=z,T[4]=zt,T[5]=Dt,T[6]=Jt,T[7]=Qt,T[8]=Xt,T[9]=te,T[10]=ie,T[11]=re,T[12]=ne,T[13]=ae,T[14]=fe,T[15]=Vt}function E(T,R){k(T,R,R)}function L(T,R){var q=t(),_;for(_=0;_<16;_++)q[_]=R[_];for(_=253;_>=0;_--)E(q,q),_!==2&&_!==4&&k(q,q,R);for(_=0;_<16;_++)T[_]=q[_]}function $(T,R){var q=t(),_;for(_=0;_<16;_++)q[_]=R[_];for(_=250;_>=0;_--)E(q,q),_!==1&&k(q,q,R);for(_=0;_<16;_++)T[_]=q[_]}function F(T,R,q){var _=new Uint8Array(32),O=new Float64Array(80),N,et,H=t(),z=t(),zt=t(),Dt=t(),Jt=t(),Qt=t();for(et=0;et<31;et++)_[et]=R[et];for(_[31]=R[31]&127|64,_[0]&=248,I(O,q),et=0;et<16;et++)z[et]=O[et],Dt[et]=H[et]=zt[et]=0;for(H[0]=Dt[0]=1,et=254;et>=0;--et)N=_[et>>>3]>>>(et&7)&1,g(H,z,N),g(zt,Dt,N),w(Jt,H,zt),S(H,H,zt),w(zt,z,Dt),S(z,z,Dt),E(Dt,Jt),E(Qt,H),k(H,zt,H),k(zt,z,Jt),w(Jt,H,zt),S(H,H,zt),E(z,H),S(zt,Dt,Qt),k(H,zt,b),w(H,H,Dt),k(zt,zt,H),k(H,Dt,Qt),k(Dt,z,O),E(z,Jt),g(H,z,N),g(zt,Dt,N);for(et=0;et<16;et++)O[et+16]=H[et],O[et+32]=zt[et],O[et+48]=z[et],O[et+64]=Dt[et];var Xt=O.subarray(32),te=O.subarray(16);return L(Xt,Xt),k(te,te,Xt),l(T,te),0}function Q(T,R){return F(T,R,n)}function Ft(T,R){return r(R,32),Q(T,R)}function Y(T,R,q){var _=new Uint8Array(32);return F(_,q,R),Lt(T,a,_,ee)}var G=h,se=s;function W(T,R,q,_,O,N){var et=new Uint8Array(32);return Y(et,O,N),G(T,R,q,_,et)}function X(T,R,q,_,O,N){var et=new Uint8Array(32);return Y(et,O,N),se(T,R,q,_,et)}var Ne=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function At(T,R,q,_){for(var O=new Int32Array(16),N=new Int32Array(16),et,H,z,zt,Dt,Jt,Qt,Xt,te,ie,re,ne,ae,fe,Vt,Wt,Ht,Yt,Zt,Kt,it,nt,Nt,kt,Ut,jt,he=T[0],ue=T[1],de=T[2],le=T[3],V=T[4],be=T[5],Ee=T[6],Se=T[7],pe=R[0],_e=R[1],Ie=R[2],er=R[3],Ue=R[4],Ze=R[5],We=R[6],Je=R[7],nr=0;_>=128;){for(Zt=0;Zt<16;Zt++)Kt=8*Zt+nr,O[Zt]=q[Kt+0]<<24|q[Kt+1]<<16|q[Kt+2]<<8|q[Kt+3],N[Zt]=q[Kt+4]<<24|q[Kt+5]<<16|q[Kt+6]<<8|q[Kt+7];for(Zt=0;Zt<80;Zt++)if(et=he,H=ue,z=de,zt=le,Dt=V,Jt=be,Qt=Ee,Xt=Se,te=pe,ie=_e,re=Ie,ne=er,ae=Ue,fe=Ze,Vt=We,Wt=Je,it=Se,nt=Je,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=(V>>>14|Ue<<32-14)^(V>>>18|Ue<<32-18)^(Ue>>>41-32|V<<32-(41-32)),nt=(Ue>>>14|V<<32-14)^(Ue>>>18|V<<32-18)^(V>>>41-32|Ue<<32-(41-32)),Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,it=V&be^~V&Ee,nt=Ue&Ze^~Ue&We,Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,it=Ne[Zt*2],nt=Ne[Zt*2+1],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,it=O[Zt%16],nt=N[Zt%16],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,Ht=Ut&65535|jt<<16,Yt=Nt&65535|kt<<16,it=Ht,nt=Yt,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=(he>>>28|pe<<32-28)^(pe>>>34-32|he<<32-(34-32))^(pe>>>39-32|he<<32-(39-32)),nt=(pe>>>28|he<<32-28)^(he>>>34-32|pe<<32-(34-32))^(he>>>39-32|pe<<32-(39-32)),Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,it=he&ue^he&de^ue&de,nt=pe&_e^pe&Ie^_e&Ie,Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,Xt=Ut&65535|jt<<16,Wt=Nt&65535|kt<<16,it=zt,nt=ne,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=Ht,nt=Yt,Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,zt=Ut&65535|jt<<16,ne=Nt&65535|kt<<16,ue=et,de=H,le=z,V=zt,be=Dt,Ee=Jt,Se=Qt,he=Xt,_e=te,Ie=ie,er=re,Ue=ne,Ze=ae,We=fe,Je=Vt,pe=Wt,Zt%16===15)for(Kt=0;Kt<16;Kt++)it=O[Kt],nt=N[Kt],Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=O[(Kt+9)%16],nt=N[(Kt+9)%16],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,Ht=O[(Kt+1)%16],Yt=N[(Kt+1)%16],it=(Ht>>>1|Yt<<32-1)^(Ht>>>8|Yt<<32-8)^Ht>>>7,nt=(Yt>>>1|Ht<<32-1)^(Yt>>>8|Ht<<32-8)^(Yt>>>7|Ht<<32-7),Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,Ht=O[(Kt+14)%16],Yt=N[(Kt+14)%16],it=(Ht>>>19|Yt<<32-19)^(Yt>>>61-32|Ht<<32-(61-32))^Ht>>>6,nt=(Yt>>>19|Ht<<32-19)^(Ht>>>61-32|Yt<<32-(61-32))^(Yt>>>6|Ht<<32-6),Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,O[Kt]=Ut&65535|jt<<16,N[Kt]=Nt&65535|kt<<16;it=he,nt=pe,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[0],nt=R[0],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[0]=he=Ut&65535|jt<<16,R[0]=pe=Nt&65535|kt<<16,it=ue,nt=_e,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[1],nt=R[1],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[1]=ue=Ut&65535|jt<<16,R[1]=_e=Nt&65535|kt<<16,it=de,nt=Ie,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[2],nt=R[2],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[2]=de=Ut&65535|jt<<16,R[2]=Ie=Nt&65535|kt<<16,it=le,nt=er,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[3],nt=R[3],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[3]=le=Ut&65535|jt<<16,R[3]=er=Nt&65535|kt<<16,it=V,nt=Ue,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[4],nt=R[4],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[4]=V=Ut&65535|jt<<16,R[4]=Ue=Nt&65535|kt<<16,it=be,nt=Ze,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[5],nt=R[5],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[5]=be=Ut&65535|jt<<16,R[5]=Ze=Nt&65535|kt<<16,it=Ee,nt=We,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[6],nt=R[6],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[6]=Ee=Ut&65535|jt<<16,R[6]=We=Nt&65535|kt<<16,it=Se,nt=Je,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[7],nt=R[7],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[7]=Se=Ut&65535|jt<<16,R[7]=Je=Nt&65535|kt<<16,nr+=128,_-=128}return _}function at(T,R,q){var _=new Int32Array(8),O=new Int32Array(8),N=new Uint8Array(256),et,H=q;for(_[0]=1779033703,_[1]=3144134277,_[2]=1013904242,_[3]=2773480762,_[4]=1359893119,_[5]=2600822924,_[6]=528734635,_[7]=1541459225,O[0]=4089235720,O[1]=2227873595,O[2]=4271175723,O[3]=1595750129,O[4]=2917565137,O[5]=725511199,O[6]=4215389547,O[7]=327033209,At(_,O,R,q),q%=128,et=0;et=0;--O)_=q[O/8|0]>>(O&7)&1,_t(T,R,_),Te(R,T),Te(T,T),_t(T,R,_)}function dt(T,R){var q=[t(),t(),t(),t()];u(q[0],C),u(q[1],D),u(q[2],m),k(q[3],C,D),De(T,q,R)}function mt(T,R,q){var _=new Uint8Array(64),O=[t(),t(),t(),t()],N;for(q||r(R,32),at(_,R,32),_[0]&=248,_[31]&=127,_[31]|=64,dt(O,_),gt(T,O),N=0;N<32;N++)R[N+32]=T[N];return 0}var Oe=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function bt(T,R){var q,_,O,N;for(_=63;_>=32;--_){for(q=0,O=_-32,N=_-12;O>4)*Oe[O],q=R[O]>>8,R[O]&=255;for(O=0;O<32;O++)R[O]-=q*Oe[O];for(_=0;_<32;_++)R[_+1]+=R[_]>>8,T[_]=R[_]&255}function yt(T){var R=new Float64Array(64),q;for(q=0;q<64;q++)R[q]=T[q];for(q=0;q<64;q++)T[q]=0;bt(T,R)}function Fe(T,R,q,_){var O=new Uint8Array(64),N=new Uint8Array(64),et=new Uint8Array(64),H,z,zt=new Float64Array(64),Dt=[t(),t(),t(),t()];at(O,_,32),O[0]&=248,O[31]&=127,O[31]|=64;var Jt=q+64;for(H=0;H>7&&S(T[0],d,T[0]),k(T[3],T[0],T[1]),0)}function xt(T,R,q,_){var O,N=new Uint8Array(32),et=new Uint8Array(64),H=[t(),t(),t(),t()],z=[t(),t(),t(),t()];if(q<64||St(z,_))return-1;for(O=0;O=0},e.sign.keyPair=function(){var T=new Uint8Array(ot),R=new Uint8Array(st);return mt(T,R),{publicKey:T,secretKey:R}},e.sign.keyPair.fromSecretKey=function(T){if(ft(T),T.length!==st)throw new Error("bad secret key size");for(var R=new Uint8Array(ot),q=0;q{M();(function(e,t){"use strict";typeof ju<"u"&&ju.exports?ju.exports=t(A_()):e.ed2curve=t(e.nacl)})(__,function(e){"use strict";if(!e)throw new Error("tweetnacl not loaded");var t=function(rt){var v,i=new Float64Array(16);if(rt)for(v=0;v=0;o--)K(i,i),o!==2&&o!==4&&D(i,i,v);for(o=0;o<16;o++)rt[o]=i[o]}function Z(rt,v){var i,o,h,s=t(),u=t();for(i=0;i<16;i++)u[i]=v[i];for(m(u),m(u),m(u),o=0;o<2;o++){for(s[0]=u[0]-65517,i=1;i<15;i++)s[i]=u[i]-65535-(s[i-1]>>16&1),s[i-1]&=65535;s[15]=u[15]-32767-(s[14]>>16&1),h=s[15]>>16&1,s[14]&=65535,b(u,s,1-h)}for(i=0;i<16;i++)rt[2*i]=u[i]&255,rt[2*i+1]=u[i]>>8}function qt(rt){var v=new Uint8Array(32);return Z(v,rt),v[0]&1}function Rt(rt,v,i,o,h){var s,u=0;for(s=0;s>>8)-1}function J(rt,v,i,o){return Rt(rt,v,i,o,32)}function Ot(rt,v){var i=new Uint8Array(32),o=new Uint8Array(32);return Z(i,rt),Z(o,v),J(i,0,o,0)}function ht(rt,v){var i=t(),o;for(o=0;o<16;o++)i[o]=v[o];for(o=250;o>=0;o--)K(i,i),o!==1&&D(i,i,v);for(o=0;o<16;o++)rt[o]=i[o]}function Lt(rt,v){var i;for(i=0;i<16;i++)rt[i]=v[i]|0}function ee(rt,v){var i=t(),o=t(),h=t(),s=t(),u=t(),p=t(),g=t();return Lt(rt[2],a),A(rt[1],v),K(h,rt[1]),D(s,h,n),C(h,h,rt[2]),B(s,rt[2],s),K(u,s),K(p,u),D(g,p,u),D(i,g,h),D(i,i,s),ht(i,i),D(i,i,h),D(i,i,s),D(i,i,s),D(rt[0],i,s),K(o,rt[0]),D(o,o,s),Ot(o,h)&&D(rt[0],rt[0],d),K(o,rt[0]),D(o,o,s),Ot(o,h)?-1:(qt(rt[0])===v[31]>>7&&C(rt[0],r,rt[0]),D(rt[3],rt[0],rt[1]),0)}function $t(rt){var v=new Uint8Array(32),i=[t(),t(),t(),t()],o=t(),h=t();if(ee(i,rt))return null;var s=i[1];return B(o,a,s),C(h,a,s),j(h,h),D(o,o,h),Z(v,o),v}function Gt(rt){var v=new Uint8Array(64),i=new Uint8Array(32),o;for(e.lowlevel.crypto_hash(v,rt,32),v[0]&=248,v[31]&=127,v[31]|=64,o=0;o<32;o++)i[o]=v[o];for(o=0;o<64;o++)v[o]=0;return i}function tt(rt){var v=$t(rt.publicKey);return v?{publicKey:v,secretKey:Gt(rt.secretKey)}:null}return{convertPublicKey:$t,convertSecretKey:Gt,convertKeyPair:tt}})});var T_=P(kp=>{"use strict";M();Object.defineProperty(kp,"__esModule",{value:!0});function Zj(e){var t=4,r=e.length,a=r%t;if(!a)return e;var n=r,d=t-a,m=r+d,b=U.alloc(m);for(b.write(e);d--;)b.write("=",n++);return b.toString()}kp.default=Zj});var D_=P(Lp=>{"use strict";M();Object.defineProperty(Lp,"__esModule",{value:!0});var Wj=T_();function O_(e,t){return t===void 0&&(t="utf8"),U.isBuffer(e)?Pp(e.toString("base64")):Pp(U.from(e,t).toString("base64"))}function Jj(e,t){return t===void 0&&(t="utf8"),U.from(Up(e),"base64").toString(t)}function Up(e){return e=e.toString(),Wj.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function Pp(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function Xj(e){return U.from(Up(e),"base64")}var ho=O_;ho.encode=O_;ho.decode=Jj;ho.toBase64=Up;ho.fromBase64=Pp;ho.toBuffer=Xj;Lp.default=ho});var k_=P((zft,el)=>{M();el.exports=D_().default;el.exports.default=el.exports});M();M();var pn=$r(pl(),1),Ma=$r(Nd(),1);var m8={};zp(m8,{concatUint8Arrays:()=>Le,decodeInt32:()=>Fd,encodeInt32:()=>Hi,encodeInt64:()=>nh,fromBigInt:()=>FD,hexToUint8Array:()=>qe,isHex:()=>we,originPrivateKey:()=>LD,toBigInt:()=>ND,toByteArray:()=>jn,uint8ArrayToHex:()=>Qe});M();var g8=[];for(let e=0;e<=255;++e){let t=e.toString(16).padStart(2,"0");g8.push(t)}var LD="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function we(e){return/^([0-9A-Fa-f])*$/.test(e)}function qe(e){return new Uint8Array(e.match(/.{1,2}/g).map(t=>parseInt(t,16)))}function Qe(e){let t=new Uint8Array(e),r=new Array(t.length);for(let a=0;aa+n.byteLength,0),{buffer:r}=e.reduce(({buffer:a,pos:n},d)=>(a.set(new Uint8Array(d),n),{buffer:a,pos:n+d.byteLength}),{buffer:new Uint8Array(t),pos:0});return r}function Hi(e){let t=new ArrayBuffer(4);return new DataView(t).setUint32(0,e,!0),new Uint8Array(t).reverse()}function nh(e){let t=new ArrayBuffer(8);return new DataView(t).setBigInt64(0,BigInt(e),!0),new Uint8Array(t).reverse()}function Fd(e){let t=0;for(let r=0;r=256;)e=e>>>8,t.unshift(e&255);return t}async function b8(e){let t=new URL("/api",e);return(0,pn.default)(t,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { nearestEndpoints { ip, port } - }`})}).then(zn).then(r=>r.errors||r.data.nearestEndpoints==null?[]:r.data.nearestEndpoints)}async function t5(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - lastTransaction(address: "${t}") { + }`})}).then(zn).then(r=>r.errors||r.data.nearestEndpoints==null?[]:r.data.nearestEndpoints)}async function y8(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof e=="string"&&!we(e))throw"'address' must be in hexadecimal form if it's string";e instanceof Uint8Array&&(e=Qe(e));let r=new URL("/api",t);return(0,pn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + lastTransaction(address: "${e}") { chainLength } - }`})}).then(zn).then(i=>i.errors||i.data.lastTransaction==null?0:i.data.lastTransaction.chainLength)}async function r5(t){let e=new URL("/api",t);return(0,bn.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(zn).then(a=>a.errors||a.data.lastTransaction==null?0:a.data.lastTransaction.chainLength)}async function x8(e){let t=new URL("/api",e);return(0,pn.default)(t,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { sharedSecrets { storageNoncePublicKey } - }`})}).then(zn).then(r=>r.errors||r.data.sharedSecrets==null?"":r.data.sharedSecrets.storageNoncePublicKey)}async function i5(t,e){let r=new URL("/api/transaction_fee",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(zn)}async function n5(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - transaction(address: "${t}") { + }`})}).then(zn).then(r=>r.errors||r.data.sharedSecrets==null?"":r.data.sharedSecrets.storageNoncePublicKey)}async function w8(e,t){let r=new URL("/api/transaction_fee",t);return(0,pn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(zn)}async function M8(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof e=="string"&&!we(e))throw"'address' must be in hexadecimal form if it's string";e instanceof Uint8Array&&(e=Qe(e));let r=new URL("/api",t);return(0,pn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + transaction(address: "${e}") { data { ownerships { secret, @@ -29,12 +29,12 @@ use chrome, FireFox or Internet Explorer 11`)}var L9=vt(),F9=qf(),N9=L9.Buffer,Q } } } - }`})}).then(zn).then(i=>i.errors||i.data==null?[]:i.data.transaction.data.ownerships)}async function f5(t,e){if(typeof t!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - token(address: "${t}") { + }`})}).then(zn).then(a=>a.errors||a.data==null?[]:a.data.transaction.data.ownerships)}async function A8(e,t){if(typeof e!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"&&!we(e))throw"'address' must be in hexadecimal form if it's string";e instanceof Uint8Array&&(e=Qe(e));let r=new URL("/api",t);return(0,pn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + token(address: "${e}") { genesis, name, symbol, supply, type properties, collection, id, decimals } - }`})}).then(zn).then(i=>i.errors||i.data==null?[]:i.data.token)}async function a5(t,e,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'originPublicKey' must be in hexadecimal form if it's string";if(t instanceof Uint8Array&&(t=jt(t)),typeof e!="string")throw"'certificate' must be a string";let i=new URL("/api/origin_key",r);return(0,bn.default)(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:t,certificate:e})}).then(zn)}async function o5(t,e=void 0){let r;e===void 0?r=`query { + }`})}).then(zn).then(a=>a.errors||a.data==null?[]:a.data.token)}async function _8(e,t,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof e=="string"&&!we(e))throw"'originPublicKey' must be in hexadecimal form if it's string";if(e instanceof Uint8Array&&(e=Qe(e)),typeof t!="string")throw"'certificate' must be a string";let a=new URL("/api/origin_key",r);return(0,pn.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:e,certificate:t})}).then(zn)}async function I8(e,t=void 0){let r;t===void 0?r=`query { oracleData { timestamp, services { @@ -45,7 +45,7 @@ use chrome, FireFox or Internet Explorer 11`)}var L9=vt(),F9=qf(),N9=L9.Buffer,Q } } }`:r=`query { - oracleData(timestamp: ${e}) { + oracleData(timestamp: ${t}) { services { uco { eur, @@ -53,7 +53,7 @@ use chrome, FireFox or Internet Explorer 11`)}var L9=vt(),F9=qf(),N9=L9.Buffer,Q } } } - }`;let i=new URL("/api",t);return(0,bn.default)(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:r})}).then(zn).then(n=>n.data.oracleData==null?{}:n.data.oracleData)}async function s5(t,e){let{host:r,protocol:i}=new URL(t),n=i=="https:"?"wss":"ws",a=(0,xa.absintheCreate)(`${n}://${r}/socket`),c=(0,xa.absintheSend)(a,` + }`;let a=new URL("/api",e);return(0,pn.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:r})}).then(zn).then(n=>n.data.oracleData==null?{}:n.data.oracleData)}async function E8(e,t){let{host:r,protocol:a}=new URL(e),n=a=="https:"?"wss":"ws",d=(0,Ma.absintheCreate)(`${n}://${r}/socket`),b=(0,Ma.absintheSend)(d,` subscription { oracleUpdate { timestamp, @@ -65,21 +65,21 @@ use chrome, FireFox or Internet Explorer 11`)}var L9=vt(),F9=qf(),N9=L9.Buffer,Q } } } - `);return(0,xa.absintheObserve)(a,c,m=>{e(m.data.oracelUpdate)})}async function zn(t){return new Promise(function(e,r){t.status>=200&&t.status<=299?t.json().then(e):r(t.statusText)})}var Q_={};Sv(Q_,{IDToCurve:()=>gv,IDToHashAlgo:()=>bv,aesDecrypt:()=>Gh,aesEncrypt:()=>zh,curveToID:()=>no,deriveAddress:()=>ia,deriveKeyPair:()=>na,ecDecrypt:()=>Hh,ecEncrypt:()=>jh,generateDeterministicKeyPair:()=>Kh,getHashDigest:()=>N_,hash:()=>Qh,hashAlgoToID:()=>Nh,randomSecretKey:()=>Lh,sign:()=>fo,verify:()=>dj});g();var $t=$r(tv(),1),U_=$r(Ms(),1),k_=$r($9(),1),F_=$r(y_(),1),Fs=$r(T_(),1),dv=$r(P_(),1);var{ec:L_,eddsa:oj}=U_.default,lv=new oj("ed25519"),pv=new L_("p256"),vv=new L_("secp256k1"),{sha3_512:sj,sha3_256:uj}=k_.default,hj=1;function Lh(){return new Uint8Array((0,$t.randomBytes)(32))}function Nh(t){switch(t){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function bv(t){switch(t){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function no(t){switch(t){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function gv(t){switch(t){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function ia(t,e,r="ed25519",i="sha256"){let{publicKey:n}=na(t,e,r),a=no(r),o=Qh(n,i);return Kt([Uint8Array.from([a]),Uint8Array.from(o)])}function Qh(t,e="sha256"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t));let r=Nh(e),i=N_(t,e);return Kt([Uint8Array.from([r]),Uint8Array.from(i)])}function N_(t,e){switch(e){case"sha256":{let r=(0,$t.createHash)(e);return r.update(t),r.digest()}case"sha512":{let r=(0,$t.createHash)(e);return r.update(t),r.digest()}case"sha3-256":{let r=uj.create();return r.update(t),r.digest()}case"sha3-512":{let r=sj.create();return r.update(t),r.digest()}case"blake2b":{let r=new Uint8Array(64),i=(0,F_.default)(64);return i.update(t),i.digest(r),r}default:throw"Hash algorithm not supported"}}function na(t,e,r="ed25519"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'seed must be a string";if(typeof e!="number"||e<0)throw"'index' must be a positive number";let i=lj(t,e);return Kh(i,r,hj)}function Kh(t,e,r){let i=no(e),{publicKey:n,privateKey:a}=cj(t,e);return{privateKey:Kt([Uint8Array.from([i]),Uint8Array.from([r]),a]),publicKey:Kt([Uint8Array.from([i]),Uint8Array.from([r]),n])}}function cj(t,e){switch(e){case"ed25519":{let r=lv.keyFromSecret(t),i=new Uint8Array(r.pubBytes());return{privateKey:t,publicKey:i}}case"P256":{let r=pv.keyFromPrivate(t),i=Nt(r.getPublic().encode("hex"));return{privateKey:t,publicKey:i}}case"secp256k1":{let r=vv.keyFromPrivate(t),i=Nt(r.getPublic().encode("hex"));return{privateKey:t,publicKey:i}}default:throw"Curve not supported"}}function fo(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'privateKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let n=lv.keyFromSecret(i);return Uint8Array.from(n.sign(t).toBytes())}case 1:{let n=(0,$t.createHash)("sha256").update(t).digest(),a=pv.keyFromPrivate(i);return Uint8Array.from(a.sign(n).toDER())}case 2:{let n=(0,$t.createHash)("sha256").update(t).digest(),a=vv.keyFromPrivate(i);return Uint8Array.from(a.sign(n).toDER())}default:throw"Curve not supported"}}function dj(t,e,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'signature' must be an hexadecimal string";if(typeof e=="string"&&(Mt(e)?e=Nt(e):e=new TextEncoder().encode(e)),typeof r=="string")if(Mt(r))r=Nt(r);else throw"'publicKey' must be an hexadecimal string";let i=r.slice(0,1),n=r.slice(2,r.length);switch(i[0]){case 0:return lv.keyFromPublic(Array.from(n)).verify(e,Array.from(t));case 1:{let a=(0,$t.createHash)("sha256").update(e).digest();return pv.keyFromPublic(n).verify(a,t)}case 2:{let a=(0,$t.createHash)("sha256").update(e).digest();return vv.keyFromPublic(n).verify(a,t)}default:throw"Curve not supported"}}function jh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'publicKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let{public:n,private:a}=Fs.generateKeyPair((0,$t.randomBytes)(32)),o=dv.default.convertPublicKey(i),c=Fs.sharedKey(a,o),{aesKey:m,iv:M}=io(c),{tag:B,encrypted:R}=kh(t,m,M);return Kt([Uint8Array.from(n),B,R])}case 1:{let n=(0,$t.createECDH)("prime256v1");n.generateKeys();let a=n.computeSecret(i),{aesKey:o,iv:c}=io(a),{tag:m,encrypted:M}=kh(t,o,c);return Kt([Uint8Array.from(n.getPublicKey()),m,M])}case 2:{let n=(0,$t.createECDH)("secp256k1");n.generateKeys();let a=n.computeSecret(i),{aesKey:o,iv:c}=io(a),{tag:m,encrypted:M}=kh(t,o,c);return Kt([Uint8Array.from(n.getPublicKey()),m,M])}default:throw"Curve not supported"}}function Hh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'ciphertext' must be an hexadecimal string";if(typeof e=="string")if(Mt(e))e=Nt(e);else throw"'privateKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let n=t.slice(0,32),a=t.slice(32,32+16),o=t.slice(32+16,t.length),c=dv.default.convertSecretKey(i),m=Fs.sharedKey(c,n),{aesKey:M,iv:B}=io(m);return Fh(o,M,B,a)}case 1:{let n=t.slice(0,65),a=t.slice(65,65+16),o=t.slice(65+16,t.length),c=(0,$t.createECDH)("prime256v1");c.setPrivateKey(i);let m=c.computeSecret(n),{aesKey:M,iv:B}=io(m);return Fh(o,M,B,a)}case 2:{let n=t.slice(0,65),a=t.slice(65,65+16),o=t.slice(65+16,t.length),c=(0,$t.createECDH)("secp256k1");c.setPrivateKey(i);let m=c.computeSecret(n),{aesKey:M,iv:B}=io(m);return Fh(o,M,B,a)}default:throw"Curve not supported"}}function zh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'key' must be an hexadecimal string";let r=(0,$t.randomBytes)(12),{tag:i,encrypted:n}=kh(t,e,r);return Kt([new Uint8Array(r),i,n])}function Gh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'cipherText' must be an hexadecimal string";if(typeof e=="string")if(Mt(e))e=Nt(e);else throw"'key' must be an be hexadecimal string";let r=t.slice(0,12),i=t.slice(12,12+16),n=t.slice(28,t.length);return Fh(n,e,r,i)}function lj(t,e){Mt(t)&&(t=Nt(t));let r=(0,$t.createHash)("sha512").update(t).digest(),i=r.subarray(0,32),n=r.subarray(32,64),a=ji(e),o=Kt([i,a]);return(0,$t.createHmac)("sha512",n).update(o).digest().subarray(0,32)}function io(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'sharedKey' must be an hexadecimal string";let e=(0,$t.createHash)("sha256").update(t).digest(),r=(0,$t.createHmac)("sha256",e).update("0").digest().subarray(0,32),i=(0,$t.createHmac)("sha256",r).update("1").digest().subarray(0,32);return{iv:r,aesKey:i}}function kh(t,e,r){let i=(0,$t.createCipheriv)("aes-256-gcm",e,r),n=i.update(t);return n=Kt([n,i.final()]),{tag:new Uint8Array(i.getAuthTag()),encrypted:n}}function Fh(t,e,r,i){let n=(0,$t.createDecipheriv)("aes-256-gcm",e,r);n.setAuthTag(i);let a=[n.update(t)];return a.push(n.final()),Kt(a)}g();g();var $h=$r(tv(),1),so=$r(z_(),1),yj=0,df=class{constructor(e,r=1){e instanceof Uint8Array||(e=new TextEncoder().encode(e)),this.version=r,this.seed=e,this.services={}}addService(e,r,i="ed25519",n="sha256"){return this.services[e]={derivationPath:r,curve:i,hashAlgo:n},this}encode(){let e=[];for(let r in this.services){let{derivationPath:i,curve:n,hashAlgo:a}=this.services[r];e.push(Kt([Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([i.length]),new TextEncoder().encode(i),Uint8Array.from([no(n)]),Uint8Array.from([Nh(a)])]))}return Kt([ji(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),Kt(e)])}deriveKeypair(e,r=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:i,curve:n}=this.services[e];return Av(this.seed,i,r,n)}deriveAddress(e,r=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:i,curve:n,hashAlgo:a}=this.services[e],{publicKey:o}=Av(this.seed,i,r,n),c=no(n),m=Qh(o,a);return Kt([Uint8Array.from([c]),Uint8Array.from(m)])}buildTransaction(e,r,i){let n=this.deriveKeypair(r,i),a=this.deriveAddress(r,i+1);e.setAddress(a);let o=e.previousSignaturePayload(),c=fo(o,n.privateKey);return e.setPreviousSignatureAndPreviousPublicKey(c,n.publicKey),e}static decode(e){var o=0,{bytes:r,pos:o}=Vh(e,o,4),{byte:i,pos:o}=oo(e,o,1),{bytes:n,pos:o}=Vh(e,o,i),{byte:a,pos:o}=oo(e,o,1);let c=new df(n,Tl(r));for(let G=0;GM.replace("'","")).at(1);if(m=="650"){let{publicKey:M}=Av(this.seed,o,0,c);i.push({id:`did:archethic:${r}#${a}`,type:"JsonWebKey2020",publicKeyJwk:xj(M,a),controller:`did:archethic:${r}`}),n.push(`did:archethic:${r}#${a}`)}else throw"Purpose '"+m+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${r}`,authentication:n,verificationMethod:i}}};function oo(t,e,r){return{byte:t.slice(e,e+r)[0],pos:e+r}}function Vh(t,e,r){return{bytes:t.slice(e,e+r),pos:e+r}}function Av(t,e,r,i="ed25519"){let n=(0,$h.createHash)("sha256").update(mj(e,r)).digest(),a=(0,$h.createHmac)("sha512",t).update(n).digest().subarray(0,32);return Kh(a,i,yj)}function mj(t,e){return t.split("/").slice(0,-1).concat(`${e}`).join("/")}function xj(t,e){let r=t[0],i=t.slice(2,t.length);switch(r){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,so.default)(i),kid:e};case 1:return x=i.subarray(16),y=i.subarray(-16),{kty:"EC",crv:"P-256",x:(0,so.default)(x),y:(0,so.default)(y),kid:e};case 2:return x=i.subarray(16),y=i.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,so.default)(x),y:(0,so.default)(y),kid:e}}}var Ls=class{constructor(e){this.core=e}newKeychainTransaction(e,r){let i=new df(e);i.addService("uco","m/650'/0/0");let n=Lh(),a=r.map(o=>({publicKey:o,encryptedSecretKey:jh(n,o)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(i.toDID())).addOwnership(zh(i.encode(),n),a).build(e,0)}newAccessTransaction(e,r){let i=Lh(),{publicKey:n}=na(e,0),a=jh(i,n),o=[{publicKey:n,encryptedSecretKey:a}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(zh(r,i),o).build(e,0)}async getKeychain(e){let{publicKey:r,privateKey:i}=na(e,0),n=ia(e,1),a=await this.core.transaction.getTransactionOwnerships(n);if(a.length==0)throw"Keychain doesn't exist";let{secret:o,authorizedPublicKeys:c}=a[0],{encryptedSecretKey:m}=c.find(fe=>fe.publicKey.toLocaleUpperCase()==jt(r).toLocaleUpperCase()),M=Hh(m,i),B=Gh(o,M),R=await this.core.transaction.getTransactionOwnerships(B),{secret:F,authorizedPublicKeys:N}=R[0],{encryptedSecretKey:G}=N.find(({publicKey:fe})=>fe.toUpperCase()==jt(r).toUpperCase()),Z=Hh(G,i),ie=Gh(F,Z);return df.decode(ie)}};g();var Ns=class{constructor(e){this.core=e}async getStorageNoncePublicKey(){return this.core.requestNode(e=>r5(e))}async addOriginKey(e,r){return this.core.requestNode(i=>a5(e,r,i))}async getOracleData(e=void 0){return this.core.requestNode(r=>o5(r,e))}async subscribeToOracleUpdates(e,r){return this.core.requestNode(i=>s5(i,e,r))}async getToken(e){return this.core.requestNode(r=>f5(e,r))}};g();g();var G_=1,Y_={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,code_proposal:7,code_approval:8},Qs=class{constructor(e){this.version=G_,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(e){if(!Object.keys(Y_).includes(e))throw"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'";return this.type=e,this}setCode(e){if(typeof e!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(e),this}setContent(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof e=="string"&&(e=new TextEncoder().encode(e)),this.data.content=e,this}addOwnership(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof e=="string"&&(Mt(e)?e=Nt(e):e=new TextEncoder().encode(e)),typeof r!="object"&&!(r instanceof Array))throw"'authorizedKeys must be an array";let i=[];return r.reduce((n,{publicKey:a,encryptedSecretKey:o})=>{if(typeof a!="string"&&!(a instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof a=="string"){if(!Mt(a))throw"Authorized public key must be an hexadecimal";a=Nt(a)}if(typeof o!="string"&&!(o instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof o=="string"){if(!Mt(o))throw"Encrypted secret key must be an hexadecimal";o=Nt(o)}return n[a]||(i.push({publicKey:a,encryptedSecretKey:o}),n[a]=o),n},{}),this.data.ownerships.push({secret:e,authorizedKeys:i}),this}addUCOTransfer(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}if(isNaN(r)||r<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:e,amount:r}),this}addTokenTransfer(e,r,i,n=0){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof i!="string"&&!(i instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}if(isNaN(r)||r<=0)throw"Token transfer amount must be a positive number";if(typeof i=="string"){if(!Mt(i))throw"'tokenAddress' must be in hexadecimal form if it's string";i=Nt(i)}if(isNaN(n)||n<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:e,amount:r,token:i,tokenId:n}),this}addRecipient(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}return this.data.recipients.push(e),this}setPreviousSignatureAndPreviousPublicKey(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'previous Signature' must be in hexadecimal form if it's string";e=Nt(e)}if(typeof r=="string"){if(!Mt(r))throw"'previous Public Key' must be in hexadecimal form if it's string";r=Nt(r)}return this.previousPublicKey=r,this.previousSignature=e,this}setAddress(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'addr' must be in hexadecimal form if it's string";e=Nt(e)}return this.address=e,this}build(e,r,i,n){let a=na(e,r,i),o=ia(e,r+1,i,n);this.address=o,this.previousPublicKey=a.publicKey;let c=this.previousSignaturePayload();return this.previousSignature=fo(c,a.privateKey),this}originSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string"&&!Mt(e))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=fo(this.originSignaturePayload(),e),this}setOriginSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'Signature' must be in hexadecimal form if it's string";e=Nt(e)}return this.originSignature=e,this}toJSON(){return JSON.stringify({version:this.version,address:jt(this.address),type:this.type,data:{content:jt(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:e,authorizedKeys:r})=>({secret:jt(e),authorizedKeys:r.map(({publicKey:i,encryptedSecretKey:n})=>({publicKey:jt(i),encryptedSecretKey:jt(n)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(e=>({to:jt(e.to),amount:e.amount}))},token:{transfers:this.data.ledger.token.transfers.map(e=>({to:jt(e.to),amount:e.amount,tokenAddress:jt(e.token),tokenId:e.tokenId}))}},recipients:this.data.recipients.map(jt)},previousPublicKey:jt(this.previousPublicKey),previousSignature:jt(this.previousSignature),originSignature:this.originSignature&&jt(this.originSignature)})}previousSignaturePayload(){let e=ji(this.data.code.length),r=this.data.content.length;this.data.content instanceof ArrayBuffer&&(r=this.data.content.byteLength);let i=ji(r),n=this.data.ownerships.map(({secret:R,authorizedKeys:F})=>{let N=Uint8Array.from(Hn(F.length)),G=[Uint8Array.from([N.length]),N];return F.sort((Z,ie)=>jt(Z.publicKey).localeCompare(jt(ie.publicKey))),F.forEach(({publicKey:Z,encryptedSecretKey:ie})=>{G.push(Z),G.push(ie)}),Kt([ji(R.byteLength),R,Kt(G)])}),a=this.data.ledger.uco.transfers.map(function(R){return Kt([R.to,Z0(R.amount)])}),o=this.data.ledger.token.transfers.map(function(R){let F=Uint8Array.from(Hn(R.tokenId));return Kt([R.token,R.to,Z0(R.amount),Uint8Array.from([F.length]),F])}),c=Uint8Array.from(Hn(this.data.ownerships.length)),m=Uint8Array.from(Hn(this.data.ledger.uco.transfers.length)),M=Uint8Array.from(Hn(this.data.ledger.token.transfers.length)),B=Uint8Array.from(Hn(this.data.recipients.length));return Kt([ji(G_),this.address,Uint8Array.from([Y_[this.type]]),e,this.data.code,i,this.data.content,Uint8Array.from([c.length]),c,Kt(n),Uint8Array.from([m.length]),m,Kt(a),Uint8Array.from([M.length]),M,Kt(o),Uint8Array.from([B.length]),B,Kt(this.data.recipients)])}originSignaturePayload(){let e=this.previousSignaturePayload();return Kt([e,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};g();var V_=$r(oc(),1);var Wt=$r(Rl(),1),_v="SENDER",Ks=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(e,r){if(typeof e!="string")throw"'event' must be a string";if(typeof r!="function")throw"'func' must be a function";switch(e){case"sent":this.onSent.push(r);break;case"confirmation":this.onConfirmation.push(r);break;case"requiredConfirmation":this.onRequiredConfirmation.push(r);break;case"fullConfirmation":this.onFullConfirmation.push(r);break;case"error":this.onError.push(r);break;case"timeout":this.onTimeout.push(r);break;default:throw"Event "+e+" is not supported"}return this}async send(e,r,i=100,n=60){if(typeof e!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof r!="string")throw"'endpoint' must be a string";if(typeof i!="number"||i<0&&i>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof n!="number"||n<=0)throw"'timeout' must be an integer greater than 0";let a=jt(e.address),{host:o,protocol:c}=new URL(r),m=c=="https:"?"wss":"ws";this.absintheSocket=(0,Wt.absintheCreate)(`${m}://${o}/socket`);try{this.confirmationNotifier=await wj(a,this.absintheSocket,(M,B)=>_j.call(this,i,M,B)),this.errorNotifier=await Aj(a,this.absintheSocket,Ij.bind(this))}catch(M){return this.onError.forEach(B=>B(_v,M.message,this)),this}return(0,V_.default)(r+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(M=>Ej.call(this,n,M)).catch(M=>this.onError.forEach(B=>B(_v,M,this))),this}unsubscribe(e=void 0){if(e)switch(e){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+e+" is not supported"}else(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function wj(t,e,r){let i=` + `);return(0,Ma.absintheObserve)(d,b,A=>{t(A.data.oracelUpdate)})}async function zn(e){return new Promise(function(t,r){e.status>=200&&e.status<=299?e.json().then(t):r(e.statusText)})}var R_={};zp(R_,{IDToCurve:()=>Dp,IDToHashAlgo:()=>Op,aesDecrypt:()=>tl,aesEncrypt:()=>Xu,curveToID:()=>oo,deriveAddress:()=>fa,deriveKeyPair:()=>aa,ecDecrypt:()=>Ju,ecEncrypt:()=>Wu,generateDeterministicKeyPair:()=>Zu,getHashDigest:()=>q_,hash:()=>$u,hashAlgoToID:()=>Gu,randomSecretKey:()=>Yu,sign:()=>so,verify:()=>Gj});M();var Ge=$r(vp(),1),E_=$r(Cs(),1),S_=$r(b9(),1),B_=$r(s_(),1),Qs=$r(M_(),1),Cp=$r(I_(),1);var{ec:C_,eddsa:Hj}=E_.default,qp=new Hj("ed25519"),Rp=new C_("p256"),Tp=new C_("secp256k1"),{sha3_512:jj,sha3_256:zj}=S_.default,Vj=1;function Yu(){return new Uint8Array((0,Ge.randomBytes)(32))}function Gu(e){switch(e){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function Op(e){switch(e){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function oo(e){switch(e){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function Dp(e){switch(e){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function fa(e,t,r="ed25519",a="sha256"){let{publicKey:n}=aa(e,t,r),d=oo(r),m=$u(n,a);return Le([Uint8Array.from([d]),Uint8Array.from(m)])}function $u(e,t="sha256"){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof e=="string"&&(we(e)?e=qe(e):e=new TextEncoder().encode(e));let r=Gu(t),a=q_(e,t);return Le([Uint8Array.from([r]),Uint8Array.from(a)])}function q_(e,t){switch(t){case"sha256":{let r=(0,Ge.createHash)(t);return r.update(e),r.digest()}case"sha512":{let r=(0,Ge.createHash)(t);return r.update(e),r.digest()}case"sha3-256":{let r=zj.create();return r.update(e),r.digest()}case"sha3-512":{let r=jj.create();return r.update(e),r.digest()}case"blake2b":{let r=new Uint8Array(64),a=(0,B_.default)(64);return a.update(e),a.digest(r),r}default:throw"Hash algorithm not supported"}}function aa(e,t,r="ed25519"){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'seed must be a string";if(typeof t!="number"||t<0)throw"'index' must be a positive number";let a=$j(e,t);return Zu(a,r,Vj)}function Zu(e,t,r){let a=oo(t),{publicKey:n,privateKey:d}=Yj(e,t);return{privateKey:Le([Uint8Array.from([a]),Uint8Array.from([r]),d]),publicKey:Le([Uint8Array.from([a]),Uint8Array.from([r]),n])}}function Yj(e,t){switch(t){case"ed25519":{let r=qp.keyFromSecret(e),a=new Uint8Array(r.pubBytes());return{privateKey:e,publicKey:a}}case"P256":{let r=Rp.keyFromPrivate(e),a=qe(r.getPublic().encode("hex"));return{privateKey:e,publicKey:a}}case"secp256k1":{let r=Tp.keyFromPrivate(e),a=qe(r.getPublic().encode("hex"));return{privateKey:e,publicKey:a}}default:throw"Curve not supported"}}function so(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof e=="string"&&(we(e)?e=qe(e):e=new TextEncoder().encode(e)),typeof t=="string")if(we(t))t=qe(t);else throw"'privateKey' must be an hexadecimal string";let r=t.slice(0,1),a=t.slice(2,t.length);switch(r[0]){case 0:{let n=qp.keyFromSecret(a);return Uint8Array.from(n.sign(e).toBytes())}case 1:{let n=(0,Ge.createHash)("sha256").update(e).digest(),d=Rp.keyFromPrivate(a);return Uint8Array.from(d.sign(n).toDER())}case 2:{let n=(0,Ge.createHash)("sha256").update(e).digest(),d=Tp.keyFromPrivate(a);return Uint8Array.from(d.sign(n).toDER())}default:throw"Curve not supported"}}function Gj(e,t,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof e=="string")if(we(e))e=qe(e);else throw"'signature' must be an hexadecimal string";if(typeof t=="string"&&(we(t)?t=qe(t):t=new TextEncoder().encode(t)),typeof r=="string")if(we(r))r=qe(r);else throw"'publicKey' must be an hexadecimal string";let a=r.slice(0,1),n=r.slice(2,r.length);switch(a[0]){case 0:return qp.keyFromPublic(Array.from(n)).verify(t,Array.from(e));case 1:{let d=(0,Ge.createHash)("sha256").update(t).digest();return Rp.keyFromPublic(n).verify(d,e)}case 2:{let d=(0,Ge.createHash)("sha256").update(t).digest();return Tp.keyFromPublic(n).verify(d,e)}default:throw"Curve not supported"}}function Wu(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof e=="string"&&(we(e)?e=qe(e):e=new TextEncoder().encode(e)),typeof t=="string")if(we(t))t=qe(t);else throw"'publicKey' must be an hexadecimal string";let r=t.slice(0,1),a=t.slice(2,t.length);switch(r[0]){case 0:{let{public:n,private:d}=Qs.generateKeyPair((0,Ge.randomBytes)(32)),m=Cp.default.convertPublicKey(a),b=Qs.sharedKey(d,m),{aesKey:A,iv:B}=ao(b),{tag:C,encrypted:D}=zu(e,A,B);return Le([Uint8Array.from(n),C,D])}case 1:{let n=(0,Ge.createECDH)("prime256v1");n.generateKeys();let d=n.computeSecret(a),{aesKey:m,iv:b}=ao(d),{tag:A,encrypted:B}=zu(e,m,b);return Le([Uint8Array.from(n.getPublicKey()),A,B])}case 2:{let n=(0,Ge.createECDH)("secp256k1");n.generateKeys();let d=n.computeSecret(a),{aesKey:m,iv:b}=ao(d),{tag:A,encrypted:B}=zu(e,m,b);return Le([Uint8Array.from(n.getPublicKey()),A,B])}default:throw"Curve not supported"}}function Ju(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string")if(we(e))e=qe(e);else throw"'ciphertext' must be an hexadecimal string";if(typeof t=="string")if(we(t))t=qe(t);else throw"'privateKey' must be an hexadecimal string";let r=t.slice(0,1),a=t.slice(2,t.length);switch(r[0]){case 0:{let n=e.slice(0,32),d=e.slice(32,32+16),m=e.slice(32+16,e.length),b=Cp.default.convertSecretKey(a),A=Qs.sharedKey(b,n),{aesKey:B,iv:C}=ao(A);return Vu(m,B,C,d)}case 1:{let n=e.slice(0,65),d=e.slice(65,65+16),m=e.slice(65+16,e.length),b=(0,Ge.createECDH)("prime256v1");b.setPrivateKey(a);let A=b.computeSecret(n),{aesKey:B,iv:C}=ao(A);return Vu(m,B,C,d)}case 2:{let n=e.slice(0,65),d=e.slice(65,65+16),m=e.slice(65+16,e.length),b=(0,Ge.createECDH)("secp256k1");b.setPrivateKey(a);let A=b.computeSecret(n),{aesKey:B,iv:C}=ao(A);return Vu(m,B,C,d)}default:throw"Curve not supported"}}function Xu(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof e=="string"&&(we(e)?e=qe(e):e=new TextEncoder().encode(e)),typeof t=="string")if(we(t))t=qe(t);else throw"'key' must be an hexadecimal string";let r=(0,Ge.randomBytes)(12),{tag:a,encrypted:n}=zu(e,t,r);return Le([new Uint8Array(r),a,n])}function tl(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof e=="string")if(we(e))e=qe(e);else throw"'cipherText' must be an hexadecimal string";if(typeof t=="string")if(we(t))t=qe(t);else throw"'key' must be an be hexadecimal string";let r=e.slice(0,12),a=e.slice(12,12+16),n=e.slice(28,e.length);return Vu(n,t,r,a)}function $j(e,t){we(e)&&(e=qe(e));let r=(0,Ge.createHash)("sha512").update(e).digest(),a=r.subarray(0,32),n=r.subarray(32,64),d=Hi(t),m=Le([a,d]);return(0,Ge.createHmac)("sha512",n).update(m).digest().subarray(0,32)}function ao(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof e=="string")if(we(e))e=qe(e);else throw"'sharedKey' must be an hexadecimal string";let t=(0,Ge.createHash)("sha256").update(e).digest(),r=(0,Ge.createHmac)("sha256",t).update("0").digest().subarray(0,32),a=(0,Ge.createHmac)("sha256",r).update("1").digest().subarray(0,32);return{iv:r,aesKey:a}}function zu(e,t,r){let a=(0,Ge.createCipheriv)("aes-256-gcm",t,r),n=a.update(e);return n=Le([n,a.final()]),{tag:new Uint8Array(a.getAuthTag()),encrypted:n}}function Vu(e,t,r,a){let n=(0,Ge.createDecipheriv)("aes-256-gcm",t,r);n.setAuthTag(a);let d=[n.update(e)];return d.push(n.final()),Le(d)}M();M();var il=$r(vp(),1),lo=$r(k_(),1),tz=0,cf=class{constructor(t,r=1){t instanceof Uint8Array||(t=new TextEncoder().encode(t)),this.version=r,this.seed=t,this.services={}}addService(t,r,a="ed25519",n="sha256"){return this.services[t]={derivationPath:r,curve:a,hashAlgo:n},this}encode(){let t=[];for(let r in this.services){let{derivationPath:a,curve:n,hashAlgo:d}=this.services[r];t.push(Le([Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([a.length]),new TextEncoder().encode(a),Uint8Array.from([oo(n)]),Uint8Array.from([Gu(d)])]))}return Le([Hi(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),Le(t)])}deriveKeypair(t,r=0){if(!this.services[t])throw"Service doesn't exist in the keychain";let{derivationPath:a,curve:n}=this.services[t];return Np(this.seed,a,r,n)}deriveAddress(t,r=0){if(!this.services[t])throw"Service doesn't exist in the keychain";let{derivationPath:a,curve:n,hashAlgo:d}=this.services[t],{publicKey:m}=Np(this.seed,a,r,n),b=oo(n),A=$u(m,d);return Le([Uint8Array.from([b]),Uint8Array.from(A)])}buildTransaction(t,r,a){let n=this.deriveKeypair(r,a),d=this.deriveAddress(r,a+1);t.setAddress(d);let m=t.previousSignaturePayload(),b=so(m,n.privateKey);return t.setPreviousSignatureAndPreviousPublicKey(b,n.publicKey),t}static decode(t){var m=0,{bytes:r,pos:m}=rl(t,m,4),{byte:a,pos:m}=uo(t,m,1),{bytes:n,pos:m}=rl(t,m,a),{byte:d,pos:m}=uo(t,m,1);let b=new cf(n,Fd(r));for(let Z=0;ZB.replace("'","")).at(1);if(A=="650"){let{publicKey:B}=Np(this.seed,m,0,b);a.push({id:`did:archethic:${r}#${d}`,type:"JsonWebKey2020",publicKeyJwk:rz(B,d),controller:`did:archethic:${r}`}),n.push(`did:archethic:${r}#${d}`)}else throw"Purpose '"+A+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${r}`,authentication:n,verificationMethod:a}}};function uo(e,t,r){return{byte:e.slice(t,t+r)[0],pos:t+r}}function rl(e,t,r){return{bytes:e.slice(t,t+r),pos:t+r}}function Np(e,t,r,a="ed25519"){let n=(0,il.createHash)("sha256").update(ez(t,r)).digest(),d=(0,il.createHmac)("sha512",e).update(n).digest().subarray(0,32);return Zu(d,a,tz)}function ez(e,t){return e.split("/").slice(0,-1).concat(`${t}`).join("/")}function rz(e,t){let r=e[0],a=e.slice(2,e.length);switch(r){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,lo.default)(a),kid:t};case 1:return x=a.subarray(16),y=a.subarray(-16),{kty:"EC",crv:"P-256",x:(0,lo.default)(x),y:(0,lo.default)(y),kid:t};case 2:return x=a.subarray(16),y=a.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,lo.default)(x),y:(0,lo.default)(y),kid:t}}}var Hs=class{constructor(t){this.core=t}newKeychainTransaction(t,r){let a=new cf(t);a.addService("uco","m/650'/0/0");let n=Yu(),d=r.map(m=>({publicKey:m,encryptedSecretKey:Wu(n,m)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(a.toDID())).addOwnership(Xu(a.encode(),n),d).build(t,0)}newAccessTransaction(t,r){let a=Yu(),{publicKey:n}=aa(t,0),d=Wu(a,n),m=[{publicKey:n,encryptedSecretKey:d}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(Xu(r,a),m).build(t,0)}async getKeychain(t){let{publicKey:r,privateKey:a}=aa(t,0),n=fa(t,1),d=await this.core.transaction.getTransactionOwnerships(n);if(d.length==0)throw"Keychain doesn't exist";let{secret:m,authorizedPublicKeys:b}=d[0],{encryptedSecretKey:A}=b.find(J=>J.publicKey.toLocaleUpperCase()==Qe(r).toLocaleUpperCase()),B=Ju(A,a),C=tl(m,B),D=await this.core.transaction.getTransactionOwnerships(C),{secret:K,authorizedPublicKeys:j}=D[0],{encryptedSecretKey:Z}=j.find(({publicKey:J})=>J.toUpperCase()==Qe(r).toUpperCase()),qt=Ju(Z,a),Rt=tl(K,qt);return cf.decode(Rt)}};M();var js=class{constructor(t){this.core=t}async getStorageNoncePublicKey(){return this.core.requestNode(t=>x8(t))}async addOriginKey(t,r){return this.core.requestNode(a=>_8(t,r,a))}async getOracleData(t=void 0){return this.core.requestNode(r=>I8(r,t))}async subscribeToOracleUpdates(t,r){return this.core.requestNode(a=>E8(a,t,r))}async getToken(t){return this.core.requestNode(r=>A8(t,r))}};M();M();var P_=1,Fp={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,data:250,contract:249,code_proposal:7,code_approval:8},zs=class{constructor(t){this.version=P_,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(t){if(!Object.keys(Fp).includes(t))throw"Transaction type must be in "+Object.keys(Fp).map(r=>`'${r}'`).join(", ");return this.type=t,this}setCode(t){if(typeof t!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(t),this}setContent(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof t=="string"&&(t=new TextEncoder().encode(t)),this.data.content=t,this}addOwnership(t,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof t=="string"&&(we(t)?t=qe(t):t=new TextEncoder().encode(t)),typeof r!="object"&&!(r instanceof Array))throw"'authorizedKeys must be an array";let a=[];return r.reduce((n,{publicKey:d,encryptedSecretKey:m})=>{if(typeof d!="string"&&!(d instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof d=="string"){if(!we(d))throw"Authorized public key must be an hexadecimal";d=qe(d)}if(typeof m!="string"&&!(m instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof m=="string"){if(!we(m))throw"Encrypted secret key must be an hexadecimal";m=qe(m)}return n[d]||(a.push({publicKey:d,encryptedSecretKey:m}),n[d]=m),n},{}),this.data.ownerships.push({secret:t,authorizedKeys:a}),this}addUCOTransfer(t,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'to' must be in hexadecimal form if it's string";t=qe(t)}if(isNaN(r)||r<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:t,amount:r}),this}addTokenTransfer(t,r,a,n=0){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'to' must be in hexadecimal form if it's string";t=qe(t)}if(isNaN(r)||r<=0)throw"Token transfer amount must be a positive number";if(typeof a=="string"){if(!we(a))throw"'tokenAddress' must be in hexadecimal form if it's string";a=qe(a)}if(isNaN(n)||n<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:t,amount:r,token:a,tokenId:n}),this}addRecipient(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'to' must be in hexadecimal form if it's string";t=qe(t)}return this.data.recipients.push(t),this}setPreviousSignatureAndPreviousPublicKey(t,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'previous Signature' must be in hexadecimal form if it's string";t=qe(t)}if(typeof r=="string"){if(!we(r))throw"'previous Public Key' must be in hexadecimal form if it's string";r=qe(r)}return this.previousPublicKey=r,this.previousSignature=t,this}setAddress(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'addr' must be in hexadecimal form if it's string";t=qe(t)}return this.address=t,this}build(t,r,a,n){let d=aa(t,r,a),m=fa(t,r+1,a,n);this.address=m,this.previousPublicKey=d.publicKey;let b=this.previousSignaturePayload();return this.previousSignature=so(b,d.privateKey),this}originSign(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string"&&!we(t))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=so(this.originSignaturePayload(),t),this}setOriginSign(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'Signature' must be in hexadecimal form if it's string";t=qe(t)}return this.originSignature=t,this}toJSON(){return JSON.stringify({version:this.version,address:Qe(this.address),type:this.type,data:{content:Qe(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:t,authorizedKeys:r})=>({secret:Qe(t),authorizedKeys:r.map(({publicKey:a,encryptedSecretKey:n})=>({publicKey:Qe(a),encryptedSecretKey:Qe(n)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(t=>({to:Qe(t.to),amount:t.amount}))},token:{transfers:this.data.ledger.token.transfers.map(t=>({to:Qe(t.to),amount:t.amount,tokenAddress:Qe(t.token),tokenId:t.tokenId}))}},recipients:this.data.recipients.map(Qe)},previousPublicKey:Qe(this.previousPublicKey),previousSignature:Qe(this.previousSignature),originSignature:this.originSignature&&Qe(this.originSignature)})}previousSignaturePayload(){let t=Hi(this.data.code.length),r=this.data.content.length;this.data.content instanceof ArrayBuffer&&(r=this.data.content.byteLength);let a=Hi(r),n=this.data.ownerships.map(({secret:D,authorizedKeys:K})=>{let j=Uint8Array.from(jn(K.length)),Z=[Uint8Array.from([j.length]),j];return K.sort((qt,Rt)=>Qe(qt.publicKey).localeCompare(Qe(Rt.publicKey))),K.forEach(({publicKey:qt,encryptedSecretKey:Rt})=>{Z.push(qt),Z.push(Rt)}),Le([Hi(D.byteLength),D,Le(Z)])}),d=this.data.ledger.uco.transfers.map(function(D){return Le([D.to,nh(D.amount)])}),m=this.data.ledger.token.transfers.map(function(D){let K=Uint8Array.from(jn(D.tokenId));return Le([D.token,D.to,nh(D.amount),Uint8Array.from([K.length]),K])}),b=Uint8Array.from(jn(this.data.ownerships.length)),A=Uint8Array.from(jn(this.data.ledger.uco.transfers.length)),B=Uint8Array.from(jn(this.data.ledger.token.transfers.length)),C=Uint8Array.from(jn(this.data.recipients.length));return Le([Hi(P_),this.address,Uint8Array.from([Fp[this.type]]),t,this.data.code,a,this.data.content,Uint8Array.from([b.length]),b,Le(n),Uint8Array.from([A.length]),A,Le(d),Uint8Array.from([B.length]),B,Le(m),Uint8Array.from([C.length]),C,Le(this.data.recipients)])}originSignaturePayload(){let t=this.previousSignaturePayload();return Le([t,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};M();var U_=$r(pl(),1);var $e=$r(Nd(),1),Kp="SENDER",Vs=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(t,r){if(typeof t!="string")throw"'event' must be a string";if(typeof r!="function")throw"'func' must be a function";switch(t){case"sent":this.onSent.push(r);break;case"confirmation":this.onConfirmation.push(r);break;case"requiredConfirmation":this.onRequiredConfirmation.push(r);break;case"fullConfirmation":this.onFullConfirmation.push(r);break;case"error":this.onError.push(r);break;case"timeout":this.onTimeout.push(r);break;default:throw"Event "+t+" is not supported"}return this}async send(t,r,a=100,n=60){if(typeof t!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof r!="string")throw"'endpoint' must be a string";if(typeof a!="number"||a<0&&a>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof n!="number"||n<=0)throw"'timeout' must be an integer greater than 0";let d=Qe(t.address),{host:m,protocol:b}=new URL(r),A=b=="https:"?"wss":"ws";this.absintheSocket=(0,$e.absintheCreate)(`${A}://${m}/socket`);try{this.confirmationNotifier=await iz(d,this.absintheSocket,(B,C)=>fz.call(this,a,B,C)),this.errorNotifier=await nz(d,this.absintheSocket,az.bind(this))}catch(B){return this.onError.forEach(C=>C(Kp,B.message,this)),this}return(0,U_.default)(r+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(B=>oz.call(this,n,B)).catch(B=>this.onError.forEach(C=>C(Kp,B,this))),this}unsubscribe(t=void 0){if(t)switch(t){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+t+" is not supported"}else(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function iz(e,t,r){let a=` subscription { - transactionConfirmed(address: "${t}") { + transactionConfirmed(address: "${e}") { nbConfirmations, maxConfirmations } } - `,n=(0,Wt.absintheSend)(e,i);return(0,Wt.absintheObserve)(e,n,a=>{if(a.data.transactionConfirmed){let{nbConfirmations:o,maxConfirmations:c}=a.data.transactionConfirmed;r(o,c)}})}async function Aj(t,e,r){let i=` + `,n=(0,$e.absintheSend)(t,a);return(0,$e.absintheObserve)(t,n,d=>{if(d.data.transactionConfirmed){let{nbConfirmations:m,maxConfirmations:b}=d.data.transactionConfirmed;r(m,b)}})}async function nz(e,t,r){let a=` subscription { - transactionError(address: "${t}") { + transactionError(address: "${e}") { context, reason } } - `,n=(0,Wt.absintheSend)(e,i);return(0,Wt.absintheObserve)(e,n,a=>{if(a.data.transactionError){let{context:o,reason:c}=a.data.transactionError;r(o,c)}})}function _j(t,e,r){this.nbConfirmationReceived=e,e==1&&(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(i=>i(e,r,this)),r*(t/100)<=e&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(i=>i(e,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),e==r&&(clearTimeout(this.timeout),(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(i=>i(r,this)))}function Ij(t,e){clearTimeout(this.timeout),(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(r=>r(t,e,this))}function Ej(t,e){e.status>=200&&e.status<=299?(this.onSent.forEach(r=>r(this)),this.timeout=setTimeout(()=>{(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(r=>r(this.nbConfirmationReceived,this))},t*1e3)):((0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),e.json().then(r=>this.onError.forEach(i=>i(_v,r.status,this))))}var js=class{constructor(e){this.core=e,this.builder=Iv}new(){return new this.builder(this.core)}getTransactionIndex(e){return this.core.requestNode(r=>t5(e,r))}getTransactionFee(e){return this.core.requestNode(r=>i5(e,r))}getTransactionOwnerships(e){return this.core.requestNode(r=>n5(e,r))}},Iv=class extends Qs{constructor(e){super(),this.core=e,this.sender=new Ks}send(e,r){this.core.requestNode(i=>this.sender.send(this,i,e,r))}on(e,r){return this.sender.on(e,r),this}unsubscribe(e){return this.sender.unsubscribe(e),this}};var Ev=class{constructor(e){this.endpoint=new URL(e),this.transaction=new js(this),this.account=new Ls(this),this.network=new Ns(this)}async connect(){let e=await e5(this.endpoint);return this.nearestEndpoints=e.map(({ip:r,port:i})=>`http://${r}:${i}`),this}async requestNode(e){let r=this.nearestEndpoints[0];try{return await e(r)}catch(i){if(console.error(i),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(e)}}};export{Q_ as Crypto,Z4 as Utils,Ev as default}; + `,n=(0,$e.absintheSend)(t,a);return(0,$e.absintheObserve)(t,n,d=>{if(d.data.transactionError){let{context:m,reason:b}=d.data.transactionError;r(m,b)}})}function fz(e,t,r){this.nbConfirmationReceived=t,t==1&&(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(a=>a(t,r,this)),r*(e/100)<=t&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(a=>a(t,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),t==r&&(clearTimeout(this.timeout),(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(a=>a(r,this)))}function az(e,t){clearTimeout(this.timeout),(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(r=>r(e,t,this))}function oz(e,t){t.status>=200&&t.status<=299?(this.onSent.forEach(r=>r(this)),this.timeout=setTimeout(()=>{(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(r=>r(this.nbConfirmationReceived,this))},e*1e3)):((0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),t.json().then(r=>this.onError.forEach(a=>a(Kp,r.status,this))))}var Ys=class{constructor(t){this.core=t,this.builder=Qp}new(){return new this.builder(this.core)}getTransactionIndex(t){return this.core.requestNode(r=>y8(t,r))}getTransactionFee(t){return this.core.requestNode(r=>w8(t,r))}getTransactionOwnerships(t){return this.core.requestNode(r=>M8(t,r))}},Qp=class extends zs{constructor(t){super(),this.core=t,this.sender=new Vs}send(t,r){this.core.requestNode(a=>this.sender.send(this,a,t,r))}on(t,r){return this.sender.on(t,r),this}unsubscribe(t){return this.sender.unsubscribe(t),this}};var Hp=class{constructor(t){this.endpoint=new URL(t),this.transaction=new Ys(this),this.account=new Hs(this),this.network=new js(this)}async connect(){let t=await b8(this.endpoint);return this.nearestEndpoints=t.map(({ip:r,port:a})=>`http://${r}:${a}`),this}async requestNode(t){let r=this.nearestEndpoints[0];try{return await t(r)}catch(a){if(console.error(a),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(t)}}};export{R_ as Crypto,m8 as Utils,Hp as default}; /*! * The buffer module from node.js, for the browser. * diff --git a/dist/archethic-browser.mjs.map b/dist/archethic-browser.mjs.map index 0371969..bcf3053 100644 --- a/dist/archethic-browser.mjs.map +++ b/dist/archethic-browser.mjs.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../node_modules/base64-js/index.js", "../node_modules/ieee754/index.js", "../node_modules/buffer/index.js", "../esbuild.inject.js", "../node_modules/cross-fetch/dist/browser-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/isomorphic-ws/browser.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/safe-buffer/index.js", "../node_modules/randombytes/browser.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/events/events.js", "../node_modules/readable-stream/lib/internal/streams/stream-browser.js", "(disabled):util", "../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../node_modules/readable-stream/lib/internal/streams/destroy.js", "../node_modules/readable-stream/errors-browser.js", "../node_modules/readable-stream/lib/internal/streams/state.js", "../node_modules/util-deprecate/browser.js", "../node_modules/readable-stream/lib/_stream_writable.js", "../node_modules/readable-stream/lib/_stream_duplex.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../node_modules/readable-stream/lib/internal/streams/from-browser.js", "../node_modules/readable-stream/lib/_stream_readable.js", "../node_modules/readable-stream/lib/_stream_transform.js", "../node_modules/readable-stream/lib/_stream_passthrough.js", "../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../node_modules/readable-stream/readable-browser.js", "../node_modules/hash-base/index.js", "../node_modules/md5.js/index.js", "../node_modules/ripemd160/index.js", "../node_modules/sha.js/hash.js", "../node_modules/sha.js/sha.js", "../node_modules/sha.js/sha1.js", "../node_modules/sha.js/sha256.js", "../node_modules/sha.js/sha224.js", "../node_modules/sha.js/sha512.js", "../node_modules/sha.js/sha384.js", "../node_modules/sha.js/index.js", "../node_modules/stream-browserify/index.js", "../node_modules/cipher-base/index.js", "../node_modules/create-hash/browser.js", "../node_modules/create-hmac/legacy.js", "../node_modules/create-hash/md5.js", "../node_modules/create-hmac/browser.js", "../node_modules/browserify-sign/algos.js", "../node_modules/pbkdf2/lib/precondition.js", "../node_modules/pbkdf2/lib/default-encoding.js", "../node_modules/pbkdf2/lib/to-buffer.js", "../node_modules/pbkdf2/lib/sync-browser.js", "../node_modules/pbkdf2/lib/async.js", "../node_modules/pbkdf2/browser.js", "../node_modules/des.js/lib/des/utils.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/des.js/lib/des/cipher.js", "../node_modules/des.js/lib/des/des.js", "../node_modules/des.js/lib/des/cbc.js", "../node_modules/des.js/lib/des/ede.js", "../node_modules/des.js/lib/des.js", "../node_modules/browserify-des/index.js", "../node_modules/browserify-aes/modes/ecb.js", "../node_modules/buffer-xor/index.js", "../node_modules/browserify-aes/modes/cbc.js", "../node_modules/browserify-aes/modes/cfb.js", "../node_modules/browserify-aes/modes/cfb8.js", "../node_modules/browserify-aes/modes/cfb1.js", "../node_modules/browserify-aes/modes/ofb.js", "../node_modules/browserify-aes/incr32.js", "../node_modules/browserify-aes/modes/ctr.js", "../node_modules/browserify-aes/modes/index.js", "../node_modules/browserify-aes/aes.js", "../node_modules/browserify-aes/ghash.js", "../node_modules/browserify-aes/authCipher.js", "../node_modules/browserify-aes/streamCipher.js", "../node_modules/evp_bytestokey/index.js", "../node_modules/browserify-aes/encrypter.js", "../node_modules/browserify-aes/decrypter.js", "../node_modules/browserify-aes/browser.js", "../node_modules/browserify-des/modes.js", "../node_modules/browserify-cipher/browser.js", "../node_modules/buffer/index.js", "../node_modules/bn.js/lib/bn.js", "(disabled):crypto", "../node_modules/brorand/index.js", "../node_modules/miller-rabin/lib/mr.js", "../node_modules/diffie-hellman/lib/generatePrime.js", "../node_modules/diffie-hellman/lib/dh.js", "../node_modules/diffie-hellman/browser.js", "../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js", "../node_modules/browserify-rsa/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js", "../node_modules/safer-buffer/safer.js", "../node_modules/asn1.js/lib/asn1/base/reporter.js", "../node_modules/asn1.js/lib/asn1/base/buffer.js", "../node_modules/asn1.js/lib/asn1/base/node.js", "../node_modules/asn1.js/lib/asn1/constants/der.js", "../node_modules/asn1.js/lib/asn1/encoders/der.js", "../node_modules/asn1.js/lib/asn1/encoders/pem.js", "../node_modules/asn1.js/lib/asn1/encoders/index.js", "../node_modules/asn1.js/lib/asn1/decoders/der.js", "../node_modules/asn1.js/lib/asn1/decoders/pem.js", "../node_modules/asn1.js/lib/asn1/decoders/index.js", "../node_modules/asn1.js/lib/asn1/api.js", "../node_modules/asn1.js/lib/asn1/base/index.js", "../node_modules/asn1.js/lib/asn1/constants/index.js", "../node_modules/asn1.js/lib/asn1.js", "../node_modules/parse-asn1/certificate.js", "../node_modules/parse-asn1/asn1.js", "../node_modules/parse-asn1/fixProc.js", "../node_modules/parse-asn1/index.js", "../node_modules/browserify-sign/browser/sign.js", "../node_modules/browserify-sign/browser/verify.js", "../node_modules/browserify-sign/browser/index.js", "../node_modules/create-ecdh/browser.js", "../node_modules/public-encrypt/mgf.js", "../node_modules/public-encrypt/xor.js", "../node_modules/public-encrypt/withPublic.js", "../node_modules/public-encrypt/publicEncrypt.js", "../node_modules/public-encrypt/privateDecrypt.js", "../node_modules/public-encrypt/browser.js", "../node_modules/randomfill/browser.js", "../node_modules/crypto-browserify/index.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], - "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "export let Buffer = require(\"buffer\").Buffer", "var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || this\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => { callback && callback(null) }\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(){\n this.close()\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry()\n }\n\n poll(){\n if(!(this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting)){ return }\n\n Ajax.request(\"GET\", this.endpointURL(), \"application/json\", null, this.timeout, this.ontimeout.bind(this), (resp) => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => {\n this.onmessage({data: msg})\n }, 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen()\n this.poll()\n break\n case 403:\n this.onerror()\n this.close()\n break\n case 0:\n case 500:\n this.onerror()\n this.closeAndRetry()\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n Ajax.request(\"POST\", this.endpointURL(), \"application/json\", body, this.timeout, this.onerror.bind(this, \"timeout\"), (resp) => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry()\n }\n })\n }\n\n close(_code, _reason){\n this.readyState = SOCKET_STATES.closed\n this.onclose()\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millsec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millsec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.disconnect()\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualifed socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n this.connectClock++\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * @private\n */\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.abnormalClose(\"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n clearTimeout(this.heartbeatTimer)\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n clearTimeout(this.heartbeatTimer)\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n abnormalClose(reason){\n this.closeWasClean = false\n if(this.isConnected()){ this.conn.close(WS_CLOSE_NORMAL, reason) }\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n clearTimeout(this.heartbeatTimer)\n this.pendingHeartbeatRef = null\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}\n", "// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", "module.exports = require('events').EventEmitter;\n", "", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();", "'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;", "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n", "var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n", "var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n", "var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n", "var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n", "var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n", "'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n", "var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n", "module.exports = require('./browser/algorithms.json')\n", "var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n", "var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n", "var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n", "var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n", "exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n", "'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\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\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\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", "'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", "var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n", "exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n", "var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n", "var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n", "var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n", "// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n", "var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho V\u00E4h\u00E4-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\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", "var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n", "var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n", "var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n", "var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\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", "var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n", "var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n", "'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n", "'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n", "'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n", "'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n", "'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n", "'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n", "'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n", "'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n", "// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n", "// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n", "// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n", "var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n", "var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n", "var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n", "var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n", "module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n", "var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n", "var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n", "var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n", "exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n", "'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n", "'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "assert.notEqual = notEqual\nassert.notOk = notOk\nassert.equal = equal\nassert.ok = assert\n\nmodule.exports = assert\n\nfunction equal (a, b, m) {\n assert(a == b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notEqual (a, b, m) {\n assert(a != b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notOk (t, m) {\n assert(!t, m)\n}\n\nfunction assert (t, m) {\n if (!t) throw new Error(m || 'AssertionError')\n}\n", "\nmodule.exports = loadWebAssembly\n\nloadWebAssembly.supported = typeof WebAssembly !== 'undefined'\n\nfunction loadWebAssembly (opts) {\n if (!loadWebAssembly.supported) return null\n\n var imp = opts && opts.imports\n var wasm = toUint8Array('AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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')\n var ready = null\n\n var mod = {\n buffer: wasm,\n memory: null,\n exports: null,\n realloc: realloc,\n onload: onload\n }\n\n onload(function () {})\n\n return mod\n\n function realloc (size) {\n mod.exports.memory.grow(Math.ceil(Math.abs(size - mod.memory.length) / 65536))\n mod.memory = new Uint8Array(mod.exports.memory.buffer)\n }\n\n function onload (cb) {\n if (mod.exports) return cb()\n\n if (ready) {\n ready.then(cb.bind(null, null)).catch(cb)\n return\n }\n\n try {\n if (opts && opts.async) throw new Error('async')\n setup({instance: new WebAssembly.Instance(new WebAssembly.Module(wasm), imp)})\n } catch (err) {\n ready = WebAssembly.instantiate(wasm, imp).then(setup)\n }\n\n onload(cb)\n }\n\n function setup (w) {\n mod.exports = w.instance.exports\n mod.memory = mod.exports.memory && mod.exports.memory.buffer && new Uint8Array(mod.exports.memory.buffer)\n }\n}\n\nfunction toUint8Array (s) {\n if (typeof atob === 'function') return new Uint8Array(atob(s).split('').map(charCodeAt))\n return new (require('buf' + 'fer').Buffer)(s, 'base64')\n}\n\nfunction charCodeAt (c) {\n return c.charCodeAt(0)\n}\n", "var assert = require('nanoassert')\nvar wasm = require('./blake2b')()\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!(wasm && wasm.exports)) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n\n wasm.memory.fill(0, 0, 64)\n wasm.memory[0] = this.digestLength\n wasm.memory[1] = key ? key.length : 0\n wasm.memory[2] = 1 // fanout\n wasm.memory[3] = 1 // depth\n\n if (salt) wasm.memory.set(salt, 32)\n if (personal) wasm.memory.set(personal, 48)\n\n if (this.pointer + 216 > wasm.memory.length) wasm.realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.exports.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n wasm.memory.fill(0, head, head + key.length) // whiteout key\n wasm.memory[this.pointer + 200] = 128\n }\n}\n\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input, 'input must be TypedArray or Buffer')\n\n if (head + input.length > wasm.memory.length) wasm.realloc(head + input.length)\n wasm.memory.set(input, head)\n wasm.exports.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.exports.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return wasm.memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (enc === 'hex') {\n return hexSlice(wasm.memory, this.pointer + 128, this.digestLength)\n }\n\n assert(enc.length >= this.digestLength, 'input must be TypedArray or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = wasm.memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm && wasm.buffer\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasm) return cb(new Error('WebAssembly not supported'))\n\n // backwards compat, can be removed in a new major\n var p = new Promise(function (reject, resolve) {\n wasm.onload(function (err) {\n if (err) resolve()\n else reject()\n cb(err)\n })\n })\n\n return p\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nfunction noop () {}\n\nfunction hexSlice (buf, start, len) {\n var str = ''\n for (var i = 0; i < len; i++) str += toHex(buf[start + i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input != null, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n Proto = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'\"\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({publicKey, encryptedSecretKey})\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({to, amount})\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], - "mappings": "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K,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAE,GAAAC,EAAAC,IAAA,cAAAC,IAEA,IAAIC,GAASF,GAETG,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAEnB,SAASE,GAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAA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A,IAChBU,EAAEV,EAAI,IAAMqB,EAAErB,GACdU,EAAEV,EAAI,IAAMyB,EAAEzB,GACdU,EAAEV,EAAI,IAAM6B,EAAE7B,GACdU,EAAEV,EAAI,IAAMiB,EAAEjB,GAElB,IAAI+F,EAAMrF,EAAE,SAAS,EAAE,EACnBsF,EAAMtF,EAAE,SAAS,EAAE,EACvB,OAAA+E,GAASM,EAAKA,CAAG,EACjBvD,GAAEwD,EAAKA,EAAKD,CAAG,EACfhE,GAAUH,EAAGoE,CAAG,EACT,CACX,CACA,SAASC,GAAuBrE,EAAGI,EAAG,CAClC,OAAO2D,GAAkB/D,EAAGI,EAAGnC,EAAE,CACrC,CACA,IAAIqG,GAAI,CACJ,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAA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", - "names": ["require_base64_js", "__commonJSMin", "exports", "init_esbuild_inject", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "init_esbuild_inject", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "c", "rt", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "i", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "Buffer", "init_esbuild_inject", "__esmMin", "require_browser_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "__self__", "F", "self", "irrelevant", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "error", "fetch", "init", "request", "xhr", "abortXhr", "ctx", "__export", "exports", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "token", "messages", "msg", "_code", "_reason", "opts", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "code", "error", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ws", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "O", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "b", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "i", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "e", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "b", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "i", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "e", "enqueue", "fn", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "i", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "i", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_BYTES", "MAX_UINT32", "oldBrowser", "Buffer", "crypto", "randomBytes", "size", "cb", "bytes", "generated", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_events", "__commonJSMin", "exports", "module", "init_esbuild_inject", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "i", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "require_stream_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_util", "__commonJSMin", "init_esbuild_inject", "require_buffer_list", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "deprecate", "fn", "msg", "config", "warned", "deprecated", "name", "val", "require_stream_writable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "onEndNT", "self", "value", "require_string_decoder", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_stream_readable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_esbuild_inject", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_esbuild_inject", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_hash_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "inherits", "throwIfNotStringOrBuffer", "val", "prefix", "HashBase", "blockSize", "chunk", "encoding", "callback", "error", "err", "data", "block", "offset", "i", "j", "carry", "digest", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "HashBase", "Buffer", "ARRAY16", "MD5", "M", "i", "a", "b", "c", "d", "fnF", "fnG", "fnH", "fnI", "buffer", "rotl", "x", "n", "m", "k", "s", "require_ripemd160", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "inherits", "HashBase", "ARRAY16", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "j", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "i", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "rotl", "t", "buffer", "x", "n", "a", "b", "c", "d", "e", "m", "k", "s", "require_hash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Hash", "blockSize", "finalSize", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "H", "require_sha512", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "algorithm", "Algorithm", "require_stream_browserify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Stream", "EE", "inherits", "dest", "options", "source", "ondata", "chunk", "ondrain", "onend", "onclose", "didOnEnd", "onerror", "er", "cleanup", "require_cipher_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "StringDecoder", "inherits", "CipherBase", "hashMode", "data", "inputEnc", "outputEnc", "outData", "_", "next", "err", "e", "done", "value", "enc", "fin", "out", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "MD5", "RIPEMD160", "sha", "Base", "Hash", "hash", "data", "alg", "require_legacy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Base", "ZEROS", "blocksize", "Hmac", "alg", "key", "ipad", "opad", "i", "data", "h", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MD5", "buffer", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Legacy", "Base", "Buffer", "md5", "RIPEMD160", "sha", "ZEROS", "Hmac", "alg", "key", "blocksize", "hash", "ipad", "opad", "i", "data", "h", "require_algos", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_precondition", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_ALLOC", "iterations", "keylen", "require_default_encoding", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defaultEncoding", "pVersionMajor", "require_to_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "thing", "encoding", "name", "require_sync_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "md5", "RIPEMD160", "sha", "Buffer", "checkParameters", "defaultEncoding", "toBuffer", "ZEROS", "sizes", "Hmac", "alg", "key", "saltLen", "hash", "getDigest", "blocksize", "ipad", "opad", "i", "ipad1", "data", "h", "shaFunc", "rmd160Func", "pbkdf2", "password", "salt", "iterations", "keylen", "digest", "hmac", "DK", "block1", "destPos", "hLen", "l", "T", "U", "j", "k", "require_async", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "checkParameters", "defaultEncoding", "sync", "toBuffer", "ZERO_BUF", "subtle", "toBrowser", "checks", "checkNative", "algo", "prom", "browserPbkdf2", "nextTick", "getNextTick", "password", "salt", "iterations", "length", "key", "res", "resolvePromise", "promise", "callback", "out", "e", "keylen", "digest", "resp", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "bytes", "off", "res", "value", "inL", "inR", "out", "outL", "outR", "i", "j", "num", "shift", "pc2table", "len", "r", "sTable", "b", "sb", "permuteTable", "size", "group", "str", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "require_cipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "Cipher", "options", "data", "off", "min", "i", "out", "inputOff", "outputOff", "count", "max", "buffer", "first", "last", "require_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "utils", "Cipher", "DESState", "DES", "options", "state", "shiftTable", "key", "kL", "kR", "i", "shift", "inp", "inOff", "out", "outOff", "l", "r", "buffer", "off", "value", "pad", "lStart", "rStart", "keyL", "keyR", "s", "f", "t", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "proto", "CBCState", "iv", "i", "instantiate", "Base", "CBC", "options", "keys", "key", "state", "inp", "inOff", "out", "outOff", "superProto", "require_ede", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "Cipher", "DES", "EDEState", "type", "key", "k1", "k2", "k3", "EDE", "options", "state", "inp", "inOff", "out", "outOff", "require_des", "__commonJSMin", "exports", "init_esbuild_inject", "require_browserify_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "CipherBase", "des", "inherits", "Buffer", "modes", "DES", "opts", "modeName", "mode", "type", "key", "iv", "data", "require_ecb", "__commonJSMin", "exports", "init_esbuild_inject", "self", "block", "require_buffer_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "a", "b", "length", "buffer", "i", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "self", "block", "data", "pad", "out", "require_cfb", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "xor", "encryptStart", "self", "data", "decrypt", "len", "out", "require_cfb8", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "out", "chunk", "len", "i", "require_cfb1", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "i", "len", "out", "bit", "value", "shiftIn", "buffer", "chunk", "require_ofb", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "getBlock", "self", "chunk", "Buffer", "pad", "require_incr32", "__commonJSMin", "exports", "module", "init_esbuild_inject", "incr32", "iv", "len", "item", "require_ctr", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "Buffer", "incr32", "getBlock", "self", "out", "blockSize", "chunk", "chunkNum", "start", "i", "offset", "pad", "require_modes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "modeModules", "modes", "key", "require_aes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "asUInt32Array", "buf", "len", "out", "scrubVec", "v", "i", "cryptBlock", "M", "keySchedule", "SUB_MIX", "SBOX", "nRounds", "SUB_MIX0", "SUB_MIX1", "SUB_MIX2", "SUB_MIX3", "s0", "s1", "s2", "s3", "t0", "t1", "t2", "t3", "ksRow", "round", "RCON", "G", "d", "j", "INV_SBOX", "INV_SUB_MIX", "x", "xi", "sx", "x2", "x4", "x8", "t", "AES", "key", "keyWords", "keySize", "ksRows", "k", "invKeySchedule", "ik", "ksR", "tt", "m1", "require_ghash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "ZEROES", "toArray", "buf", "fromArray", "out", "GHASH", "key", "block", "i", "Vi", "Zi", "j", "xi", "lsbVi", "chunk", "abl", "bl", "require_authCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "GHASH", "xor", "incr32", "xorTest", "a", "b", "out", "len", "i", "calcIv", "self", "iv", "ck", "ghash", "toPad", "ivBits", "tail", "StreamCipher", "mode", "key", "decrypt", "h", "chunk", "rump", "tag", "buf", "require_streamCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "StreamCipher", "mode", "key", "iv", "decrypt", "chunk", "require_evp_bytestokey", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "MD5", "EVP_BytesToKey", "password", "salt", "keyBits", "ivLen", "keyLen", "key", "iv", "tmp", "hash", "used", "keyStart", "ivStart", "length", "require_encrypter", "__commonJSMin", "exports", "init_esbuild_inject", "MODES", "AuthCipher", "Buffer", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Cipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "PADDING", "setTo", "len", "padBuff", "i", "createCipheriv", "suite", "password", "config", "createCipher", "keys", "require_decrypter", "__commonJSMin", "exports", "init_esbuild_inject", "AuthCipher", "Buffer", "MODES", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Decipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "unpad", "setTo", "autoPadding", "last", "padded", "i", "createDecipheriv", "suite", "password", "config", "createDecipher", "keys", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "ciphers", "deciphers", "modes", "getCiphers", "require_modes", "__commonJSMin", "exports", "init_esbuild_inject", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "DES", "aes", "aesModes", "desModes", "ebtk", "createCipher", "suite", "password", "keyLen", "ivLen", "keys", "createCipheriv", "createDecipher", "createDecipheriv", "key", "iv", "getCiphers", "require_buffer", "__commonJSMin", "init_esbuild_inject", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex", "str", "end", "r", "len", "c", "parseBase", "mul", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_crypto", "__commonJSMin", "init_esbuild_inject", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "arr", "crypto", "require_mr", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bn", "brorand", "MillerRabin", "rand", "n", "len", "min_bytes", "a", "start", "stop", "size", "k", "cb", "red", "rone", "n1", "s", "d", "rn1", "prime", "x", "i", "g", "require_generatePrime", "__commonJSMin", "exports", "module", "init_esbuild_inject", "randomBytes", "findPrime", "simpleSieve", "fermatTest", "BN", "TWENTYFOUR", "MillerRabin", "millerRabin", "ONE", "TWO", "FIVE", "SIXTEEN", "EIGHT", "TEN", "THREE", "SEVEN", "ELEVEN", "FOUR", "TWELVE", "primes", "_getPrimes", "limit", "res", "i", "k", "sqrt", "j", "p", "red", "bits", "gen", "num", "n2", "require_dh", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "MillerRabin", "millerRabin", "TWENTYFOUR", "ELEVEN", "TEN", "THREE", "SEVEN", "primes", "randomBytes", "DH", "setPublicKey", "pub", "enc", "Buffer", "setPrivateKey", "priv", "primeCache", "checkPrime", "prime", "generator", "gen", "hex", "error", "rem", "malleable", "other", "secret", "out", "front", "formatReturnValue", "bn", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "generatePrime", "primes", "DH", "getDiffieHellman", "mod", "prime", "Buffer", "gen", "ENCODINGS", "createDiffieHellman", "enc", "generator", "genc", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_browserify_rsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "randomBytes", "blind", "priv", "r", "getr", "blinder", "len", "crt", "msg", "blinds", "blinded", "c1", "c2", "qinv", "p", "q", "m1", "m2", "h", "Buffer", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "c", "hi", "lo", "zero2", "word", "toHex", "i", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "m", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "r", "i", "len", "bytes", "k", "res", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "i", "b", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "i", "b", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "i", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "i", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_safer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_reporter", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "options", "obj", "ReporterError", "state", "data", "key", "index", "value", "prev", "now", "msg", "err", "inherited", "elem", "result", "path", "e", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "Buffer", "DecoderBuffer", "base", "options", "data", "save", "res", "fail", "bytes", "EncoderBuffer", "value", "reporter", "item", "out", "offset", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Reporter", "EncoderBuffer", "DecoderBuffer", "assert", "tags", "methods", "overrided", "Node", "enc", "parent", "name", "state", "stateProps", "cstate", "prop", "res", "method", "clone", "body", "child", "args", "children", "arg", "key", "value", "tag", "item", "val", "num", "newKey", "obj", "input", "options", "result", "present", "prevKey", "save", "prevObj", "explicit", "start", "data", "entity", "match", "node", "reporter", "content", "primitive", "cls", "str", "require_der", "__commonJSMin", "exports", "init_esbuild_inject", "reverse", "map", "res", "key", "value", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Node", "der", "DEREncoder", "entity", "DERNode", "data", "reporter", "parent", "tag", "primitive", "cls", "content", "encodedTag", "encodeTag", "header", "lenOctets", "i", "j", "str", "buf", "id", "values", "relative", "size", "ident", "objid", "offset", "two", "num", "time", "date", "numArray", "out", "value", "obj", "dataBuffer", "state", "res", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "DEREncoder", "PEMEncoder", "entity", "data", "options", "p", "out", "i", "require_encoders", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "bignum", "DecoderBuffer", "Node", "der", "DERDecoder", "entity", "DERNode", "data", "options", "parent", "buffer", "tag", "any", "state", "decodedTag", "derDecodeTag", "len", "derDecodeLen", "res", "fail", "decoder", "result", "possibleEnd", "unused", "raw", "str", "i", "numstr", "printstr", "values", "relative", "identifiers", "ident", "subident", "first", "second", "tmp", "year", "mon", "day", "hour", "min", "sec", "obj", "buf", "cls", "primitive", "oct", "tagStr", "num", "j", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "DERDecoder", "PEMDecoder", "entity", "data", "options", "lines", "label", "re", "start", "end", "i", "match", "base64", "input", "require_decoders", "__commonJSMin", "exports", "init_esbuild_inject", "decoders", "require_api", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "decoders", "inherits", "api", "name", "body", "Entity", "Base", "Generated", "entity", "enc", "data", "options", "reporter", "require_base", "__commonJSMin", "exports", "init_esbuild_inject", "base", "require_constants", "__commonJSMin", "exports", "init_esbuild_inject", "constants", "map", "res", "key", "value", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "require_certificate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn", "Time", "AttributeTypeValue", "AlgorithmIdentifier", "SubjectPublicKeyInfo", "RelativeDistinguishedName", "RDNSequence", "Name", "Validity", "Extension", "TBSCertificate", "X509Certificate", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "RSAPrivateKey", "RSAPublicKey", "PublicKey", "AlgorithmIdentifier", "PrivateKeyInfo", "EncryptedPrivateKeyInfo", "DSAPrivateKey", "ECPrivateKey", "ECParameters", "require_fixProc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "findProc", "startRegex", "fullRegex", "evp", "ciphers", "Buffer", "okey", "password", "key", "match", "decrypted", "suite", "iv", "cipherText", "cipherKey", "out", "cipher", "match2", "tag", "require_parse_asn1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn1", "aesid", "fixProc", "ciphers", "compat", "Buffer", "parseKeys", "buffer", "password", "stripped", "type", "data", "subtype", "ndata", "decrypt", "salt", "iters", "algo", "iv", "cipherText", "keylen", "key", "cipher", "out", "require_sign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHmac", "crt", "EC", "BN", "parseKeys", "curves", "sign", "hash", "key", "hashType", "signType", "tag", "priv", "ecSign", "dsaSign", "len", "pad", "i", "out", "curveId", "curve", "algo", "x", "p", "q", "g", "r", "k", "H", "bits2int", "s", "kv", "getKey", "makeKey", "makeR", "toDER", "total", "res", "zeros", "hlen", "hbits", "bits2octets", "v", "obits", "bits", "shift", "t", "require_verify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "BN", "EC", "parseKeys", "curves", "verify", "sig", "hash", "key", "signType", "tag", "pub", "ecVerify", "dsaVerify", "len", "pad", "padNum", "i", "red", "out", "curveId", "curve", "pubkey", "p", "q", "g", "y", "unpacked", "s", "r", "checkValue", "montp", "w", "v", "b", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHash", "stream", "inherits", "sign", "verify", "algorithms", "key", "Sign", "algorithm", "data", "_", "done", "enc", "hash", "sig", "Verify", "createSign", "createVerify", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "elliptic", "BN", "curve", "ECDH", "aliases", "enc", "format", "other", "inenc", "Buffer", "otherPub", "out", "formatReturnValue", "key", "pub", "priv", "_priv", "bn", "len", "buf", "zeros", "require_mgf", "__commonJSMin", "exports", "module", "init_esbuild_inject", "createHash", "Buffer", "seed", "len", "t", "c", "i2ops", "out", "require_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "a", "b", "len", "i", "require_withPublic", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "Buffer", "withPublic", "paddedMsg", "key", "require_publicEncrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "randomBytes", "createHash", "mgf", "xor", "BN", "withPublic", "crt", "Buffer", "publicKey", "msg", "reverse", "padding", "key", "paddedMsg", "oaep", "pkcs1", "k", "mLen", "iHash", "hLen", "hLen2", "ps", "dblen", "seed", "maskedDb", "maskedSeed", "nonZero", "len", "out", "i", "cache", "cur", "num", "require_privateDecrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "mgf", "xor", "BN", "crt", "createHash", "withPublic", "Buffer", "privateKey", "enc", "reverse", "padding", "key", "k", "msg", "zBuffer", "oaep", "pkcs1", "iHash", "hLen", "maskedSeed", "maskedDb", "seed", "db", "compare", "i", "p1", "status", "ps", "a", "b", "dif", "len", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "key", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "oldBrowser", "safeBuffer", "randombytes", "Buffer", "kBufferMaxLength", "crypto", "kMaxUint32", "assertOffset", "offset", "length", "assertSize", "size", "randomFill", "randomFillSync", "buf", "cb", "actualFill", "ourBuf", "uint", "err", "bytes", "require_crypto_browserify", "__commonJSMin", "exports", "init_esbuild_inject", "algos", "algoKeys", "hashes", "p", "aes", "dh", "sign", "publicEncrypt", "rf", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "notEqual", "notOk", "equal", "a", "b", "m", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "loadWebAssembly", "opts", "imp", "wasm", "toUint8Array", "ready", "mod", "realloc", "onload", "size", "cb", "setup", "w", "s", "charCodeAt", "c", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "wasm", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "input", "enc", "hexSlice", "i", "cb", "noop", "p", "reject", "resolve", "err", "buf", "start", "len", "str", "toHex", "n", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "d", "crypto_verify_32", "set25519", "r", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "n", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "b", "m", "par25519", "vn", "x", "xi", "y", "yi", "d", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "i", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_crypto", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "pseudoRandomKey", "cipher", "decipher", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_crypto", "import_base64url", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "v", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "t", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] + "sources": ["../node_modules/base64-js/index.js", "../node_modules/ieee754/index.js", "../node_modules/buffer/index.js", "../esbuild.inject.js", "../node_modules/cross-fetch/dist/browser-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/isomorphic-ws/browser.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/safe-buffer/index.js", "../node_modules/randombytes/browser.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/events/events.js", "../node_modules/readable-stream/lib/internal/streams/stream-browser.js", "(disabled):util", "../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../node_modules/readable-stream/lib/internal/streams/destroy.js", "../node_modules/readable-stream/errors-browser.js", "../node_modules/readable-stream/lib/internal/streams/state.js", "../node_modules/util-deprecate/browser.js", "../node_modules/readable-stream/lib/_stream_writable.js", "../node_modules/readable-stream/lib/_stream_duplex.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../node_modules/readable-stream/lib/internal/streams/from-browser.js", "../node_modules/readable-stream/lib/_stream_readable.js", "../node_modules/readable-stream/lib/_stream_transform.js", "../node_modules/readable-stream/lib/_stream_passthrough.js", "../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../node_modules/readable-stream/readable-browser.js", "../node_modules/hash-base/index.js", "../node_modules/md5.js/index.js", "../node_modules/ripemd160/index.js", "../node_modules/sha.js/hash.js", "../node_modules/sha.js/sha.js", "../node_modules/sha.js/sha1.js", "../node_modules/sha.js/sha256.js", "../node_modules/sha.js/sha224.js", "../node_modules/sha.js/sha512.js", "../node_modules/sha.js/sha384.js", "../node_modules/sha.js/index.js", "../node_modules/stream-browserify/index.js", "../node_modules/cipher-base/index.js", "../node_modules/create-hash/browser.js", "../node_modules/create-hmac/legacy.js", "../node_modules/create-hash/md5.js", "../node_modules/create-hmac/browser.js", "../node_modules/browserify-sign/algos.js", "../node_modules/pbkdf2/lib/precondition.js", "../node_modules/pbkdf2/lib/default-encoding.js", "../node_modules/pbkdf2/lib/to-buffer.js", "../node_modules/pbkdf2/lib/sync-browser.js", "../node_modules/pbkdf2/lib/async.js", "../node_modules/pbkdf2/browser.js", "../node_modules/des.js/lib/des/utils.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/des.js/lib/des/cipher.js", "../node_modules/des.js/lib/des/des.js", "../node_modules/des.js/lib/des/cbc.js", "../node_modules/des.js/lib/des/ede.js", "../node_modules/des.js/lib/des.js", "../node_modules/browserify-des/index.js", "../node_modules/browserify-aes/modes/ecb.js", "../node_modules/buffer-xor/index.js", "../node_modules/browserify-aes/modes/cbc.js", "../node_modules/browserify-aes/modes/cfb.js", "../node_modules/browserify-aes/modes/cfb8.js", "../node_modules/browserify-aes/modes/cfb1.js", "../node_modules/browserify-aes/modes/ofb.js", "../node_modules/browserify-aes/incr32.js", "../node_modules/browserify-aes/modes/ctr.js", "../node_modules/browserify-aes/modes/index.js", "../node_modules/browserify-aes/aes.js", "../node_modules/browserify-aes/ghash.js", "../node_modules/browserify-aes/authCipher.js", "../node_modules/browserify-aes/streamCipher.js", "../node_modules/evp_bytestokey/index.js", "../node_modules/browserify-aes/encrypter.js", "../node_modules/browserify-aes/decrypter.js", "../node_modules/browserify-aes/browser.js", "../node_modules/browserify-des/modes.js", "../node_modules/browserify-cipher/browser.js", "../node_modules/buffer/index.js", "../node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js", "../node_modules/miller-rabin/node_modules/bn.js/lib/bn.js", "(disabled):crypto", "../node_modules/brorand/index.js", "../node_modules/miller-rabin/lib/mr.js", "../node_modules/diffie-hellman/lib/generatePrime.js", "../node_modules/diffie-hellman/lib/dh.js", "../node_modules/diffie-hellman/browser.js", "../node_modules/bn.js/lib/bn.js", "../node_modules/browserify-rsa/index.js", "../node_modules/elliptic/node_modules/bn.js/lib/bn.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/asn1.js/node_modules/bn.js/lib/bn.js", "../node_modules/safer-buffer/safer.js", "../node_modules/asn1.js/lib/asn1/base/reporter.js", "../node_modules/asn1.js/lib/asn1/base/buffer.js", "../node_modules/asn1.js/lib/asn1/base/node.js", "../node_modules/asn1.js/lib/asn1/constants/der.js", "../node_modules/asn1.js/lib/asn1/encoders/der.js", "../node_modules/asn1.js/lib/asn1/encoders/pem.js", "../node_modules/asn1.js/lib/asn1/encoders/index.js", "../node_modules/asn1.js/lib/asn1/decoders/der.js", "../node_modules/asn1.js/lib/asn1/decoders/pem.js", "../node_modules/asn1.js/lib/asn1/decoders/index.js", "../node_modules/asn1.js/lib/asn1/api.js", "../node_modules/asn1.js/lib/asn1/base/index.js", "../node_modules/asn1.js/lib/asn1/constants/index.js", "../node_modules/asn1.js/lib/asn1.js", "../node_modules/parse-asn1/certificate.js", "../node_modules/parse-asn1/asn1.js", "../node_modules/parse-asn1/fixProc.js", "../node_modules/parse-asn1/index.js", "../node_modules/browserify-sign/browser/sign.js", "../node_modules/browserify-sign/browser/verify.js", "../node_modules/browserify-sign/browser/index.js", "../node_modules/create-ecdh/node_modules/bn.js/lib/bn.js", "../node_modules/create-ecdh/browser.js", "../node_modules/public-encrypt/mgf.js", "../node_modules/public-encrypt/xor.js", "../node_modules/public-encrypt/node_modules/bn.js/lib/bn.js", "../node_modules/public-encrypt/withPublic.js", "../node_modules/public-encrypt/publicEncrypt.js", "../node_modules/public-encrypt/privateDecrypt.js", "../node_modules/public-encrypt/browser.js", "../node_modules/randomfill/browser.js", "../node_modules/crypto-browserify/index.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/b4a/lib/ascii.js", "../node_modules/b4a/lib/base64.js", "../node_modules/b4a/lib/hex.js", "../node_modules/b4a/lib/utf8.js", "../node_modules/b4a/lib/utf16le.js", "../node_modules/b4a/browser.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], + "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "export let Buffer = require(\"buffer\").Buffer", "var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || global\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n return this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n return this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n return req\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => callback && callback(null)\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n return req\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.reqs = new Set()\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(code, reason, wasClean){\n this.close(code, reason, wasClean)\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry(1005, \"timeout\", false)\n }\n\n isActive(){ return this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting }\n\n poll(){\n this.ajax(\"GET\", null, () => this.ontimeout(), resp => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => this.onmessage({data: msg}), 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen({})\n this.poll()\n break\n case 403:\n this.onerror(403)\n this.close(1008, \"forbidden\", false)\n break\n case 0:\n case 500:\n this.onerror(500)\n this.closeAndRetry(1011, \"internal server error\", 500)\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n this.ajax(\"POST\", body, () => this.onerror(\"timeout\"), resp => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry(1011, \"internal server error\", false)\n }\n })\n }\n\n close(code, reason, wasClean){\n for(let req of this.reqs){ req.abort() }\n this.readyState = SOCKET_STATES.closed\n let opts = Object.assign({code: 1000, reason: undefined, wasClean: true}, {code, reason, wasClean})\n if(typeof(CloseEvent) !== \"undefined\"){\n this.onclose(new CloseEvent(\"close\", opts))\n } else {\n this.onclose(opts)\n }\n }\n\n ajax(method, body, onCallerTimeout, callback){\n let req\n let ontimeout = () => {\n this.reqs.delete(req)\n onCallerTimeout()\n }\n req = Ajax.request(method, this.endpointURL(), \"application/json\", body, this.timeout, ontimeout, resp => {\n this.reqs.delete(req)\n if(this.isActive()){ callback(resp) }\n })\n this.reqs.add(req)\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millisec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millisec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimeoutTimer = null\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Returns the LongPoll transport reference\n */\n getLongPollTransport(){ return LongPoll }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.sendBuffer = []\n if(this.conn){\n this.conn.close()\n this.conn = null\n }\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualified socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n\n this.connectClock++\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * Pings the server and invokes the callback with the RTT in milliseconds\n * @param {Function} callback\n *\n * Returns true if the ping was pushed or false if unable to be pushed.\n */\n ping(callback){\n if(!this.isConnected()){ return false }\n let ref = this.makeRef()\n let startTime = Date.now()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: ref})\n let onMsgRef = this.onMessage(msg => {\n if(msg.ref === ref){\n this.off([onMsgRef])\n callback(Date.now() - startTime)\n }\n })\n return true\n }\n\n /**\n * @private\n */\n\n clearHeartbeats(){\n clearTimeout(this.heartbeatTimer)\n clearTimeout(this.heartbeatTimeoutTimer)\n }\n\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.triggerChanError()\n this.closeWasClean = false\n this.teardown(() => this.reconnectTimer.scheduleTimeout(), WS_CLOSE_NORMAL, \"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n this.clearHeartbeats()\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onopen = function (){ } // noop\n this.conn.onerror = function (){ } // noop\n this.conn.onmessage = function (){ } // noop\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n this.clearHeartbeats()\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimeoutTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n this.clearHeartbeats()\n this.pendingHeartbeatRef = null\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}", "// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", "module.exports = require('events').EventEmitter;\n", "", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();", "'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;", "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n", "var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n", "var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n", "var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n", "var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n", "var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n", "'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n", "var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n", "module.exports = require('./browser/algorithms.json')\n", "var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n", "var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n", "var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n", "var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n", "exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n", "'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\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\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\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", "'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", "var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n", "exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n", "var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n", "var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n", "var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n", "// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n", "var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho V\u00E4h\u00E4-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\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", "var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n", "var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n", "var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n", "var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\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", "var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n", "var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n", "'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n", "'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n", "'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n", "'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n", "'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n", "'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n", "'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n", "'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n", "// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n", "// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n", "// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n", "var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n", "var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n", "var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n", "module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n", "var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n", "var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n", "exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n", "'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n", "'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "module.exports = assert\n\nclass AssertionError extends Error {}\nAssertionError.prototype.name = 'AssertionError'\n\n/**\n * Minimal assert function\n * @param {any} t Value to check if falsy\n * @param {string=} m Optional assertion error message\n * @throws {AssertionError}\n */\nfunction assert (t, m) {\n if (!t) {\n var err = new AssertionError(m)\n if (Error.captureStackTrace) Error.captureStackTrace(err, assert)\n throw err\n }\n}\n", "function byteLength (string) {\n return string.length\n}\n\nfunction toString (buffer) {\n const len = buffer.byteLength\n\n let result = ''\n\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buffer[i])\n }\n\n return result\n}\n\nfunction write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n for (let i = 0; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i)\n }\n\n return len\n}\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n", "const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\nconst codes = new Uint8Array(256)\n\nfor (let i = 0; i < alphabet.length; i++) {\n codes[alphabet.charCodeAt(i)] = i\n}\n\ncodes[/* - */ 0x2d] = 62\ncodes[/* _ */ 0x5f] = 63\n\nfunction byteLength (string) {\n let len = string.length\n\n if (string.charCodeAt(len - 1) === 0x3d) len--\n if (len > 1 && string.charCodeAt(len - 1) === 0x3d) len--\n\n return (len * 3) >>> 2\n}\n\nfunction toString (buffer) {\n const len = buffer.byteLength\n\n let result = ''\n\n for (let i = 0; i < len; i += 3) {\n result += (\n alphabet[buffer[i] >> 2] +\n alphabet[((buffer[i] & 3) << 4) | (buffer[i + 1] >> 4)] +\n alphabet[((buffer[i + 1] & 15) << 2) | (buffer[i + 2] >> 6)] +\n alphabet[buffer[i + 2] & 63]\n )\n }\n\n if (len % 3 === 2) {\n result = result.substring(0, result.length - 1) + '='\n } else if (len % 3 === 1) {\n result = result.substring(0, result.length - 2) + '=='\n }\n\n return result\n};\n\nfunction write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n for (let i = 0, j = 0; i < len; i += 4) {\n const a = codes[string.charCodeAt(i)]\n const b = codes[string.charCodeAt(i + 1)]\n const c = codes[string.charCodeAt(i + 2)]\n const d = codes[string.charCodeAt(i + 3)]\n\n buffer[j++] = (a << 2) | (b >> 4)\n buffer[j++] = ((b & 15) << 4) | (c >> 2)\n buffer[j++] = ((c & 3) << 6) | (d & 63)\n }\n\n return len\n};\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n", "function byteLength (string) {\n return string.length >>> 1\n}\n\nfunction toString (buffer) {\n const len = buffer.byteLength\n\n buffer = new DataView(buffer.buffer, buffer.byteOffset, len)\n\n let result = ''\n let i = 0\n\n for (let n = len - (len % 4); i < n; i += 4) {\n result += buffer.getUint32(i).toString(16).padStart(8, '0')\n }\n\n for (; i < len; i++) {\n result += buffer.getUint8(i).toString(16).padStart(2, '0')\n }\n\n return result\n}\n\nfunction write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n for (let i = 0; i < len; i++) {\n const a = hexValue(string.charCodeAt(i * 2))\n const b = hexValue(string.charCodeAt(i * 2 + 1))\n\n if (a === undefined || b === undefined) {\n return buffer.subarray(0, i)\n }\n\n buffer[offset + i] = (a << 4) | b\n }\n\n return len\n}\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n\nfunction hexValue (char) {\n if (char >= 0x30 && char <= 0x39) return char - 0x30\n if (char >= 0x41 && char <= 0x46) return char - 0x41 + 10\n if (char >= 0x61 && char <= 0x66) return char - 0x61 + 10\n}\n", "function byteLength (string) {\n let length = 0\n\n for (let i = 0, n = string.length; i < n; i++) {\n const code = string.charCodeAt(i)\n\n if (code >= 0xd800 && code <= 0xdbff && i + 1 < n) {\n const code = string.charCodeAt(i + 1)\n\n if (code >= 0xdc00 && code <= 0xdfff) {\n length += 4\n i++\n continue\n }\n }\n\n if (code <= 0x7f) length += 1\n else if (code <= 0x7ff) length += 2\n else length += 3\n }\n\n return length\n}\n\nlet toString\n\nif (typeof TextDecoder !== 'undefined') {\n const decoder = new TextDecoder()\n\n toString = function toString (buffer) {\n return decoder.decode(buffer)\n }\n} else {\n toString = function toString (buffer) {\n const len = buffer.byteLength\n\n let output = ''\n let i = 0\n\n while (i < len) {\n let byte = buffer[i]\n\n if (byte <= 0x7f) {\n output += String.fromCharCode(byte)\n i++\n continue\n }\n\n let bytesNeeded = 0\n let codePoint = 0\n\n if (byte <= 0xdf) {\n bytesNeeded = 1\n codePoint = byte & 0x1f\n } else if (byte <= 0xef) {\n bytesNeeded = 2\n codePoint = byte & 0x0f\n } else if (byte <= 0xf4) {\n bytesNeeded = 3\n codePoint = byte & 0x07\n }\n\n if (len - i - bytesNeeded > 0) {\n let k = 0\n\n while (k < bytesNeeded) {\n byte = buffer[i + k + 1]\n codePoint = (codePoint << 6) | (byte & 0x3f)\n k += 1\n }\n } else {\n codePoint = 0xfffd\n bytesNeeded = len - i\n }\n\n output += String.fromCodePoint(codePoint)\n i += bytesNeeded + 1\n }\n\n return output\n }\n}\n\nlet write\n\nif (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder()\n\n write = function write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n encoder.encodeInto(string, buffer.subarray(offset, offset + len))\n return len\n }\n} else {\n write = function write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n buffer = buffer.subarray(offset, offset + len)\n\n let i = 0\n let j = 0\n\n while (i < string.length) {\n const code = string.codePointAt(i)\n\n if (code <= 0x7f) {\n buffer[j++] = code\n i++\n continue\n }\n\n let count = 0\n let bits = 0\n\n if (code <= 0x7ff) {\n count = 6\n bits = 0xc0\n } else if (code <= 0xffff) {\n count = 12\n bits = 0xe0\n } else if (code <= 0x1fffff) {\n count = 18\n bits = 0xf0\n }\n\n buffer[j++] = bits | (code >> count)\n count -= 6\n\n while (count >= 0) {\n buffer[j++] = 0x80 | ((code >> count) & 0x3f)\n count -= 6\n }\n\n i += code >= 0x10000 ? 2 : 1\n }\n\n return len\n }\n}\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n", "function byteLength (string) {\n return string.length * 2\n}\n\nfunction toString (buffer) {\n const len = buffer.byteLength\n\n let result = ''\n\n for (let i = 0; i < len - 1; i += 2) {\n result += String.fromCharCode(buffer[i] + (buffer[i + 1] * 256))\n }\n\n return result\n}\n\nfunction write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n let units = len\n\n for (let i = 0; i < string.length; ++i) {\n if ((units -= 2) < 0) break\n\n const c = string.charCodeAt(i)\n const hi = c >> 8\n const lo = c % 256\n\n buffer[offset + i * 2] = lo\n buffer[offset + i * 2 + 1] = hi\n }\n\n return len\n}\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n", "const ascii = require('./lib/ascii')\nconst base64 = require('./lib/base64')\nconst hex = require('./lib/hex')\nconst utf8 = require('./lib/utf8')\nconst utf16le = require('./lib/utf16le')\n\nconst LE = new Uint8Array(Uint16Array.of(0xff).buffer)[0] === 0xff\n\nfunction codecFor (encoding) {\n switch (encoding) {\n case 'ascii':\n return ascii\n case 'base64':\n return base64\n case 'hex':\n return hex\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16le\n default:\n throw new Error(`Unknown encoding: ${encoding}`)\n }\n}\n\nfunction isBuffer (value) {\n return value instanceof Uint8Array\n}\n\nfunction isEncoding (encoding) {\n try {\n codecFor(encoding)\n return true\n } catch {\n return false\n }\n}\n\nfunction alloc (size, fill, encoding) {\n const buffer = new Uint8Array(size)\n if (fill !== undefined) exports.fill(buffer, fill, 0, buffer.byteLength, encoding)\n return buffer\n}\n\nfunction allocUnsafe (size) {\n return new Uint8Array(size)\n}\n\nfunction allocUnsafeSlow (size) {\n return new Uint8Array(size)\n}\n\nfunction byteLength (string, encoding) {\n return codecFor(encoding).byteLength(string)\n}\n\nfunction compare (a, b) {\n if (a === b) return 0\n\n const len = Math.min(a.byteLength, b.byteLength)\n\n a = new DataView(a.buffer, a.byteOffset, a.byteLength)\n b = new DataView(b.buffer, b.byteOffset, b.byteLength)\n\n let i = 0\n\n for (let n = len - (len % 4); i < n; i += 4) {\n const x = a.getUint32(i, LE)\n const y = b.getUint32(i, LE)\n if (x !== y) break\n }\n\n for (; i < len; i++) {\n const x = a.getUint8(i)\n const y = b.getUint8(i)\n if (x < y) return -1\n if (x > y) return 1\n }\n\n return a.byteLength > b.byteLength ? 1 : a.byteLength < b.byteLength ? -1 : 0\n}\n\nfunction concat (buffers, totalLength) {\n if (totalLength === undefined) {\n totalLength = buffers.reduce((len, buffer) => len + buffer.byteLength, 0)\n }\n\n const result = new Uint8Array(totalLength)\n\n buffers.reduce(\n (offset, buffer) => {\n result.set(buffer, offset)\n return offset + buffer.byteLength\n },\n 0\n )\n\n return result\n}\n\nfunction copy (source, target, targetStart = 0, start = 0, end = source.byteLength) {\n if (end > 0 && end < start) return 0\n if (end === start) return 0\n if (source.byteLength === 0 || target.byteLength === 0) return 0\n\n if (targetStart < 0) throw new RangeError('targetStart is out of range')\n if (start < 0 || start >= source.byteLength) throw new RangeError('sourceStart is out of range')\n if (end < 0) throw new RangeError('sourceEnd is out of range')\n\n if (targetStart >= target.byteLength) targetStart = target.byteLength\n if (end > source.byteLength) end = source.byteLength\n if (target.byteLength - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (source === target) {\n target.copyWithin(targetStart, start, end)\n } else {\n target.set(source.subarray(start, end), targetStart)\n }\n\n return len\n}\n\nfunction equals (a, b) {\n if (a === b) return true\n if (a.byteLength !== b.byteLength) return false\n\n const len = a.byteLength\n\n a = new DataView(a.buffer, a.byteOffset, a.byteLength)\n b = new DataView(b.buffer, b.byteOffset, b.byteLength)\n\n let i = 0\n\n for (let n = len - (len % 4); i < n; i += 4) {\n if (a.getUint32(i, LE) !== b.getUint32(i, LE)) return false\n }\n\n for (; i < len; i++) {\n if (a.getUint8(i) !== b.getUint8(i)) return false\n }\n\n return true\n}\n\nfunction fill (buffer, value, offset, end, encoding) {\n if (typeof value === 'string') {\n // fill(buffer, string, encoding)\n if (typeof offset === 'string') {\n encoding = offset\n offset = 0\n end = buffer.byteLength\n\n // fill(buffer, string, offset, encoding)\n } else if (typeof end === 'string') {\n encoding = end\n end = buffer.byteLength\n }\n } else if (typeof val === 'number') {\n value = value & 0xff\n } else if (typeof val === 'boolean') {\n value = +value\n }\n\n if (offset < 0 || buffer.byteLength < offset || buffer.byteLength < end) {\n throw new RangeError('Out of range index')\n }\n\n if (offset === undefined) offset = 0\n if (end === undefined) end = buffer.byteLength\n\n if (end <= offset) return buffer\n\n if (!value) value = 0\n\n if (typeof value === 'number') {\n for (let i = offset; i < end; ++i) {\n buffer[i] = value\n }\n } else {\n value = isBuffer(value) ? value : from(value, encoding)\n\n const len = value.byteLength\n\n for (let i = 0; i < end - offset; ++i) {\n buffer[i + offset] = value[i % len]\n }\n }\n\n return buffer\n}\n\nfunction from (value, encodingOrOffset, length) {\n // from(string, encoding)\n if (typeof value === 'string') return fromString(value, encodingOrOffset)\n\n // from(array)\n if (Array.isArray(value)) return fromArray(value)\n\n // from(buffer)\n if (ArrayBuffer.isView(value)) return fromBuffer(value)\n\n // from(arrayBuffer[, byteOffset[, length]])\n return fromArrayBuffer(value, encodingOrOffset, length)\n}\n\nfunction fromString (string, encoding) {\n const codec = codecFor(encoding)\n const buffer = new Uint8Array(codec.byteLength(string))\n codec.write(buffer, string, 0, buffer.byteLength)\n return buffer\n}\n\nfunction fromArray (array) {\n const buffer = new Uint8Array(array.length)\n buffer.set(array)\n return buffer\n}\n\nfunction fromBuffer (buffer) {\n const copy = new Uint8Array(buffer.byteLength)\n copy.set(buffer)\n return copy\n}\n\nfunction fromArrayBuffer (arrayBuffer, byteOffset, length) {\n return new Uint8Array(arrayBuffer, byteOffset, length)\n}\n\nfunction includes (buffer, value, byteOffset, encoding) {\n return indexOf(buffer, value, byteOffset, encoding) !== -1\n}\n\nfunction bidirectionalIndexOf (buffer, value, byteOffset, encoding, first) {\n if (buffer.byteLength === 0) return -1\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset === undefined) {\n byteOffset = first ? 0 : (buffer.length - 1)\n } else if (byteOffset < 0) {\n byteOffset += buffer.byteLength\n }\n\n if (byteOffset >= buffer.byteLength) {\n if (first) return -1\n else byteOffset = buffer.byteLength - 1\n } else if (byteOffset < 0) {\n if (first) byteOffset = 0\n else return -1\n }\n\n if (typeof value === 'string') {\n value = from(value, encoding)\n } else if (typeof value === 'number') {\n value = value & 0xff\n\n if (first) {\n return buffer.indexOf(value, byteOffset)\n } else {\n return buffer.lastIndexOf(value, byteOffset)\n }\n }\n\n if (value.byteLength === 0) return -1\n\n if (first) {\n let foundIndex = -1\n\n for (let i = byteOffset; i < buffer.byteLength; i++) {\n if (buffer[i] === value[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === value.byteLength) return foundIndex\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + value.byteLength > buffer.byteLength) {\n byteOffset = buffer.byteLength - value.byteLength\n }\n\n for (let i = byteOffset; i >= 0; i--) {\n let found = true\n\n for (let j = 0; j < value.byteLength; j++) {\n if (buffer[i + j] !== value[j]) {\n found = false\n break\n }\n }\n\n if (found) return i\n }\n }\n\n return -1\n}\n\nfunction indexOf (buffer, value, byteOffset, encoding) {\n return bidirectionalIndexOf(buffer, value, byteOffset, encoding, true /* first */)\n}\n\nfunction lastIndexOf (buffer, value, byteOffset, encoding) {\n return bidirectionalIndexOf(buffer, value, byteOffset, encoding, false /* last */)\n}\n\nfunction swap (buffer, n, m) {\n const i = buffer[n]\n buffer[n] = buffer[m]\n buffer[m] = i\n}\n\nfunction swap16 (buffer) {\n const len = buffer.byteLength\n\n if (len % 2 !== 0) throw new RangeError('Buffer size must be a multiple of 16-bits')\n\n for (let i = 0; i < len; i += 2) swap(buffer, i, i + 1)\n\n return buffer\n}\n\nfunction swap32 (buffer) {\n const len = buffer.byteLength\n\n if (len % 4 !== 0) throw new RangeError('Buffer size must be a multiple of 32-bits')\n\n for (let i = 0; i < len; i += 4) {\n swap(buffer, i, i + 3)\n swap(buffer, i + 1, i + 2)\n }\n\n return buffer\n}\n\nfunction swap64 (buffer) {\n const len = buffer.byteLength\n\n if (len % 8 !== 0) throw new RangeError('Buffer size must be a multiple of 64-bits')\n\n for (let i = 0; i < len; i += 8) {\n swap(buffer, i, i + 7)\n swap(buffer, i + 1, i + 6)\n swap(buffer, i + 2, i + 5)\n swap(buffer, i + 3, i + 4)\n }\n\n return buffer\n}\n\nfunction toBuffer (buffer) {\n return buffer\n}\n\nfunction toString (buffer, encoding, start = 0, end = buffer.byteLength) {\n const len = buffer.byteLength\n\n if (start >= len) return ''\n if (end <= start) return ''\n if (start < 0) start = 0\n if (end > len) end = len\n\n if (start !== 0 || end < len) buffer = buffer.subarray(start, end)\n\n return codecFor(encoding).toString(buffer)\n}\n\nfunction write (buffer, string, offset, length, encoding) {\n // write(buffer, string)\n if (offset === undefined) {\n encoding = 'utf8'\n\n // write(buffer, string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n offset = undefined\n\n // write(buffer, string, offset, encoding)\n } else if (encoding === undefined && typeof length === 'string') {\n encoding = length\n length = undefined\n }\n\n return codecFor(encoding).write(buffer, string, offset, length)\n}\n\nfunction writeDoubleLE (buffer, value, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n view.setFloat64(offset, value, true)\n\n return offset + 8\n}\n\nfunction writeFloatLE (buffer, value, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n view.setFloat32(offset, value, true)\n\n return offset + 4\n}\n\nfunction writeUInt32LE (buffer, value, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n view.setUint32(offset, value, true)\n\n return offset + 4\n}\n\nfunction writeInt32LE (buffer, value, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n view.setInt32(offset, value, true)\n\n return offset + 4\n}\n\nfunction readDoubleLE (buffer, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\n return view.getFloat64(offset, true)\n}\n\nfunction readFloatLE (buffer, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\n return view.getFloat32(offset, true)\n}\n\nfunction readUInt32LE (buffer, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\n return view.getUint32(offset, true)\n}\n\nfunction readInt32LE (buffer, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\n return view.getInt32(offset, true)\n}\n\nmodule.exports = exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n writeDoubleLE,\n writeFloatLE,\n writeUInt32LE,\n writeInt32LE,\n readDoubleLE,\n readFloatLE,\n readUInt32LE,\n readInt32LE\n}\n", "var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __toBinary = /* @__PURE__ */ (() => {\n var table = new Uint8Array(128);\n for (var i = 0; i < 64; i++)\n table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i;\n return (base64) => {\n var n = base64.length, bytes2 = new Uint8Array((n - (base64[n - 1] == \"=\") - (base64[n - 2] == \"=\")) * 3 / 4 | 0);\n for (var i2 = 0, j = 0; i2 < n; ) {\n var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)];\n var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)];\n bytes2[j++] = c0 << 2 | c1 >> 4;\n bytes2[j++] = c1 << 4 | c2 >> 2;\n bytes2[j++] = c2 << 6 | c3;\n }\n return bytes2;\n };\n})();\n\n// wasm-binary:./blake2b.wat\nvar require_blake2b = __commonJS({\n \"wasm-binary:./blake2b.wat\"(exports2, module2) {\n module2.exports = __toBinary(\"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\");\n }\n});\n\n// wasm-module:./blake2b.wat\nvar bytes = require_blake2b();\nvar compiled = WebAssembly.compile(bytes);\nmodule.exports = async (imports) => {\n const instance = await WebAssembly.instantiate(await compiled, imports);\n return instance.exports;\n};\n", "var assert = require('nanoassert')\nvar b4a = require('b4a')\n\nvar wasm = null\nvar wasmPromise = typeof WebAssembly !== \"undefined\" && require('./blake2b')().then(mod => {\n wasm = mod\n})\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!wasm) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) {\n assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')\n assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n }\n if (salt != null) {\n assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')\n assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n }\n if (personal != null) {\n assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')\n assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n this._memory = new Uint8Array(wasm.memory.buffer)\n\n this._memory.fill(0, 0, 64)\n this._memory[0] = this.digestLength\n this._memory[1] = key ? key.length : 0\n this._memory[2] = 1 // fanout\n this._memory[3] = 1 // depth\n\n if (salt) this._memory.set(salt, 32)\n if (personal) this._memory.set(personal, 48)\n\n if (this.pointer + 216 > this._memory.length) this._realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n this._memory.fill(0, head, head + key.length) // whiteout key\n this._memory[this.pointer + 200] = 128\n }\n}\n\nBlake2b.prototype._realloc = function (size) {\n wasm.memory.grow(Math.max(0, Math.ceil(Math.abs(size - this._memory.length) / 65536)))\n this._memory = new Uint8Array(wasm.memory.buffer)\n}\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')\n\n if (head + input.length > this._memory.length) this._realloc(head + input.length)\n this._memory.set(input, head)\n wasm.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return this._memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (typeof enc === 'string') {\n return b4a.toString(this._memory, enc, this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n assert(enc instanceof Uint8Array && enc.length >= this.digestLength, 'input must be Uint8Array or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = this._memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasmPromise) return cb(new Error('WebAssembly not supported'))\n return wasmPromise.then(() => cb(), cb)\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nBlake2b.prototype.getPartialHash = function () {\n return this._memory.slice(this.pointer, this.pointer + 216);\n}\n\nBlake2b.prototype.setPartialHash = function (ph) {\n this._memory.set(ph, this.pointer);\n}\n\nfunction noop () {}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf instanceof Uint8Array, 'out must be \"binary\", \"hex\", Uint8Array, or Buffer')\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) {\n assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')\n assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n }\n if (salt != null) {\n assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')\n assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n }\n if (personal != null) {\n assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')\n assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n module.exports = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n \"data\": 250,\n \"contract\": 249,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be in \" + Object.keys(txTypes).map(t => `'${t}'`).join(\", \")\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({ publicKey, encryptedSecretKey })\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({ to, amount })\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], + "mappings": "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AAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAE,GAAAC,EAAAC,IAAA,cAAAC,IAEA,IAAIC,GAASF,GAETG,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAEnB,SAASE,GAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAIJ,GAAM,QAAQI,CAAO,EAEtC,KAAK,MAAQ,IAAIJ,GAAM,KAAKI,CAAO,EACrC,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,EA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tF,EAAE,SAAS,EAAE,EACvB,OAAA+E,GAASM,EAAKA,CAAG,EACjBvD,GAAEwD,EAAKA,EAAKD,CAAG,EACfhE,GAAUH,EAAGoE,CAAG,EACT,CACX,CACA,SAASC,GAAuBrE,EAAGI,EAAG,CAClC,OAAO2D,GAAkB/D,EAAGI,EAAGnC,EAAE,CACrC,CACA,IAAIqG,GAAI,CACJ,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAAqBC,EAAIC,EAAInE,EAAGF,EAAG,CAIxC,QAHIsE,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,EAAKC,GAAKC,GAA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", + "names": ["require_base64_js", "__commonJSMin", "exports", "init_esbuild_inject", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "init_esbuild_inject", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "m", "c", "rt", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "i", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "Buffer", "init_esbuild_inject", "__esmMin", "require_browser_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "__self__", "F", "self", "irrelevant", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "error", "fetch", "init", "request", "xhr", "abortXhr", "ctx", "phoenix_exports", "__export", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "module", "__toCommonJS", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "code", "wasClean", "token", "messages", "msg", "opts", "onCallerTimeout", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "error", "startTime", "onMsgRef", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ws", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "O", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "i", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "i", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "i", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "i", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "enqueue", "fn", "e", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "i", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_BYTES", "MAX_UINT32", "oldBrowser", "Buffer", "crypto", "randomBytes", "size", "cb", "bytes", "generated", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_events", "__commonJSMin", "exports", "module", "init_esbuild_inject", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "i", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "require_stream_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_util", "__commonJSMin", "init_esbuild_inject", "require_buffer_list", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "i", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "deprecate", "fn", "msg", "config", "warned", "deprecated", "name", "val", "require_stream_writable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "onEndNT", "self", "value", "require_string_decoder", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_stream_readable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_esbuild_inject", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_esbuild_inject", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_hash_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "inherits", "throwIfNotStringOrBuffer", "val", "prefix", "HashBase", "blockSize", "chunk", "encoding", "callback", "error", "err", "data", "block", "offset", "i", "j", "carry", "digest", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "HashBase", "Buffer", "ARRAY16", "MD5", "M", "i", "a", "b", "c", "fnF", "fnG", "fnH", "fnI", "buffer", "rotl", "x", "n", "d", "m", "k", "s", "require_ripemd160", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "inherits", "HashBase", "ARRAY16", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "j", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "i", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "rotl", "t", "buffer", "x", "n", "a", "b", "c", "d", "e", "m", "k", "s", "require_hash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Hash", "blockSize", "finalSize", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "a", "b", "c", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "H", "require_sha512", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "algorithm", "Algorithm", "require_stream_browserify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Stream", "EE", "inherits", "dest", "options", "source", "ondata", "chunk", "ondrain", "onend", "onclose", "didOnEnd", "onerror", "er", "cleanup", "require_cipher_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "StringDecoder", "inherits", "CipherBase", "hashMode", "data", "inputEnc", "outputEnc", "outData", "_", "next", "err", "e", "done", "value", "enc", "fin", "out", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "MD5", "RIPEMD160", "sha", "Base", "Hash", "hash", "data", "alg", "require_legacy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Base", "ZEROS", "blocksize", "Hmac", "alg", "key", "ipad", "opad", "i", "data", "h", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MD5", "buffer", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Legacy", "Base", "Buffer", "md5", "RIPEMD160", "sha", "ZEROS", "Hmac", "alg", "key", "blocksize", "hash", "ipad", "opad", "i", "data", "h", "require_algos", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_precondition", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_ALLOC", "iterations", "keylen", "require_default_encoding", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defaultEncoding", "pVersionMajor", "require_to_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "thing", "encoding", "name", "require_sync_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "md5", "RIPEMD160", "sha", "Buffer", "checkParameters", "defaultEncoding", "toBuffer", "ZEROS", "sizes", "Hmac", "alg", "key", "saltLen", "hash", "getDigest", "blocksize", "ipad", "opad", "i", "ipad1", "data", "h", "shaFunc", "rmd160Func", "pbkdf2", "password", "salt", "iterations", "keylen", "digest", "hmac", "DK", "block1", "destPos", "hLen", "l", "T", "U", "j", "k", "require_async", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "checkParameters", "defaultEncoding", "sync", "toBuffer", "ZERO_BUF", "subtle", "toBrowser", "checks", "checkNative", "algo", "prom", "browserPbkdf2", "nextTick", "getNextTick", "password", "salt", "iterations", "length", "key", "res", "resolvePromise", "promise", "callback", "out", "e", "keylen", "digest", "resp", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "bytes", "off", "res", "value", "inL", "inR", "out", "outL", "outR", "i", "j", "num", "shift", "pc2table", "len", "r", "sTable", "b", "sb", "permuteTable", "size", "group", "str", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "require_cipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "Cipher", "options", "data", "off", "min", "i", "out", "inputOff", "outputOff", "count", "max", "buffer", "first", "last", "require_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "utils", "Cipher", "DESState", "DES", "options", "state", "shiftTable", "key", "kL", "kR", "i", "shift", "inp", "inOff", "out", "outOff", "l", "r", "buffer", "off", "value", "pad", "lStart", "rStart", "keyL", "keyR", "s", "f", "t", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "proto", "CBCState", "iv", "i", "instantiate", "Base", "CBC", "options", "keys", "key", "state", "inp", "inOff", "out", "outOff", "superProto", "require_ede", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "Cipher", "DES", "EDEState", "type", "key", "k1", "k2", "k3", "EDE", "options", "state", "inp", "inOff", "out", "outOff", "require_des", "__commonJSMin", "exports", "init_esbuild_inject", "require_browserify_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "CipherBase", "des", "inherits", "Buffer", "modes", "DES", "opts", "modeName", "mode", "type", "key", "iv", "data", "require_ecb", "__commonJSMin", "exports", "init_esbuild_inject", "self", "block", "require_buffer_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "a", "b", "length", "buffer", "i", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "self", "block", "data", "pad", "out", "require_cfb", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "xor", "encryptStart", "self", "data", "decrypt", "len", "out", "require_cfb8", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "out", "chunk", "len", "i", "require_cfb1", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "i", "len", "out", "bit", "value", "shiftIn", "buffer", "chunk", "require_ofb", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "getBlock", "self", "chunk", "Buffer", "pad", "require_incr32", "__commonJSMin", "exports", "module", "init_esbuild_inject", "incr32", "iv", "len", "item", "require_ctr", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "Buffer", "incr32", "getBlock", "self", "out", "blockSize", "chunk", "chunkNum", "start", "i", "offset", "pad", "require_modes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "modeModules", "modes", "key", "require_aes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "asUInt32Array", "buf", "len", "out", "i", "scrubVec", "v", "cryptBlock", "M", "keySchedule", "SUB_MIX", "SBOX", "nRounds", "SUB_MIX0", "SUB_MIX1", "SUB_MIX2", "SUB_MIX3", "s0", "s1", "s2", "s3", "t0", "t1", "t2", "t3", "ksRow", "round", "RCON", "G", "d", "j", "INV_SBOX", "INV_SUB_MIX", "x", "xi", "sx", "x2", "x4", "x8", "t", "AES", "key", "keyWords", "keySize", "ksRows", "k", "invKeySchedule", "ik", "ksR", "tt", "m1", "require_ghash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "ZEROES", "toArray", "buf", "fromArray", "out", "GHASH", "key", "block", "i", "Vi", "Zi", "j", "xi", "lsbVi", "chunk", "abl", "bl", "require_authCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "GHASH", "xor", "incr32", "xorTest", "a", "b", "out", "len", "i", "calcIv", "self", "iv", "ck", "ghash", "toPad", "ivBits", "tail", "StreamCipher", "mode", "key", "decrypt", "h", "chunk", "rump", "tag", "buf", "require_streamCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "StreamCipher", "mode", "key", "iv", "decrypt", "chunk", "require_evp_bytestokey", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "MD5", "EVP_BytesToKey", "password", "salt", "keyBits", "ivLen", "keyLen", "key", "iv", "tmp", "hash", "used", "keyStart", "ivStart", "length", "require_encrypter", "__commonJSMin", "exports", "init_esbuild_inject", "MODES", "AuthCipher", "Buffer", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Cipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "PADDING", "setTo", "len", "padBuff", "i", "createCipheriv", "suite", "password", "config", "createCipher", "keys", "require_decrypter", "__commonJSMin", "exports", "init_esbuild_inject", "AuthCipher", "Buffer", "MODES", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Decipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "unpad", "setTo", "autoPadding", "last", "padded", "i", "createDecipheriv", "suite", "password", "config", "createDecipher", "keys", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "ciphers", "deciphers", "modes", "getCiphers", "require_modes", "__commonJSMin", "exports", "init_esbuild_inject", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "DES", "aes", "aesModes", "desModes", "ebtk", "createCipher", "suite", "password", "keyLen", "ivLen", "keys", "createCipheriv", "createDecipher", "createDecipheriv", "key", "iv", "getCiphers", "require_buffer", "__commonJSMin", "init_esbuild_inject", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_crypto", "__commonJSMin", "init_esbuild_inject", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_mr", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bn", "brorand", "MillerRabin", "rand", "n", "len", "min_bytes", "a", "start", "stop", "size", "k", "cb", "red", "rone", "n1", "s", "d", "rn1", "prime", "x", "i", "g", "require_generatePrime", "__commonJSMin", "exports", "module", "init_esbuild_inject", "randomBytes", "findPrime", "simpleSieve", "fermatTest", "BN", "TWENTYFOUR", "MillerRabin", "millerRabin", "ONE", "TWO", "FIVE", "SIXTEEN", "EIGHT", "TEN", "THREE", "SEVEN", "ELEVEN", "FOUR", "TWELVE", "primes", "_getPrimes", "limit", "res", "i", "k", "sqrt", "j", "p", "red", "bits", "gen", "num", "n2", "require_dh", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "MillerRabin", "millerRabin", "TWENTYFOUR", "ELEVEN", "TEN", "THREE", "SEVEN", "primes", "randomBytes", "DH", "setPublicKey", "pub", "enc", "Buffer", "setPrivateKey", "priv", "primeCache", "checkPrime", "prime", "generator", "gen", "hex", "error", "rem", "malleable", "other", "secret", "out", "front", "formatReturnValue", "bn", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "generatePrime", "primes", "DH", "getDiffieHellman", "mod", "prime", "Buffer", "gen", "ENCODINGS", "createDiffieHellman", "enc", "generator", "genc", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_browserify_rsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "randomBytes", "blind", "priv", "r", "getr", "blinder", "len", "crt", "msg", "blinds", "blinded", "c1", "c2", "qinv", "p", "q", "m1", "m2", "h", "Buffer", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "r", "i", "len", "bytes", "k", "res", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "i", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "i", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "i", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "j", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "i", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_safer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_reporter", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "options", "obj", "ReporterError", "state", "data", "key", "index", "value", "prev", "now", "msg", "err", "inherited", "elem", "result", "path", "e", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "Buffer", "DecoderBuffer", "base", "options", "data", "save", "res", "fail", "bytes", "EncoderBuffer", "value", "reporter", "item", "out", "offset", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Reporter", "EncoderBuffer", "DecoderBuffer", "assert", "tags", "methods", "overrided", "Node", "enc", "parent", "name", "state", "stateProps", "cstate", "prop", "res", "method", "clone", "body", "child", "args", "children", "arg", "key", "value", "tag", "item", "val", "num", "newKey", "obj", "input", "options", "result", "present", "prevKey", "save", "prevObj", "explicit", "start", "data", "entity", "match", "node", "reporter", "content", "primitive", "cls", "str", "require_der", "__commonJSMin", "exports", "init_esbuild_inject", "reverse", "map", "res", "key", "value", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Node", "der", "DEREncoder", "entity", "DERNode", "data", "reporter", "parent", "tag", "primitive", "cls", "content", "encodedTag", "encodeTag", "header", "lenOctets", "i", "j", "str", "buf", "id", "values", "relative", "size", "ident", "objid", "offset", "two", "num", "time", "date", "numArray", "out", "value", "obj", "dataBuffer", "state", "res", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "DEREncoder", "PEMEncoder", "entity", "data", "options", "p", "out", "i", "require_encoders", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "bignum", "DecoderBuffer", "Node", "der", "DERDecoder", "entity", "DERNode", "data", "options", "parent", "buffer", "tag", "any", "state", "decodedTag", "derDecodeTag", "len", "derDecodeLen", "res", "fail", "decoder", "result", "possibleEnd", "unused", "raw", "str", "i", "numstr", "printstr", "values", "relative", "identifiers", "ident", "subident", "first", "second", "tmp", "year", "mon", "day", "hour", "min", "sec", "obj", "buf", "cls", "primitive", "oct", "tagStr", "num", "j", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "DERDecoder", "PEMDecoder", "entity", "data", "options", "lines", "label", "re", "start", "end", "i", "match", "base64", "input", "require_decoders", "__commonJSMin", "exports", "init_esbuild_inject", "decoders", "require_api", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "decoders", "inherits", "api", "name", "body", "Entity", "Base", "Generated", "entity", "enc", "data", "options", "reporter", "require_base", "__commonJSMin", "exports", "init_esbuild_inject", "base", "require_constants", "__commonJSMin", "exports", "init_esbuild_inject", "constants", "map", "res", "key", "value", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "require_certificate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn", "Time", "AttributeTypeValue", "AlgorithmIdentifier", "SubjectPublicKeyInfo", "RelativeDistinguishedName", "RDNSequence", "Name", "Validity", "Extension", "TBSCertificate", "X509Certificate", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "RSAPrivateKey", "RSAPublicKey", "PublicKey", "AlgorithmIdentifier", "PrivateKeyInfo", "EncryptedPrivateKeyInfo", "DSAPrivateKey", "ECPrivateKey", "ECParameters", "require_fixProc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "findProc", "startRegex", "fullRegex", "evp", "ciphers", "Buffer", "okey", "password", "key", "match", "decrypted", "suite", "iv", "cipherText", "cipherKey", "out", "cipher", "match2", "tag", "require_parse_asn1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn1", "aesid", "fixProc", "ciphers", "compat", "Buffer", "parseKeys", "buffer", "password", "stripped", "type", "data", "subtype", "ndata", "decrypt", "salt", "iters", "algo", "iv", "cipherText", "keylen", "key", "cipher", "out", "require_sign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHmac", "crt", "EC", "BN", "parseKeys", "curves", "sign", "hash", "key", "hashType", "signType", "tag", "priv", "ecSign", "dsaSign", "len", "pad", "i", "out", "curveId", "curve", "algo", "x", "p", "q", "g", "r", "k", "H", "bits2int", "s", "kv", "getKey", "makeKey", "makeR", "toDER", "total", "res", "zeros", "hlen", "hbits", "bits2octets", "v", "obits", "bits", "shift", "t", "require_verify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "BN", "EC", "parseKeys", "curves", "verify", "sig", "hash", "key", "signType", "tag", "pub", "ecVerify", "dsaVerify", "len", "pad", "padNum", "i", "red", "out", "curveId", "curve", "pubkey", "p", "q", "g", "y", "unpacked", "s", "r", "checkValue", "montp", "w", "v", "b", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHash", "stream", "inherits", "sign", "verify", "algorithms", "key", "Sign", "algorithm", "data", "_", "done", "enc", "hash", "sig", "Verify", "createSign", "createVerify", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "elliptic", "BN", "curve", "ECDH", "aliases", "enc", "format", "other", "inenc", "Buffer", "otherPub", "out", "formatReturnValue", "key", "pub", "priv", "_priv", "bn", "len", "buf", "zeros", "require_mgf", "__commonJSMin", "exports", "module", "init_esbuild_inject", "createHash", "Buffer", "seed", "len", "t", "i", "c", "i2ops", "out", "require_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "a", "b", "len", "i", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_withPublic", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "Buffer", "withPublic", "paddedMsg", "key", "require_publicEncrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "randomBytes", "createHash", "mgf", "xor", "BN", "withPublic", "crt", "Buffer", "publicKey", "msg", "reverse", "padding", "key", "paddedMsg", "oaep", "pkcs1", "k", "mLen", "iHash", "hLen", "hLen2", "ps", "dblen", "seed", "maskedDb", "maskedSeed", "nonZero", "len", "out", "i", "cache", "cur", "num", "require_privateDecrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "mgf", "xor", "BN", "crt", "createHash", "withPublic", "Buffer", "privateKey", "enc", "reverse", "padding", "key", "k", "msg", "zBuffer", "oaep", "pkcs1", "iHash", "hLen", "maskedSeed", "maskedDb", "seed", "db", "compare", "i", "p1", "status", "ps", "a", "b", "dif", "len", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "key", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "oldBrowser", "safeBuffer", "randombytes", "Buffer", "kBufferMaxLength", "crypto", "kMaxUint32", "assertOffset", "offset", "length", "assertSize", "size", "randomFill", "randomFillSync", "buf", "cb", "actualFill", "ourBuf", "uint", "err", "bytes", "require_crypto_browserify", "__commonJSMin", "exports", "init_esbuild_inject", "algos", "algoKeys", "hashes", "p", "aes", "dh", "sign", "publicEncrypt", "rf", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "AssertionError", "t", "m", "err", "require_ascii", "__commonJSMin", "exports", "module", "init_esbuild_inject", "byteLength", "string", "toString", "buffer", "len", "result", "i", "write", "offset", "length", "require_base64", "__commonJSMin", "exports", "module", "init_esbuild_inject", "alphabet", "codes", "i", "byteLength", "string", "len", "toString", "buffer", "result", "write", "offset", "length", "j", "a", "b", "c", "d", "require_hex", "__commonJSMin", "exports", "module", "init_esbuild_inject", "byteLength", "string", "toString", "buffer", "len", "result", "i", "write", "offset", "length", "a", "hexValue", "char", "require_utf8", "__commonJSMin", "exports", "module", "init_esbuild_inject", "byteLength", "string", "length", "i", "n", "code", "toString", "decoder", "buffer", "len", "output", "byte", "bytesNeeded", "codePoint", "k", "write", "encoder", "offset", "j", "count", "bits", "require_utf16le", "__commonJSMin", "exports", "module", "init_esbuild_inject", "byteLength", "string", "toString", "buffer", "len", "result", "i", "write", "offset", "length", "units", "c", "hi", "lo", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ascii", "base64", "hex", "utf8", "utf16le", "LE", "codecFor", "encoding", "isBuffer", "value", "isEncoding", "alloc", "size", "fill", "buffer", "allocUnsafe", "allocUnsafeSlow", "byteLength", "string", "compare", "a", "b", "len", "i", "x", "y", "concat", "buffers", "totalLength", "result", "offset", "copy", "source", "target", "targetStart", "start", "end", "equals", "from", "encodingOrOffset", "length", "fromString", "fromArray", "fromBuffer", "fromArrayBuffer", "codec", "array", "arrayBuffer", "byteOffset", "includes", "indexOf", "bidirectionalIndexOf", "first", "foundIndex", "found", "j", "lastIndexOf", "swap", "n", "m", "swap16", "swap32", "swap64", "toBuffer", "toString", "write", "writeDoubleLE", "writeFloatLE", "writeUInt32LE", "writeInt32LE", "readDoubleLE", "readFloatLE", "readUInt32LE", "readInt32LE", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "__commonJS", "cb", "mod", "__toBinary", "table", "i", "base64", "n", "bytes2", "i2", "j", "c0", "c1", "c2", "c3", "exports2", "module2", "bytes", "compiled", "imports", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b4a", "wasm", "wasmPromise", "mod", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "size", "input", "enc", "i", "cb", "noop", "ph", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "d", "crypto_verify_32", "set25519", "r", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "n", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "b", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "m", "par25519", "d", "vn", "x", "xi", "y", "yi", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "i", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_crypto", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "pseudoRandomKey", "cipher", "decipher", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_crypto", "import_base64url", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "v", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "t", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] } diff --git a/dist/archethic-node.mjs b/dist/archethic-node.mjs index c60a60f..d20b176 100644 --- a/dist/archethic-node.mjs +++ b/dist/archethic-node.mjs @@ -1,26 +1,26 @@ import { createRequire } from 'module';const require = createRequire(import.meta.url); -var Zm=Object.create;var fp=Object.defineProperty;var ev=Object.getOwnPropertyDescriptor;var tv=Object.getOwnPropertyNames;var av=Object.getPrototypeOf,rv=Object.prototype.hasOwnProperty;var Ge=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,a)=>(typeof require<"u"?require:e)[a]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var iv=(t,e)=>()=>(t&&(e=t(t=0)),e);var T=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),vs=(t,e)=>{for(var a in e)fp(t,a,{get:e[a],enumerable:!0})},dv=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of tv(e))!rv.call(t,i)&&i!==a&&fp(t,i,{get:()=>e[i],enumerable:!(r=ev(e,i))||r.enumerable});return t};var fa=(t,e,a)=>(a=t!=null?Zm(av(t)):{},dv(e||!t||!t.__esModule?fp(a,"default",{value:t,enumerable:!0}):a,t));var N,l=iv(()=>{N=Ge("buffer").Buffer});var ys=T((mM,gs)=>{"use strict";l();var U1={};gs.exports=U1;function bs(t){return t<0?-1:1}function pv(t){return t%1===.5&&(t&1)===0?Math.floor(t):Math.round(t)}function tr(t,e){e.unsigned||--t;let a=e.unsigned?0:-Math.pow(2,t),r=Math.pow(2,t)-1,i=e.moduloBitLength?Math.pow(2,e.moduloBitLength):Math.pow(2,t),d=e.moduloBitLength?Math.pow(2,e.moduloBitLength-1):Math.pow(2,t-1);return function(n,f){f||(f={});let h=+n;if(f.enforceRange){if(!Number.isFinite(h))throw new TypeError("Argument is not a finite number");if(h=bs(h)*Math.floor(Math.abs(h)),hr)throw new TypeError("Argument is not in byte range");return h}if(!isNaN(h)&&f.clamp)return h=pv(h),hr&&(h=r),h;if(!Number.isFinite(h)||h===0)return 0;if(h=bs(h)*Math.floor(Math.abs(h)),h=h%i,!e.unsigned&&h>=d)return h-i;if(e.unsigned){if(h<0)h+=i;else if(h===-0)return 0}return h}}U1.void=function(){};U1.boolean=function(t){return!!t};U1.byte=tr(8,{unsigned:!1});U1.octet=tr(8,{unsigned:!0});U1.short=tr(16,{unsigned:!1});U1["unsigned short"]=tr(16,{unsigned:!0});U1.long=tr(32,{unsigned:!1});U1["unsigned long"]=tr(32,{unsigned:!0});U1["long long"]=tr(32,{unsigned:!1,moduloBitLength:64});U1["unsigned long long"]=tr(32,{unsigned:!0,moduloBitLength:64});U1.double=function(t){let e=+t;if(!Number.isFinite(e))throw new TypeError("Argument is not a finite floating-point value");return e};U1["unrestricted double"]=function(t){let e=+t;if(isNaN(e))throw new TypeError("Argument is NaN");return e};U1.float=U1.double;U1["unrestricted float"]=U1["unrestricted double"];U1.DOMString=function(t,e){return e||(e={}),e.treatNullAsEmptyString&&t===null?"":String(t)};U1.ByteString=function(t,e){let a=String(t),r;for(let i=0;(r=a.codePointAt(i))!==void 0;++i)if(r>255)throw new TypeError("Argument is not a valid bytestring");return a};U1.USVString=function(t){let e=String(t),a=e.length,r=[];for(let i=0;i57343)r.push(String.fromCodePoint(d));else if(56320<=d&&d<=57343)r.push(String.fromCodePoint(65533));else if(i===a-1)r.push(String.fromCodePoint(65533));else{let n=e.charCodeAt(i+1);if(56320<=n&&n<=57343){let f=d&1023,h=n&1023;r.push(String.fromCodePoint((2<<15)+(2<<9)*f+h)),++i}else r.push(String.fromCodePoint(65533))}}return r.join("")};U1.Date=function(t,e){if(!(t instanceof Date))throw new TypeError("Argument is not a Date object");if(!isNaN(t))return t};U1.RegExp=function(t,e){return t instanceof RegExp||(t=new RegExp(t)),t}});var xs=T((bM,ar)=>{"use strict";l();ar.exports.mixin=function(e,a){let r=Object.getOwnPropertyNames(a);for(let i=0;i{nv.exports=[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1e3,1e3],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6e3],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8e3,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8e3]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9e3],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[3e4]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13e3,13e3],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43e3,43e3],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64e3,64e3],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66e3,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[12e4,12e4],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128e3,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23e3]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149e3]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32e3]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195e3,195e3],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[4e4]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918e3,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]});var Cs=T((xM,fd)=>{"use strict";l();var _s=Ge("punycode"),ws=As(),si={TRANSITIONAL:0,NONTRANSITIONAL:1};function Is(t){return t.split("\0").map(function(e){return e.normalize("NFC")}).join("\0")}function Ss(t){for(var e=0,a=ws.length-1;e<=a;){var r=Math.floor((e+a)/2),i=ws[r];if(i[0][0]<=t&&i[0][1]>=t)return i;i[0][0]>t?a=r-1:e=r+1}return null}var sv=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function Es(t){return t.replace(sv,"_").length}function fv(t,e,a){for(var r=!1,i="",d=Es(t),n=0;n253||n.length===0)&&(i.error=!0);for(var f=0;f63||d.length===0){i.error=!0;break}}return i.error?null:d.join(".")};fd.exports.toUnicode=function(t,e){var a=sd(t,e,si.NONTRANSITIONAL);return{domain:a.string,error:a.error}};fd.exports.PROCESSING_OPTIONS=si});var oa=T((wM,_t)=>{"use strict";l();var fi=Ge("punycode"),Ns=Cs(),Bs={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},Ye=Symbol("failure");function Ds(t){return fi.ucs2.decode(t).length}function Ms(t,e){let a=t[e];return isNaN(a)?void 0:String.fromCodePoint(a)}function Gi(t){return t>=48&&t<=57}function Yi(t){return t>=65&&t<=90||t>=97&&t<=122}function uv(t){return Yi(t)||Gi(t)}function Kt(t){return Gi(t)||t>=65&&t<=70||t>=97&&t<=102}function Ts(t){return t==="."||t.toLowerCase()==="%2e"}function cv(t){return t=t.toLowerCase(),t===".."||t==="%2e."||t===".%2e"||t==="%2e%2e"}function hv(t,e){return Yi(t)&&(e===58||e===124)}function qs(t){return t.length===2&&Yi(t.codePointAt(0))&&(t[1]===":"||t[1]==="|")}function mv(t){return t.length===2&&Yi(t.codePointAt(0))&&t[1]===":"}function vv(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/)!==-1}function bv(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/)!==-1}function op(t){return Bs[t]!==void 0}function K1(t){return op(t.scheme)}function gv(t){return Bs[t]}function Os(t){let e=t.toString(16).toUpperCase();return e.length===1&&(e="0"+e),"%"+e}function yv(t){let e=new N(t),a="";for(let r=0;r126}var Av=new Set([32,34,35,60,62,63,96,123,125]);function Ps(t){return od(t)||Av.has(t)}var wv=new Set([47,58,59,61,64,91,92,93,94,124]);function up(t){return Ps(t)||wv.has(t)}function Pr(t,e){let a=String.fromCodePoint(t);return e(t)?yv(a):a}function _v(t){let e=10;return t.length>=2&&t.charAt(0)==="0"&&t.charAt(1).toLowerCase()==="x"?(t=t.substring(2),e=16):t.length>=2&&t.charAt(0)==="0"&&(t=t.substring(1),e=8),t===""?0:(e===10?/[^0-9]/:e===16?/[^0-9A-Fa-f]/:/[^0-7]/).test(t)?Ye:parseInt(t,e)}function Iv(t){let e=t.split(".");if(e[e.length-1]===""&&e.length>1&&e.pop(),e.length>4)return t;let a=[];for(let d of e){if(d==="")return t;let n=_v(d);if(n===Ye)return t;a.push(n)}for(let d=0;d255)return Ye;if(a[a.length-1]>=Math.pow(256,5-a.length))return Ye;let r=a.pop(),i=0;for(let d of a)r+=d*Math.pow(256,3-i),++i;return r}function Sv(t){let e="",a=t;for(let r=1;r<=4;++r)e=String(a%256)+e,r!==4&&(e="."+e),a=Math.floor(a/256);return e}function Ev(t){let e=[0,0,0,0,0,0,0,0],a=0,r=null,i=0;if(t=fi.ucs2.decode(t),t[i]===58){if(t[i+1]!==58)return Ye;i+=2,++a,r=a}for(;i6))return Ye;let f=0;for(;t[i]!==void 0;){let h=null;if(f>0)if(t[i]===46&&f<4)++i;else return Ye;if(!Gi(t[i]))return Ye;for(;Gi(t[i]);){let v=parseInt(Ms(t,i));if(h===null)h=v;else{if(h===0)return Ye;h=h*10+v}if(h>255)return Ye;++i}e[a]=e[a]*256+h,++f,(f===2||f===4)&&++a}if(f!==4)return Ye;break}else if(t[i]===58){if(++i,t[i]===void 0)return Ye}else if(t[i]!==void 0)return Ye;e[a]=d,++a}if(r!==null){let d=a-r;for(a=7;a!==0&&d>0;){let n=e[r+d-1];e[r+d-1]=e[a],e[a]=n,--a,--d}}else if(r===null&&a!==8)return Ye;return e}function Cv(t){let e="",r=Dv(t).idx,i=!1;for(let d=0;d<=7;++d)if(!(i&&t[d]===0)){if(i&&(i=!1),r===d){e+=d===0?"::":":",i=!0;continue}e+=t[d].toString(16),d!==7&&(e+=":")}return e}function lp(t,e){if(t[0]==="[")return t[t.length-1]!=="]"?Ye:Ev(t.substring(1,t.length-1));if(!e)return Nv(t);let a=xv(t),r=Ns.toASCII(a,!1,Ns.PROCESSING_OPTIONS.NONTRANSITIONAL,!1);if(r===null||vv(r))return Ye;let i=Iv(r);return typeof i=="number"||i===Ye?i:r}function Nv(t){if(bv(t))return Ye;let e="",a=fi.ucs2.decode(t);for(let r=0;ra&&(e=r,a=i),r=null,i=0):(r===null&&(r=d),++i);return i>a&&(e=r,a=i),{idx:e,len:a}}function cp(t){return typeof t=="number"?Sv(t):t instanceof Array?"["+Cv(t)+"]":t}function Mv(t){return t.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,"")}function Tv(t){return t.replace(/\u0009|\u000A|\u000D/g,"")}function Vs(t){let e=t.path;e.length!==0&&(t.scheme==="file"&&e.length===1&&qv(e[0])||e.pop())}function Us(t){return t.username!==""||t.password!==""}function Bv(t){return t.host===null||t.host===""||t.cannotBeABaseURL||t.scheme==="file"}function qv(t){return/^[A-Za-z]:$/.test(t)}function R1(t,e,a,r,i){if(this.pointer=0,this.input=t,this.base=e||null,this.encodingOverride=a||"utf-8",this.stateOverride=i,this.url=r,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};let n=Mv(this.input);n!==this.input&&(this.parseError=!0),this.input=n}let d=Tv(this.input);for(d!==this.input&&(this.parseError=!0),this.input=d,this.state=i||"scheme start",this.buffer="",this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=fi.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){let n=this.input[this.pointer],f=isNaN(n)?void 0:String.fromCodePoint(n),h=this["parse "+this.state](n,f);if(h){if(h===Ye){this.failure=!0;break}}else break}}R1.prototype["parse scheme start"]=function(e,a){if(Yi(e))this.buffer+=a.toLowerCase(),this.state="scheme";else if(!this.stateOverride)this.state="no scheme",--this.pointer;else return this.parseError=!0,Ye;return!0};R1.prototype["parse scheme"]=function(e,a){if(uv(e)||e===43||e===45||e===46)this.buffer+=a.toLowerCase();else if(e===58){if(this.stateOverride&&(K1(this.url)&&!op(this.buffer)||!K1(this.url)&&op(this.buffer)||(Us(this.url)||this.url.port!==null)&&this.buffer==="file"||this.url.scheme==="file"&&(this.url.host===""||this.url.host===null))||(this.url.scheme=this.buffer,this.buffer="",this.stateOverride))return!1;this.url.scheme==="file"?((this.input[this.pointer+1]!==47||this.input[this.pointer+2]!==47)&&(this.parseError=!0),this.state="file"):K1(this.url)&&this.base!==null&&this.base.scheme===this.url.scheme?this.state="special relative or authority":K1(this.url)?this.state="special authority slashes":this.input[this.pointer+1]===47?(this.state="path or authority",++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(""),this.state="cannot-be-a-base-URL path")}else if(!this.stateOverride)this.buffer="",this.state="no scheme",this.pointer=-1;else return this.parseError=!0,Ye;return!0};R1.prototype["parse no scheme"]=function(e){return this.base===null||this.base.cannotBeABaseURL&&e!==35?Ye:(this.base.cannotBeABaseURL&&e===35?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.url.cannotBeABaseURL=!0,this.state="fragment"):this.base.scheme==="file"?(this.state="file",--this.pointer):(this.state="relative",--this.pointer),!0)};R1.prototype["parse special relative or authority"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="relative",--this.pointer),!0};R1.prototype["parse path or authority"]=function(e){return e===47?this.state="authority":(this.state="path",--this.pointer),!0};R1.prototype["parse relative"]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===47?this.state="relative slash":e===63?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):K1(this.url)&&e===92?(this.parseError=!0,this.state="relative slash"):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state="path",--this.pointer),!0};R1.prototype["parse relative slash"]=function(e){return K1(this.url)&&(e===47||e===92)?(e===92&&(this.parseError=!0),this.state="special authority ignore slashes"):e===47?this.state="authority":(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state="path",--this.pointer),!0};R1.prototype["parse special authority slashes"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="special authority ignore slashes",--this.pointer),!0};R1.prototype["parse special authority ignore slashes"]=function(e){return e!==47&&e!==92?(this.state="authority",--this.pointer):this.parseError=!0,!0};R1.prototype["parse authority"]=function(e,a){if(e===64){this.parseError=!0,this.atFlag&&(this.buffer="%40"+this.buffer),this.atFlag=!0;let r=Ds(this.buffer);for(let i=0;iMath.pow(2,16)-1)return this.parseError=!0,Ye;this.url.port=r===gv(this.url.scheme)?null:r,this.buffer=""}if(this.stateOverride)return!1;this.state="path start",--this.pointer}else return this.parseError=!0,Ye;return!0};var Ov=new Set([47,92,63,35]);R1.prototype["parse file"]=function(e){return this.url.scheme="file",e===47||e===92?(e===92&&(this.parseError=!0),this.state="file slash"):this.base!==null&&this.base.scheme==="file"?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===63?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):(this.input.length-this.pointer-1===0||!hv(e,this.input[this.pointer+1])||this.input.length-this.pointer-1>=2&&!Ov.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),Vs(this.url)):this.parseError=!0,this.state="path",--this.pointer):(this.state="path",--this.pointer),!0};R1.prototype["parse file slash"]=function(e){return e===47||e===92?(e===92&&(this.parseError=!0),this.state="file host"):(this.base!==null&&this.base.scheme==="file"&&(mv(this.base.path[0])?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state="path",--this.pointer),!0};R1.prototype["parse file host"]=function(e,a){if(isNaN(e)||e===47||e===92||e===63||e===35)if(--this.pointer,!this.stateOverride&&qs(this.buffer))this.parseError=!0,this.state="path";else if(this.buffer===""){if(this.url.host="",this.stateOverride)return!1;this.state="path start"}else{let r=lp(this.buffer,K1(this.url));if(r===Ye)return Ye;if(r==="localhost"&&(r=""),this.url.host=r,this.stateOverride)return!1;this.buffer="",this.state="path start"}else this.buffer+=a;return!0};R1.prototype["parse path start"]=function(e){return K1(this.url)?(e===92&&(this.parseError=!0),this.state="path",e!==47&&e!==92&&--this.pointer):!this.stateOverride&&e===63?(this.url.query="",this.state="query"):!this.stateOverride&&e===35?(this.url.fragment="",this.state="fragment"):e!==void 0&&(this.state="path",e!==47&&--this.pointer),!0};R1.prototype["parse path"]=function(e){if(isNaN(e)||e===47||K1(this.url)&&e===92||!this.stateOverride&&(e===63||e===35)){if(K1(this.url)&&e===92&&(this.parseError=!0),cv(this.buffer)?(Vs(this.url),e!==47&&!(K1(this.url)&&e===92)&&this.url.path.push("")):Ts(this.buffer)&&e!==47&&!(K1(this.url)&&e===92)?this.url.path.push(""):Ts(this.buffer)||(this.url.scheme==="file"&&this.url.path.length===0&&qs(this.buffer)&&(this.url.host!==""&&this.url.host!==null&&(this.parseError=!0,this.url.host=""),this.buffer=this.buffer[0]+":"),this.url.path.push(this.buffer)),this.buffer="",this.url.scheme==="file"&&(e===void 0||e===63||e===35))for(;this.url.path.length>1&&this.url.path[0]==="";)this.parseError=!0,this.url.path.shift();e===63&&(this.url.query="",this.state="query"),e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!Kt(this.input[this.pointer+1])||!Kt(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=Pr(e,Ps);return!0};R1.prototype["parse cannot-be-a-base-URL path"]=function(e){return e===63?(this.url.query="",this.state="query"):e===35?(this.url.fragment="",this.state="fragment"):(!isNaN(e)&&e!==37&&(this.parseError=!0),e===37&&(!Kt(this.input[this.pointer+1])||!Kt(this.input[this.pointer+2]))&&(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+Pr(e,od))),!0};R1.prototype["parse query"]=function(e,a){if(isNaN(e)||!this.stateOverride&&e===35){(!K1(this.url)||this.url.scheme==="ws"||this.url.scheme==="wss")&&(this.encodingOverride="utf-8");let r=new N(this.buffer);for(let i=0;i126||r[i]===34||r[i]===35||r[i]===60||r[i]===62?this.url.query+=Os(r[i]):this.url.query+=String.fromCodePoint(r[i]);this.buffer="",e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!Kt(this.input[this.pointer+1])||!Kt(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=a;return!0};R1.prototype["parse fragment"]=function(e){return isNaN(e)||(e===0?this.parseError=!0:(e===37&&(!Kt(this.input[this.pointer+1])||!Kt(this.input[this.pointer+2]))&&(this.parseError=!0),this.url.fragment+=Pr(e,od))),!0};function Pv(t,e){let a=t.scheme+":";if(t.host!==null?(a+="//",(t.username!==""||t.password!=="")&&(a+=t.username,t.password!==""&&(a+=":"+t.password),a+="@"),a+=cp(t.host),t.port!==null&&(a+=":"+t.port)):t.host===null&&t.scheme==="file"&&(a+="//"),t.cannotBeABaseURL)a+=t.path[0];else for(let r of t.path)a+="/"+r;return t.query!==null&&(a+="?"+t.query),!e&&t.fragment!==null&&(a+="#"+t.fragment),a}function Vv(t){let e=t.scheme+"://";return e+=cp(t.host),t.port!==null&&(e+=":"+t.port),e}_t.exports.serializeURL=Pv;_t.exports.serializeURLOrigin=function(t){switch(t.scheme){case"blob":try{return _t.exports.serializeURLOrigin(_t.exports.parseURL(t.path[0]))}catch{return"null"}case"ftp":case"gopher":case"http":case"https":case"ws":case"wss":return Vv({scheme:t.scheme,host:t.host,port:t.port});case"file":return"file://";default:return"null"}};_t.exports.basicURLParse=function(t,e){e===void 0&&(e={});let a=new R1(t,e.baseURL,e.encodingOverride,e.url,e.stateOverride);return a.failure?"failure":a.url};_t.exports.setTheUsername=function(t,e){t.username="";let a=fi.ucs2.decode(e);for(let r=0;r{"use strict";l();var F1=oa();Rs.implementation=class{constructor(e){let a=e[0],r=e[1],i=null;if(r!==void 0&&(i=F1.basicURLParse(r),i==="failure"))throw new TypeError("Invalid base URL");let d=F1.basicURLParse(a,{baseURL:i});if(d==="failure")throw new TypeError("Invalid URL");this._url=d}get href(){return F1.serializeURL(this._url)}set href(e){let a=F1.basicURLParse(e);if(a==="failure")throw new TypeError("Invalid URL");this._url=a}get origin(){return F1.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+":"}set protocol(e){F1.basicURLParse(e+":",{url:this._url,stateOverride:"scheme start"})}get username(){return this._url.username}set username(e){F1.cannotHaveAUsernamePasswordPort(this._url)||F1.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){F1.cannotHaveAUsernamePasswordPort(this._url)||F1.setThePassword(this._url,e)}get host(){let e=this._url;return e.host===null?"":e.port===null?F1.serializeHost(e.host):F1.serializeHost(e.host)+":"+F1.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||F1.basicURLParse(e,{url:this._url,stateOverride:"host"})}get hostname(){return this._url.host===null?"":F1.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||F1.basicURLParse(e,{url:this._url,stateOverride:"hostname"})}get port(){return this._url.port===null?"":F1.serializeInteger(this._url.port)}set port(e){F1.cannotHaveAUsernamePasswordPort(this._url)||(e===""?this._url.port=null:F1.basicURLParse(e,{url:this._url,stateOverride:"port"}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:this._url.path.length===0?"":"/"+this._url.path.join("/")}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],F1.basicURLParse(e,{url:this._url,stateOverride:"path start"}))}get search(){return this._url.query===null||this._url.query===""?"":"?"+this._url.query}set search(e){let a=this._url;if(e===""){a.query=null;return}let r=e[0]==="?"?e.substring(1):e;a.query="",F1.basicURLParse(r,{url:a,stateOverride:"query"})}get hash(){return this._url.fragment===null||this._url.fragment===""?"":"#"+this._url.fragment}set hash(e){if(e===""){this._url.fragment=null;return}let a=e[0]==="#"?e.substring(1):e;this._url.fragment="",F1.basicURLParse(a,{url:this._url,stateOverride:"fragment"})}toJSON(){return this.href}}});var ks=T((CM,Wi)=>{"use strict";l();var Mt=ys(),Qs=xs(),Ls=Fs(),D1=Qs.implSymbol;function G1(t){if(!this||this[D1]||!(this instanceof G1))throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");if(arguments.length<1)throw new TypeError("Failed to construct 'URL': 1 argument required, but only "+arguments.length+" present.");let e=[];for(let a=0;a{"use strict";l();la.URL=ks().interface;la.serializeURL=oa().serializeURL;la.serializeURLOrigin=oa().serializeURLOrigin;la.basicURLParse=oa().basicURLParse;la.setTheUsername=oa().setTheUsername;la.setThePassword=oa().setThePassword;la.serializeHost=oa().serializeHost;la.serializeInteger=oa().serializeInteger;la.parseURL=oa().parseURL});var t3=T((ca,e3)=>{"use strict";l();Object.defineProperty(ca,"__esModule",{value:!0});function ui(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var zt=ui(Ge("stream")),$s=ui(Ge("http")),ud=ui(Ge("url")),Gs=ui(js()),Uv=ui(Ge("https")),Vr=ui(Ge("zlib")),Rv=zt.Readable,Ta=Symbol("buffer"),hp=Symbol("type"),dr=class{constructor(){this[hp]="";let e=arguments[0],a=arguments[1],r=[],i=0;if(e){let n=e,f=Number(n.length);for(let h=0;h1&&arguments[1]!==void 0?arguments[1]:{},r=a.size;let i=r===void 0?0:r;var d=a.timeout;let n=d===void 0?0:d;t==null?t=null:Ys(t)?t=N.from(t.toString()):Zi(t)||N.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=N.from(t):ArrayBuffer.isView(t)?t=N.from(t.buffer,t.byteOffset,t.byteLength):t instanceof zt||(t=N.from(String(t)))),this[qa]={body:t,disturbed:!1,error:null},this.size=i,this.timeout=n,t instanceof zt&&t.on("error",function(f){let h=f.name==="AbortError"?f:new et(`Invalid response body while trying to fetch ${e.url}: ${f.message}`,"system",f);e[qa].error=h})}Y1.prototype={get body(){return this[qa].body},get bodyUsed(){return this[qa].disturbed},arrayBuffer(){return oi.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return oi.call(this).then(function(e){return Object.assign(new dr([],{type:t.toLowerCase()}),{[Ta]:e})})},json(){var t=this;return oi.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(a){return Y1.Promise.reject(new et(`invalid json response body at ${t.url} reason: ${a.message}`,"invalid-json"))}})},text(){return oi.call(this).then(function(t){return t.toString()})},buffer(){return oi.call(this)},textConverted(){var t=this;return oi.call(this).then(function(e){return Fv(e,t.headers)})}};Object.defineProperties(Y1.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});Y1.mixIn=function(t){for(let e of Object.getOwnPropertyNames(Y1.prototype))if(!(e in t)){let a=Object.getOwnPropertyDescriptor(Y1.prototype,e);Object.defineProperty(t,e,a)}};function oi(){var t=this;if(this[qa].disturbed)return Y1.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[qa].disturbed=!0,this[qa].error)return Y1.Promise.reject(this[qa].error);let e=this.body;if(e===null)return Y1.Promise.resolve(N.alloc(0));if(Zi(e)&&(e=e.stream()),N.isBuffer(e))return Y1.Promise.resolve(e);if(!(e instanceof zt))return Y1.Promise.resolve(N.alloc(0));let a=[],r=0,i=!1;return new Y1.Promise(function(d,n){let f;t.timeout&&(f=setTimeout(function(){i=!0,n(new et(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(h){h.name==="AbortError"?(i=!0,n(h)):n(new et(`Invalid response body while trying to fetch ${t.url}: ${h.message}`,"system",h))}),e.on("data",function(h){if(!(i||h===null)){if(t.size&&r+h.length>t.size){i=!0,n(new et(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}r+=h.length,a.push(h)}}),e.on("end",function(){if(!i){clearTimeout(f);try{d(N.concat(a,r))}catch(h){n(new et(`Could not create Buffer from response body for ${t.url}: ${h.message}`,"system",h))}}})})}function Fv(t,e){if(typeof bp!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let a=e.get("content-type"),r="utf-8",i,d;return a&&(i=/charset=([^;]*)/i.exec(a)),d=t.slice(0,1024).toString(),!i&&d&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[k1]=Object.create(null),e instanceof mt){let a=e.raw(),r=Object.keys(a);for(let i of r)for(let d of a[i])this.append(i,d);return}if(e!=null)if(typeof e=="object"){let a=e[Symbol.iterator];if(a!=null){if(typeof a!="function")throw new TypeError("Header pairs must be iterable");let r=[];for(let i of e){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");r.push(Array.from(i))}for(let i of r){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(let r of Object.keys(e)){let i=e[r];this.append(r,i)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,Ji(e);let a=li(this[k1],e);return a===void 0?null:this[k1][a].join(", ")}forEach(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,r=yp(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[k1]).sort().map(e==="key"?function(r){return r.toLowerCase()}:e==="value"?function(r){return t[k1][r].join(", ")}:function(r){return[r.toLowerCase(),t[k1][r].join(", ")]})}var xp=Symbol("internal");function mp(t,e){let a=Object.create(wp);return a[xp]={target:t,kind:e,index:0},a}var wp=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==wp)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[xp];let e=t.target,a=t.kind,r=t.index,i=yp(e,a),d=i.length;return r>=d?{value:void 0,done:!0}:(this[xp].index=r+1,{value:i[r],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(wp,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function Qv(t){let e=Object.assign({__proto__:null},t[k1]),a=li(t[k1],"Host");return a!==void 0&&(e[a]=e[a][0]),e}function kv(t){let e=new mt;for(let a of Object.keys(t))if(!Zs.test(a))if(Array.isArray(t[a]))for(let r of t[a])gp.test(r)||(e[k1][a]===void 0?e[k1][a]=[r]:e[k1][a].push(r));else gp.test(t[a])||(e[k1][a]=[t[a]]);return e}var rr=Symbol("Response internals"),jv=$s.STATUS_CODES,It=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Y1.call(this,e,a);let r=a.status||200,i=new mt(a.headers);if(e!=null&&!i.has("Content-Type")){let d=Js(e);d&&i.append("Content-Type",d)}this[rr]={url:a.url,status:r,statusText:a.statusText||jv[r],headers:i,counter:a.counter}}get url(){return this[rr].url||""}get status(){return this[rr].status}get ok(){return this[rr].status>=200&&this[rr].status<300}get redirected(){return this[rr].counter>0}get statusText(){return this[rr].statusText}get headers(){return this[rr].headers}clone(){return new It(Ws(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};Y1.mixIn(It.prototype);Object.defineProperties(It.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(It.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var Ba=Symbol("Request internals"),Hv=ud.URL||Gs.URL,Kv=ud.parse,zv=ud.format;function vp(t){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(t)&&(t=new Hv(t).toString()),Kv(t)}var $v="destroy"in zt.Readable.prototype;function ld(t){return typeof t=="object"&&typeof t[Ba]=="object"}function Gv(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var ua=class{constructor(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r;ld(e)?r=vp(e.url):(e&&e.href?r=vp(e.href):r=vp(`${e}`),e={});let i=a.method||e.method||"GET";if(i=i.toUpperCase(),(a.body!=null||ld(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let d=a.body!=null?a.body:ld(e)&&e.body!==null?Ws(e):null;Y1.call(this,d,{timeout:a.timeout||e.timeout||0,size:a.size||e.size||0});let n=new mt(a.headers||e.headers||{});if(d!=null&&!n.has("Content-Type")){let h=Js(d);h&&n.append("Content-Type",h)}let f=ld(e)?e.signal:null;if("signal"in a&&(f=a.signal),f!=null&&!Gv(f))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[Ba]={method:i,redirect:a.redirect||e.redirect||"follow",headers:n,parsedURL:r,signal:f},this.follow=a.follow!==void 0?a.follow:e.follow!==void 0?e.follow:20,this.compress=a.compress!==void 0?a.compress:e.compress!==void 0?e.compress:!0,this.counter=a.counter||e.counter||0,this.agent=a.agent||e.agent}get method(){return this[Ba].method}get url(){return zv(this[Ba].parsedURL)}get headers(){return this[Ba].headers}get redirect(){return this[Ba].redirect}get signal(){return this[Ba].signal}clone(){return new ua(this)}};Y1.mixIn(ua.prototype);Object.defineProperty(ua.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(ua.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function Yv(t){let e=t[Ba].parsedURL,a=new mt(t[Ba].headers);if(a.has("Accept")||a.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof zt.Readable&&!$v)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let r=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(r="0"),t.body!=null){let d=Xs(t);typeof d=="number"&&(r=String(d))}r&&a.set("Content-Length",r),a.has("User-Agent")||a.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!a.has("Accept-Encoding")&&a.set("Accept-Encoding","gzip,deflate");let i=t.agent;return typeof i=="function"&&(i=i(e)),!a.has("Connection")&&!i&&a.set("Connection","close"),Object.assign({},e,{method:t.method,headers:Qv(a),agent:i})}function Xi(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}Xi.prototype=Object.create(Error.prototype);Xi.prototype.constructor=Xi;Xi.prototype.name="AbortError";var Ap=ud.URL||Gs.URL,zs=zt.PassThrough,Wv=function(e,a){let r=new Ap(a).hostname,i=new Ap(e).hostname;return r===i||r[r.length-i.length-1]==="."&&r.endsWith(i)};function ir(t,e){if(!ir.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Y1.Promise=ir.Promise,new ir.Promise(function(a,r){let i=new ua(t,e),d=Yv(i),n=(d.protocol==="https:"?Uv:$s).request,f=i.signal,h=null,v=function(){let L=new Xi("The user aborted a request.");r(L),i.body&&i.body instanceof zt.Readable&&i.body.destroy(L),!(!h||!h.body)&&h.body.emit("error",L)};if(f&&f.aborted){v();return}let I=function(){v(),R()},S=n(d),O;f&&f.addEventListener("abort",I);function R(){S.abort(),f&&f.removeEventListener("abort",I),clearTimeout(O)}i.timeout&&S.once("socket",function(V){O=setTimeout(function(){r(new et(`network timeout at: ${i.url}`,"request-timeout")),R()},i.timeout)}),S.on("error",function(V){r(new et(`request to ${i.url} failed, reason: ${V.message}`,"system",V)),R()}),S.on("response",function(V){clearTimeout(O);let L=kv(V.headers);if(ir.isRedirect(V.statusCode)){let we=L.get("Location"),Ie=null;try{Ie=we===null?null:new Ap(we,i.url).toString()}catch{if(i.redirect!=="manual"){r(new et(`uri requested responds with an invalid redirect URL: ${we}`,"invalid-redirect")),R();return}}switch(i.redirect){case"error":r(new et(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),R();return;case"manual":if(Ie!==null)try{L.set("Location",Ie)}catch(ce){r(ce)}break;case"follow":if(Ie===null)break;if(i.counter>=i.follow){r(new et(`maximum redirect reached at: ${i.url}`,"max-redirect")),R();return}let ye={headers:new mt(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:i.body,signal:i.signal,timeout:i.timeout,size:i.size};if(!Wv(i.url,Ie))for(let ce of["authorization","www-authenticate","cookie","cookie2"])ye.headers.delete(ce);if(V.statusCode!==303&&i.body&&Xs(i)===null){r(new et("Cannot follow redirect with body being a readable stream","unsupported-redirect")),R();return}(V.statusCode===303||(V.statusCode===301||V.statusCode===302)&&i.method==="POST")&&(ye.method="GET",ye.body=void 0,ye.headers.delete("content-length")),a(ir(new ua(Ie,ye))),R();return}}V.once("end",function(){f&&f.removeEventListener("abort",I)});let $=V.pipe(new zs),X={url:i.url,status:V.statusCode,statusText:V.statusMessage,headers:L,size:i.size,timeout:i.timeout,counter:i.counter},ie=L.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||ie===null||V.statusCode===204||V.statusCode===304){h=new It($,X),a(h);return}let oe={flush:Vr.Z_SYNC_FLUSH,finishFlush:Vr.Z_SYNC_FLUSH};if(ie=="gzip"||ie=="x-gzip"){$=$.pipe(Vr.createGunzip(oe)),h=new It($,X),a(h);return}if(ie=="deflate"||ie=="x-deflate"){V.pipe(new zs).once("data",function(Ie){(Ie[0]&15)===8?$=$.pipe(Vr.createInflate()):$=$.pipe(Vr.createInflateRaw()),h=new It($,X),a(h)});return}if(ie=="br"&&typeof Vr.createBrotliDecompress=="function"){$=$.pipe(Vr.createBrotliDecompress()),h=new It($,X),a(h);return}h=new It($,X),a(h)}),Lv(S,i)})}ir.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};ir.Promise=global.Promise;e3.exports=ca=ir;Object.defineProperty(ca,"__esModule",{value:!0});ca.default=ca;ca.Headers=mt;ca.Request=ua;ca.Response=It;ca.FetchError=et});var _p=T((Ur,a3)=>{l();var e0=t3(),Jv=e0.default||e0,cd=function(t,e){return/^\/\//.test(t)&&(t="https:"+t),Jv.call(this,t,e)};cd.ponyfill=!0;a3.exports=Ur=cd;Ur.fetch=cd;Ur.Headers=e0.Headers;Ur.Request=e0.Request;Ur.Response=e0.Response;Ur.default=cd});var Ep=T(p3=>{l();var r3=Object.defineProperty,Xv=t=>r3(t,"__esModule",{value:!0}),Zv=(t,e)=>{Xv(t);for(var a in e)r3(t,a,{get:e[a],enumerable:!0})};Zv(p3,{Channel:()=>d3,LongPoll:()=>Sp,Presence:()=>a0,Serializer:()=>r0,Socket:()=>db});var i0=t=>typeof t=="function"?t:function(){return t},eb=typeof self<"u"?self:null,t0=typeof window<"u"?window:null,md=eb||t0||void 0,tb="2.0.0",ha={connecting:0,open:1,closing:2,closed:3},ab=1e4,rb=1e3,St={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},Oa={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Ip={longpoll:"longpoll",websocket:"websocket"},ib={complete:4},hd=class{constructor(t,e,a,r){this.channel=t,this.event=e,this.payload=a||function(){return{}},this.receivedResp=null,this.timeout=r,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:t,response:e,_ref:a}){this.recHooks.filter(r=>r.status===t).forEach(r=>r.callback(e))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},i3=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},d3=class{constructor(t,e,a){this.state=St.closed,this.topic=t,this.params=i0(e||{}),this.socket=a,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new hd(this,Oa.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new i3(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=St.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(r=>r.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=St.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=St.closed,this.socket.remove(this)}),this.onError(r=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,r),this.isJoining()&&this.joinPush.reset(),this.state=St.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new hd(this,Oa.leave,i0({}),this.timeout).send(),this.state=St.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(Oa.reply,(r,i)=>{this.trigger(this.replyEventName(i),r)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(t){this.on(Oa.close,t)}onError(t){return this.on(Oa.error,e=>t(e))}on(t,e){let a=this.bindingRef++;return this.bindings.push({event:t,ref:a,callback:e}),a}off(t,e){this.bindings=this.bindings.filter(a=>!(a.event===t&&(typeof e>"u"||e===a.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,a=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let r=new hd(this,t,function(){return e},a);return this.canPush()?r.send():(r.startTimeout(),this.pushBuffer.push(r)),r}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=St.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(Oa.close,"leave")},a=new hd(this,Oa.leave,i0({}),t);return a.receive("ok",()=>e()).receive("timeout",()=>e()),a.send(),this.canPush()||a.trigger("ok",{}),a}onMessage(t,e,a){return e}isMember(t,e,a,r){return this.topic!==t?!1:r&&r!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:a,joinRef:r}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=St.joining,this.joinPush.resend(t))}trigger(t,e,a,r){let i=this.onMessage(t,e,a,r);if(e&&!i)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let d=this.bindings.filter(n=>n.event===t);for(let n=0;n{let f=this.parseJSON(t.responseText);n&&n(f)},d&&(t.ontimeout=d),t.onprogress=()=>{},t.send(r)}static xhrRequest(t,e,a,r,i,d,n,f){t.open(e,a,!0),t.timeout=d,t.setRequestHeader("Content-Type",r),t.onerror=()=>{f&&f(null)},t.onreadystatechange=()=>{if(t.readyState===ib.complete&&f){let h=this.parseJSON(t.responseText);f(h)}},n&&(t.ontimeout=n),t.send(i)}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let a=[];for(var r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let i=e?`${e}[${r}]`:r,d=t[r];typeof d=="object"?a.push(this.serialize(d,i)):a.push(encodeURIComponent(i)+"="+encodeURIComponent(d))}return a.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let a=t.match(/\?/)?"&":"?";return`${t}${a}${this.serialize(e)}`}},Sp=class{constructor(t){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=ha.connecting,this.poll()}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Ip.websocket),"$1/"+Ip.longpoll)}endpointURL(){return d0.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(){this.close(),this.readyState=ha.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry()}poll(){(this.readyState===ha.open||this.readyState===ha.connecting)&&d0.request("GET",this.endpointURL(),"application/json",null,this.timeout,this.ontimeout.bind(this),t=>{if(t){var{status:e,token:a,messages:r}=t;this.token=a}else e=0;switch(e){case 200:r.forEach(i=>{setTimeout(()=>{this.onmessage({data:i})},0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=ha.open,this.onopen(),this.poll();break;case 403:this.onerror(),this.close();break;case 0:case 500:this.onerror(),this.closeAndRetry();break;default:throw new Error(`unhandled poll status ${e}`)}})}send(t){d0.request("POST",this.endpointURL(),"application/json",t,this.timeout,this.onerror.bind(this,"timeout"),e=>{(!e||e.status!==200)&&(this.onerror(e&&e.status),this.closeAndRetry())})}close(t,e){this.readyState=ha.closed,this.onclose()}},a0=class{constructor(t,e={}){let a=e.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(a.state,r=>{let{onJoin:i,onLeave:d,onSync:n}=this.caller;this.joinRef=this.channel.joinRef(),this.state=a0.syncState(this.state,r,i,d),this.pendingDiffs.forEach(f=>{this.state=a0.syncDiff(this.state,f,i,d)}),this.pendingDiffs=[],n()}),this.channel.on(a.diff,r=>{let{onJoin:i,onLeave:d,onSync:n}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=a0.syncDiff(this.state,r,i,d),n())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return a0.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,e,a,r){let i=this.clone(t),d={},n={};return this.map(i,(f,h)=>{e[f]||(n[f]=h)}),this.map(e,(f,h)=>{let v=i[f];if(v){let I=h.metas.map(V=>V.phx_ref),S=v.metas.map(V=>V.phx_ref),O=h.metas.filter(V=>S.indexOf(V.phx_ref)<0),R=v.metas.filter(V=>I.indexOf(V.phx_ref)<0);O.length>0&&(d[f]=h,d[f].metas=O),R.length>0&&(n[f]=this.clone(v),n[f].metas=R)}else d[f]=h}),this.syncDiff(i,{joins:d,leaves:n},a,r)}static syncDiff(t,e,a,r){let{joins:i,leaves:d}=this.clone(e);return a||(a=function(){}),r||(r=function(){}),this.map(i,(n,f)=>{let h=t[n];if(t[n]=this.clone(f),h){let v=t[n].metas.map(S=>S.phx_ref),I=h.metas.filter(S=>v.indexOf(S.phx_ref)<0);t[n].metas.unshift(...I)}a(n,h,f)}),this.map(d,(n,f)=>{let h=t[n];if(!h)return;let v=f.metas.map(I=>I.phx_ref);h.metas=h.metas.filter(I=>v.indexOf(I.phx_ref)<0),r(n,h,f),h.metas.length===0&&delete t[n]}),t}static list(t,e){return e||(e=function(a,r){return r}),this.map(t,(a,r)=>e(a,r))}static map(t,e){return Object.getOwnPropertyNames(t).map(a=>e(a,t[a]))}static clone(t){return JSON.parse(JSON.stringify(t))}},r0={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let a=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(a))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[a,r,i,d,n]=JSON.parse(t);return e({join_ref:a,ref:r,topic:i,event:d,payload:n})}},binaryEncode(t){let{join_ref:e,ref:a,event:r,topic:i,payload:d}=t,n=this.META_LENGTH+e.length+a.length+i.length+r.length,f=new ArrayBuffer(this.HEADER_LENGTH+n),h=new DataView(f),v=0;h.setUint8(v++,this.KINDS.push),h.setUint8(v++,e.length),h.setUint8(v++,a.length),h.setUint8(v++,i.length),h.setUint8(v++,r.length),Array.from(e,S=>h.setUint8(v++,S.charCodeAt(0))),Array.from(a,S=>h.setUint8(v++,S.charCodeAt(0))),Array.from(i,S=>h.setUint8(v++,S.charCodeAt(0))),Array.from(r,S=>h.setUint8(v++,S.charCodeAt(0)));var I=new Uint8Array(f.byteLength+d.byteLength);return I.set(new Uint8Array(f),0),I.set(new Uint8Array(d),f.byteLength),I.buffer},binaryDecode(t){let e=new DataView(t),a=e.getUint8(0),r=new TextDecoder;switch(a){case this.KINDS.push:return this.decodePush(t,e,r);case this.KINDS.reply:return this.decodeReply(t,e,r);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,r)}},decodePush(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=e.getUint8(3),n=this.HEADER_LENGTH+this.META_LENGTH-1,f=a.decode(t.slice(n,n+r));n=n+r;let h=a.decode(t.slice(n,n+i));n=n+i;let v=a.decode(t.slice(n,n+d));n=n+d;let I=t.slice(n,t.byteLength);return{join_ref:f,ref:null,topic:h,event:v,payload:I}},decodeReply(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=e.getUint8(3),n=e.getUint8(4),f=this.HEADER_LENGTH+this.META_LENGTH,h=a.decode(t.slice(f,f+r));f=f+r;let v=a.decode(t.slice(f,f+i));f=f+i;let I=a.decode(t.slice(f,f+d));f=f+d;let S=a.decode(t.slice(f,f+n));f=f+n;let O=t.slice(f,t.byteLength),R={status:S,response:O};return{join_ref:h,ref:v,topic:I,event:Oa.reply,payload:R}},decodeBroadcast(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=this.HEADER_LENGTH+2,n=a.decode(t.slice(d,d+r));d=d+r;let f=a.decode(t.slice(d,d+i));d=d+i;let h=t.slice(d,t.byteLength);return{join_ref:null,ref:null,topic:n,event:f,payload:h}}},db=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=e.timeout||ab,this.transport=e.transport||md.WebSocket||Sp,this.establishedConnections=0,this.defaultEncoder=r0.encode.bind(r0),this.defaultDecoder=r0.decode.bind(r0),this.closeWasClean=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.transport!==Sp?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let a=null;t0&&t0.addEventListener&&(t0.addEventListener("pagehide",r=>{this.conn&&(this.disconnect(),a=this.connectClock)}),t0.addEventListener("pageshow",r=>{a===this.connectClock&&(a=null,this.connect())})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.rejoinAfterMs=r=>e.rejoinAfterMs?e.rejoinAfterMs(r):[1e3,2e3,5e3][r-1]||1e4,this.reconnectAfterMs=r=>e.reconnectAfterMs?e.reconnectAfterMs(r):[10,50,100,150,200,250,500,1e3,2e3][r-1]||5e3,this.logger=e.logger||null,this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=i0(e.params||{}),this.endPoint=`${t}/${Ip.websocket}`,this.vsn=e.vsn||tb,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new i3(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}replaceTransport(t){this.disconnect(),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=d0.appendParams(d0.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,a){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(t,e,a)}connect(t){this.connectClock++,t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=i0(t)),!this.conn&&(this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(t,e,a){this.logger(t,e,a)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,t])=>t())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.abnormalClose("heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,clearTimeout(this.heartbeatTimer),setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,a){if(!this.conn)return t&&t();this.waitForBufferDone(()=>{this.conn&&(e?this.conn.close(e,a||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e=1){if(e===5||!this.conn||!this.conn.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(t,e+1)},150*e)}waitForSocketClosed(t,e=1){if(e===5||!this.conn||this.conn.readyState===ha.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(t,e+1)},150*e)}onConnClose(t){let e=t&&t.code;this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(),clearTimeout(this.heartbeatTimer),!this.closeWasClean&&e!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,a])=>a(t))}onConnError(t){this.hasLogger()&&this.log("transport",t);let e=this.transport,a=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,r])=>{r(t,e,a)}),(e===this.transport||a>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(Oa.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case ha.connecting:return"connecting";case ha.open:return"open";case ha.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e.joinRef()!==t.joinRef())}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([a])=>t.indexOf(a)===-1)}channel(t,e={}){let a=new d3(t,e,this);return this.channels.push(a),a}push(t){if(this.hasLogger()){let{topic:e,event:a,payload:r,ref:i,join_ref:d}=t;this.log("push",`${e} ${a} (${d}, ${i})`,r)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}abnormalClose(t){this.closeWasClean=!1,this.isConnected()&&this.conn.close(rb,t)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:a,event:r,payload:i,ref:d,join_ref:n}=e;d&&d===this.pendingHeartbeatRef&&(clearTimeout(this.heartbeatTimer),this.pendingHeartbeatRef=null,setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${i.status||""} ${a} ${r} ${d&&"("+d+")"||""}`,i);for(let f=0;fa.topic===t&&(a.isJoined()||a.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}}});var pr=T((kM,n3)=>{"use strict";l();n3.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:N.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var p0=T((HM,Cp)=>{"use strict";l();var{EMPTY_BUFFER:pb}=pr();function s3(t,e){if(t.length===0)return pb;if(t.length===1)return t[0];let a=N.allocUnsafe(e),r=0;for(let i=0;i{"use strict";l();var u3=Symbol("kDone"),Np=Symbol("kRun"),Dp=class{constructor(e){this[u3]=()=>{this.pending--,this[Np]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Np]()}[Np](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[u3])}}};c3.exports=Dp});var f0=T((GM,g3)=>{"use strict";l();var n0=Ge("zlib"),m3=p0(),nb=h3(),{kStatusCode:v3}=pr(),sb=N.from([0,0,255,255]),yd=Symbol("permessage-deflate"),Pa=Symbol("total-length"),s0=Symbol("callback"),nr=Symbol("buffers"),gd=Symbol("error"),bd,Mp=class{constructor(e,a,r){if(this._maxPayload=r|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!a,this._deflate=null,this._inflate=null,this.params=null,!bd){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;bd=new nb(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[s0];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let a=this._options,r=e.find(i=>!(a.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(a.serverMaxWindowBits===!1||typeof a.serverMaxWindowBits=="number"&&a.serverMaxWindowBits>i.server_max_window_bits)||typeof a.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return a.serverNoContextTakeover&&(r.server_no_context_takeover=!0),a.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof a.serverMaxWindowBits=="number"&&(r.server_max_window_bits=a.serverMaxWindowBits),typeof a.clientMaxWindowBits=="number"?r.client_max_window_bits=a.clientMaxWindowBits:(r.client_max_window_bits===!0||a.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let a=e[0];if(this._options.clientNoContextTakeover===!1&&a.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!a.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(a.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&a.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return a}normalizeParams(e){return e.forEach(a=>{Object.keys(a).forEach(r=>{let i=a[r];if(i.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(i=i[0],r==="client_max_window_bits"){if(i!==!0){let d=+i;if(!Number.isInteger(d)||d<8||d>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=d}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else if(r==="server_max_window_bits"){let d=+i;if(!Number.isInteger(d)||d<8||d>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=d}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else throw new Error(`Unknown parameter "${r}"`);a[r]=i})}),e}decompress(e,a,r){bd.add(i=>{this._decompress(e,a,(d,n)=>{i(),r(d,n)})})}compress(e,a,r){bd.add(i=>{this._compress(e,a,(d,n)=>{i(),r(d,n)})})}_decompress(e,a,r){let i=this._isServer?"client":"server";if(!this._inflate){let d=`${i}_max_window_bits`,n=typeof this.params[d]!="number"?n0.Z_DEFAULT_WINDOWBITS:this.params[d];this._inflate=n0.createInflateRaw({...this._options.zlibInflateOptions,windowBits:n}),this._inflate[yd]=this,this._inflate[Pa]=0,this._inflate[nr]=[],this._inflate.on("error",ob),this._inflate.on("data",b3)}this._inflate[s0]=r,this._inflate.write(e),a&&this._inflate.write(sb),this._inflate.flush(()=>{let d=this._inflate[gd];if(d){this._inflate.close(),this._inflate=null,r(d);return}let n=m3.concat(this._inflate[nr],this._inflate[Pa]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Pa]=0,this._inflate[nr]=[],a&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),r(null,n)})}_compress(e,a,r){let i=this._isServer?"server":"client";if(!this._deflate){let d=`${i}_max_window_bits`,n=typeof this.params[d]!="number"?n0.Z_DEFAULT_WINDOWBITS:this.params[d];this._deflate=n0.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:n}),this._deflate[Pa]=0,this._deflate[nr]=[],this._deflate.on("data",fb)}this._deflate[s0]=r,this._deflate.write(e),this._deflate.flush(n0.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let d=m3.concat(this._deflate[nr],this._deflate[Pa]);a&&(d=d.slice(0,d.length-4)),this._deflate[s0]=null,this._deflate[Pa]=0,this._deflate[nr]=[],a&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),r(null,d)})}};g3.exports=Mp;function fb(t){this[nr].push(t),this[Pa]+=t.length}function b3(t){if(this[Pa]+=t.length,this[yd]._maxPayload<1||this[Pa]<=this[yd]._maxPayload){this[nr].push(t);return}this[gd]=new RangeError("Max payload size exceeded"),this[gd].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[gd][v3]=1009,this.removeListener("data",b3),this.reset()}function ob(t){this[yd]._inflate=null,t[v3]=1007,this[s0](t)}});var o0=T((WM,Tp)=>{"use strict";l();var y3=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function x3(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function A3(t){let e=t.length,a=0;for(;a=e||(t[a+1]&192)!==128||(t[a+2]&192)!==128||t[a]===224&&(t[a+1]&224)===128||t[a]===237&&(t[a+1]&224)===160)return!1;a+=3}else if((t[a]&248)===240){if(a+3>=e||(t[a+1]&192)!==128||(t[a+2]&192)!==128||(t[a+3]&192)!==128||t[a]===240&&(t[a+1]&240)===128||t[a]===244&&t[a+1]>143||t[a]>244)return!1;a+=4}else return!1;return!0}try{let t=Ge("utf-8-validate");Tp.exports={isValidStatusCode:x3,isValidUTF8(e){return e.length<150?A3(e):t(e)},tokenChars:y3}}catch{Tp.exports={isValidStatusCode:x3,isValidUTF8:A3,tokenChars:y3}}});var Pp=T((XM,N3)=>{"use strict";l();var{Writable:lb}=Ge("stream"),w3=f0(),{BINARY_TYPES:ub,EMPTY_BUFFER:_3,kStatusCode:cb,kWebSocket:hb}=pr(),{concat:Bp,toArrayBuffer:mb,unmask:vb}=p0(),{isValidStatusCode:bb,isValidUTF8:I3}=o0(),l0=0,S3=1,E3=2,C3=3,qp=4,gb=5,Op=class extends lb{constructor(e={}){super(),this._binaryType=e.binaryType||ub[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[hb]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=l0,this._loop=!1}_write(e,a,r){if(this._opcode===8&&this._state==l0)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=r.length?a.set(this._buffers.shift(),i):(a.set(new Uint8Array(r.buffer,r.byteOffset,e),i),this._buffers[0]=r.slice(e)),e-=r.length}while(e>0);return a}startLoop(e){let a;this._loop=!0;do switch(this._state){case l0:a=this.getInfo();break;case S3:a=this.getPayloadLength16();break;case E3:a=this.getPayloadLength64();break;case C3:this.getMask();break;case qp:a=this.getData(e);break;default:this._loop=!1;return}while(this._loop);e(a)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let e=this.consume(2);if((e[0]&48)!==0)return this._loop=!1,z1(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");let a=(e[0]&64)===64;if(a&&!this._extensions[w3.extensionName])return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=(e[0]&128)===128,this._opcode=e[0]&15,this._payloadLength=e[1]&127,this._opcode===0){if(a)return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,z1(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,z1(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=a}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,z1(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(a)return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125)return this._loop=!1,z1(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}else return this._loop=!1,z1(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(e[1]&128)===128,this._isServer){if(!this._masked)return this._loop=!1,z1(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,z1(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(this._payloadLength===126)this._state=S3;else if(this._payloadLength===127)this._state=E3;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let e=this.consume(8),a=e.readUInt32BE(0);return a>Math.pow(2,53-32)-1?(this._loop=!1,z1(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=a*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,z1(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=C3:this._state=qp}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=qp}getData(e){let a=_3;if(this._payloadLength){if(this._bufferedBytes7)return this.controlMessage(a);if(this._compressed){this._state=gb,this.decompress(a,e);return}return a.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(a)),this.dataMessage()}decompress(e,a){this._extensions[w3.extensionName].decompress(e,this._fin,(i,d)=>{if(i)return a(i);if(d.length){if(this._messageLength+=d.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return a(z1(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(d)}let n=this.dataMessage();if(n)return a(n);this.startLoop(a)})}dataMessage(){if(this._fin){let e=this._messageLength,a=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;this._binaryType==="nodebuffer"?r=Bp(a,e):this._binaryType==="arraybuffer"?r=mb(Bp(a,e)):r=a,this.emit("message",r,!0)}else{let r=Bp(a,e);if(!this._skipUTF8Validation&&!I3(r))return this._loop=!1,z1(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",r,!1)}}this._state=l0}controlMessage(e){if(this._opcode===8)if(this._loop=!1,e.length===0)this.emit("conclude",1005,_3),this.end();else{if(e.length===1)return z1(RangeError,"invalid payload length 1",!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");{let a=e.readUInt16BE(0);if(!bb(a))return z1(RangeError,`invalid status code ${a}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");let r=e.slice(2);if(!this._skipUTF8Validation&&!I3(r))return z1(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",a,r),this.end()}}else this._opcode===9?this.emit("ping",e):this.emit("pong",e);this._state=l0}};N3.exports=Op;function z1(t,e,a,r,i){let d=new t(a?`Invalid WebSocket frame: ${e}`:e);return Error.captureStackTrace(d,z1),d.code=i,d[cb]=r,d}});var Vp=T((aT,T3)=>{"use strict";l();var eT=Ge("net"),tT=Ge("tls"),{randomFillSync:yb}=Ge("crypto"),D3=f0(),{EMPTY_BUFFER:xb}=pr(),{isValidStatusCode:Ab}=o0(),{mask:M3,toBuffer:ci}=p0(),$t=Symbol("kByteLength"),wb=N.alloc(4),ma=class{constructor(e,a,r){this._extensions=a||{},r&&(this._generateMask=r,this._maskBuffer=N.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,a){let r,i=!1,d=2,n=!1;a.mask&&(r=a.maskBuffer||wb,a.generateMask?a.generateMask(r):yb(r,0,4),n=(r[0]|r[1]|r[2]|r[3])===0,d=6);let f;typeof e=="string"?(!a.mask||n)&&a[$t]!==void 0?f=a[$t]:(e=N.from(e),f=e.length):(f=e.length,i=a.mask&&a.readOnly&&!n);let h=f;f>=65536?(d+=8,h=127):f>125&&(d+=2,h=126);let v=N.allocUnsafe(i?f+d:d);return v[0]=a.fin?a.opcode|128:a.opcode,a.rsv1&&(v[0]|=64),v[1]=h,h===126?v.writeUInt16BE(f,2):h===127&&(v[2]=v[3]=0,v.writeUIntBE(f,4,6)),a.mask?(v[1]|=128,v[d-4]=r[0],v[d-3]=r[1],v[d-2]=r[2],v[d-1]=r[3],n?[v,e]:i?(M3(e,r,v,d,f),[v]):(M3(e,r,e,0,f),[v,e])):[v,e]}close(e,a,r,i){let d;if(e===void 0)d=xb;else{if(typeof e!="number"||!Ab(e))throw new TypeError("First argument must be a valid error code number");if(a===void 0||!a.length)d=N.allocUnsafe(2),d.writeUInt16BE(e,0);else{let f=N.byteLength(a);if(f>123)throw new RangeError("The message must not be greater than 123 bytes");d=N.allocUnsafe(2+f),d.writeUInt16BE(e,0),typeof a=="string"?d.write(a,2):d.set(a,2)}}let n={[$t]:d.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,d,!1,n,i]):this.sendFrame(ma.frame(d,n),i)}ping(e,a,r){let i,d;if(typeof e=="string"?(i=N.byteLength(e),d=!1):(e=ci(e),i=e.length,d=ci.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[$t]:i,fin:!0,generateMask:this._generateMask,mask:a,maskBuffer:this._maskBuffer,opcode:9,readOnly:d,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(ma.frame(e,n),r)}pong(e,a,r){let i,d;if(typeof e=="string"?(i=N.byteLength(e),d=!1):(e=ci(e),i=e.length,d=ci.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[$t]:i,fin:!0,generateMask:this._generateMask,mask:a,maskBuffer:this._maskBuffer,opcode:10,readOnly:d,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(ma.frame(e,n),r)}send(e,a,r){let i=this._extensions[D3.extensionName],d=a.binary?2:1,n=a.compress,f,h;if(typeof e=="string"?(f=N.byteLength(e),h=!1):(e=ci(e),f=e.length,h=ci.readOnly),this._firstFragment?(this._firstFragment=!1,n&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(n=f>=i._threshold),this._compress=n):(n=!1,d=0),a.fin&&(this._firstFragment=!0),i){let v={[$t]:f,fin:a.fin,generateMask:this._generateMask,mask:a.mask,maskBuffer:this._maskBuffer,opcode:d,readOnly:h,rsv1:n};this._deflating?this.enqueue([this.dispatch,e,this._compress,v,r]):this.dispatch(e,this._compress,v,r)}else this.sendFrame(ma.frame(e,{[$t]:f,fin:a.fin,generateMask:this._generateMask,mask:a.mask,maskBuffer:this._maskBuffer,opcode:d,readOnly:h,rsv1:!1}),r)}dispatch(e,a,r,i){if(!a){this.sendFrame(ma.frame(e,r),i);return}let d=this._extensions[D3.extensionName];this._bufferedBytes+=r[$t],this._deflating=!0,d.compress(e,r.fin,(n,f)=>{if(this._socket.destroyed){let h=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(h);for(let v=0;v{"use strict";l();var{kForOnEventAttribute:Up,kListener:B3}=pr(),q3=Symbol("kCode"),O3=Symbol("kData"),P3=Symbol("kError"),V3=Symbol("kMessage"),U3=Symbol("kReason"),hi=Symbol("kTarget"),R3=Symbol("kType"),F3=Symbol("kWasClean"),Va=class{constructor(e){this[hi]=null,this[R3]=e}get target(){return this[hi]}get type(){return this[R3]}};Object.defineProperty(Va.prototype,"target",{enumerable:!0});Object.defineProperty(Va.prototype,"type",{enumerable:!0});var Rr=class extends Va{constructor(e,a={}){super(e),this[q3]=a.code===void 0?0:a.code,this[U3]=a.reason===void 0?"":a.reason,this[F3]=a.wasClean===void 0?!1:a.wasClean}get code(){return this[q3]}get reason(){return this[U3]}get wasClean(){return this[F3]}};Object.defineProperty(Rr.prototype,"code",{enumerable:!0});Object.defineProperty(Rr.prototype,"reason",{enumerable:!0});Object.defineProperty(Rr.prototype,"wasClean",{enumerable:!0});var mi=class extends Va{constructor(e,a={}){super(e),this[P3]=a.error===void 0?null:a.error,this[V3]=a.message===void 0?"":a.message}get error(){return this[P3]}get message(){return this[V3]}};Object.defineProperty(mi.prototype,"error",{enumerable:!0});Object.defineProperty(mi.prototype,"message",{enumerable:!0});var u0=class extends Va{constructor(e,a={}){super(e),this[O3]=a.data===void 0?null:a.data}get data(){return this[O3]}};Object.defineProperty(u0.prototype,"data",{enumerable:!0});var _b={addEventListener(t,e,a={}){let r;if(t==="message")r=function(d,n){let f=new u0("message",{data:n?d:d.toString()});f[hi]=this,e.call(this,f)};else if(t==="close")r=function(d,n){let f=new Rr("close",{code:d,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[hi]=this,e.call(this,f)};else if(t==="error")r=function(d){let n=new mi("error",{error:d,message:d.message});n[hi]=this,e.call(this,n)};else if(t==="open")r=function(){let d=new Va("open");d[hi]=this,e.call(this,d)};else return;r[Up]=!!a[Up],r[B3]=e,a.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let a of this.listeners(t))if(a[B3]===e&&!a[Up]){this.removeListener(t,a);break}}};L3.exports={CloseEvent:Rr,ErrorEvent:mi,Event:Va,EventTarget:_b,MessageEvent:u0}});var Rp=T((pT,k3)=>{"use strict";l();var{tokenChars:c0}=o0();function va(t,e,a){t[e]===void 0?t[e]=[a]:t[e].push(a)}function Ib(t){let e=Object.create(null),a=Object.create(null),r=!1,i=!1,d=!1,n,f,h=-1,v=-1,I=-1,S=0;for(;S{let a=t[e];return Array.isArray(a)||(a=[a]),a.map(r=>[e].concat(Object.keys(r).map(i=>{let d=r[i];return Array.isArray(d)||(d=[d]),d.map(n=>n===!0?i:`${i}=${n}`).join("; ")})).join("; ")).join(", ")}).join(", ")}k3.exports={format:Sb,parse:Ib}});var Hp=T((fT,X3)=>{"use strict";l();var Eb=Ge("events"),Cb=Ge("https"),Nb=Ge("http"),K3=Ge("net"),Db=Ge("tls"),{randomBytes:Mb,createHash:Tb}=Ge("crypto"),{Readable:sT}=Ge("stream"),{URL:Fp}=Ge("url"),sr=f0(),Bb=Pp(),qb=Vp(),{BINARY_TYPES:j3,EMPTY_BUFFER:xd,GUID:Ob,kForOnEventAttribute:Lp,kListener:Pb,kStatusCode:Vb,kWebSocket:nt,NOOP:z3}=pr(),{EventTarget:{addEventListener:Ub,removeEventListener:Rb}}=Q3(),{format:Fb,parse:Lb}=Rp(),{toBuffer:Qb}=p0(),Ua=["CONNECTING","OPEN","CLOSING","CLOSED"],kb=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,Qp=[8,13],jb=30*1e3,Re=class extends Eb{constructor(e,a,r){super(),this._binaryType=j3[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=xd,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=Re.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,a===void 0?a=[]:Array.isArray(a)||(typeof a=="object"&&a!==null?(r=a,a=[]):a=[a]),$3(this,e,a,r)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){!j3.includes(e)||(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,a,r){let i=new Bb({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation});this._sender=new qb(e,this._extensions,r.generateMask),this._receiver=i,this._socket=e,i[nt]=this,e[nt]=this,i.on("conclude",zb),i.on("drain",$b),i.on("error",Gb),i.on("message",Yb),i.on("ping",Wb),i.on("pong",Jb),e.setTimeout(0),e.setNoDelay(),a.length>0&&e.unshift(a),e.on("close",Y3),e.on("data",Ad),e.on("end",W3),e.on("error",J3),this._readyState=Re.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=Re.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[sr.extensionName]&&this._extensions[sr.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Re.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,a){if(this.readyState!==Re.CLOSED){if(this.readyState===Re.CONNECTING){let r="WebSocket was closed before the connection was established";return Tt(this,this._req,r)}if(this.readyState===Re.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=Re.CLOSING,this._sender.close(e,a,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),jb)}}pause(){this.readyState===Re.CONNECTING||this.readyState===Re.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,a,r){if(this.readyState===Re.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=a=void 0):typeof a=="function"&&(r=a,a=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Re.OPEN){jp(this,e,r);return}a===void 0&&(a=!this._isServer),this._sender.ping(e||xd,a,r)}pong(e,a,r){if(this.readyState===Re.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=a=void 0):typeof a=="function"&&(r=a,a=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Re.OPEN){jp(this,e,r);return}a===void 0&&(a=!this._isServer),this._sender.pong(e||xd,a,r)}resume(){this.readyState===Re.CONNECTING||this.readyState===Re.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,a,r){if(this.readyState===Re.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof a=="function"&&(r=a,a={}),typeof e=="number"&&(e=e.toString()),this.readyState!==Re.OPEN){jp(this,e,r);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...a};this._extensions[sr.extensionName]||(i.compress=!1),this._sender.send(e||xd,i,r)}terminate(){if(this.readyState!==Re.CLOSED){if(this.readyState===Re.CONNECTING){let e="WebSocket was closed before the connection was established";return Tt(this,this._req,e)}this._socket&&(this._readyState=Re.CLOSING,this._socket.destroy())}}};Object.defineProperty(Re,"CONNECTING",{enumerable:!0,value:Ua.indexOf("CONNECTING")});Object.defineProperty(Re.prototype,"CONNECTING",{enumerable:!0,value:Ua.indexOf("CONNECTING")});Object.defineProperty(Re,"OPEN",{enumerable:!0,value:Ua.indexOf("OPEN")});Object.defineProperty(Re.prototype,"OPEN",{enumerable:!0,value:Ua.indexOf("OPEN")});Object.defineProperty(Re,"CLOSING",{enumerable:!0,value:Ua.indexOf("CLOSING")});Object.defineProperty(Re.prototype,"CLOSING",{enumerable:!0,value:Ua.indexOf("CLOSING")});Object.defineProperty(Re,"CLOSED",{enumerable:!0,value:Ua.indexOf("CLOSED")});Object.defineProperty(Re.prototype,"CLOSED",{enumerable:!0,value:Ua.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Re.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Re.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Lp])return e[Pb];return null},set(e){for(let a of this.listeners(t))if(a[Lp]){this.removeListener(t,a);break}typeof e=="function"&&this.addEventListener(t,e,{[Lp]:!0})}})});Re.prototype.addEventListener=Ub;Re.prototype.removeEventListener=Rb;X3.exports=Re;function $3(t,e,a,r){let i={protocolVersion:Qp[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:void 0,host:void 0,path:void 0,port:void 0};if(!Qp.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Qp.join(", ")})`);let d;if(e instanceof Fp)d=e,t._url=e.href;else{try{d=new Fp(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}t._url=e}let n=d.protocol==="wss:",f=d.protocol==="ws+unix:",h;if(d.protocol!=="ws:"&&!n&&!f?h=`The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`:f&&!d.pathname?h="The URL's pathname is empty":d.hash&&(h="The URL contains a fragment identifier"),h){let L=new SyntaxError(h);if(t._redirects===0)throw L;kp(t,L);return}let v=n?443:80,I=Mb(16).toString("base64"),S=n?Cb.get:Nb.get,O=new Set,R;if(i.createConnection=n?Kb:Hb,i.defaultPort=i.defaultPort||v,i.port=d.port||v,i.host=d.hostname.startsWith("[")?d.hostname.slice(1,-1):d.hostname,i.headers={"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":I,Connection:"Upgrade",Upgrade:"websocket",...i.headers},i.path=d.pathname+d.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(R=new sr(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Fb({[sr.extensionName]:R.offer()})),a.length){for(let L of a){if(typeof L!="string"||!kb.test(L)||O.has(L))throw new SyntaxError("An invalid or duplicated subprotocol was specified");O.add(L)}i.headers["Sec-WebSocket-Protocol"]=a.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(d.username||d.password)&&(i.auth=`${d.username}:${d.password}`),f){let L=i.path.split(":");i.socketPath=L[0],i.path=L[1]}if(i.followRedirects){if(t._redirects===0){t._originalHost=d.host;let L=r&&r.headers;if(r={...r,headers:{}},L)for(let[$,X]of Object.entries(L))r.headers[$.toLowerCase()]=X}else d.host!==t._originalHost&&(delete i.headers.authorization,delete i.headers.cookie,delete i.headers.host,i.auth=void 0);i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+N.from(i.auth).toString("base64"))}let V=t._req=S(i);i.timeout&&V.on("timeout",()=>{Tt(t,V,"Opening handshake has timed out")}),V.on("error",L=>{V===null||V.aborted||(V=t._req=null,kp(t,L))}),V.on("response",L=>{let $=L.headers.location,X=L.statusCode;if($&&i.followRedirects&&X>=300&&X<400){if(++t._redirects>i.maxRedirects){Tt(t,V,"Maximum redirects exceeded");return}V.abort();let ie;try{ie=new Fp($,e)}catch{let we=new SyntaxError(`Invalid URL: ${$}`);kp(t,we);return}$3(t,ie,a,r)}else t.emit("unexpected-response",V,L)||Tt(t,V,`Unexpected server response: ${L.statusCode}`)}),V.on("upgrade",(L,$,X)=>{if(t.emit("upgrade",L),t.readyState!==Re.CONNECTING)return;V=t._req=null;let ie=Tb("sha1").update(I+Ob).digest("base64");if(L.headers["sec-websocket-accept"]!==ie){Tt(t,$,"Invalid Sec-WebSocket-Accept header");return}let oe=L.headers["sec-websocket-protocol"],we;if(oe!==void 0?O.size?O.has(oe)||(we="Server sent an invalid subprotocol"):we="Server sent a subprotocol but none was requested":O.size&&(we="Server sent no subprotocol"),we){Tt(t,$,we);return}oe&&(t._protocol=oe);let Ie=L.headers["sec-websocket-extensions"];if(Ie!==void 0){if(!R){Tt(t,$,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ye;try{ye=Lb(Ie)}catch{Tt(t,$,"Invalid Sec-WebSocket-Extensions header");return}let ce=Object.keys(ye);if(ce.length!==1||ce[0]!==sr.extensionName){Tt(t,$,"Server indicated an extension that was not requested");return}try{R.accept(ye[sr.extensionName])}catch{Tt(t,$,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[sr.extensionName]=R}t.setSocket($,X,{generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})})}function kp(t,e){t._readyState=Re.CLOSING,t.emit("error",e),t.emitClose()}function Hb(t){return t.path=t.socketPath,K3.connect(t)}function Kb(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=K3.isIP(t.host)?"":t.host),Db.connect(t)}function Tt(t,e,a){t._readyState=Re.CLOSING;let r=new Error(a);Error.captureStackTrace(r,Tt),e.setHeader?(e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),e.once("abort",t.emitClose.bind(t)),t.emit("error",r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function jp(t,e,a){if(e){let r=Qb(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(a){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${Ua[t.readyState]})`);a(r)}}function zb(t,e){let a=this[nt];a._closeFrameReceived=!0,a._closeMessage=e,a._closeCode=t,a._socket[nt]!==void 0&&(a._socket.removeListener("data",Ad),process.nextTick(G3,a._socket),t===1005?a.close():a.close(t,e))}function $b(){let t=this[nt];t.isPaused||t._socket.resume()}function Gb(t){let e=this[nt];e._socket[nt]!==void 0&&(e._socket.removeListener("data",Ad),process.nextTick(G3,e._socket),e.close(t[Vb])),e.emit("error",t)}function H3(){this[nt].emitClose()}function Yb(t,e){this[nt].emit("message",t,e)}function Wb(t){let e=this[nt];e.pong(t,!e._isServer,z3),e.emit("ping",t)}function Jb(t){this[nt].emit("pong",t)}function G3(t){t.resume()}function Y3(){let t=this[nt];this.removeListener("close",Y3),this.removeListener("data",Ad),this.removeListener("end",W3),t._readyState=Re.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[nt]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",H3),t._receiver.on("finish",H3))}function Ad(t){this[nt]._receiver.write(t)||this.pause()}function W3(){let t=this[nt];t._readyState=Re.CLOSING,t._receiver.end(),this.end()}function J3(){let t=this[nt];this.removeListener("error",J3),this.on("error",z3),t&&(t._readyState=Re.CLOSING,this.destroy())}});var af=T((lT,tf)=>{"use strict";l();var{Duplex:Xb}=Ge("stream");function Z3(t){t.emit("close")}function Zb(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ef(t){this.removeListener("error",ef),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function eg(t,e){let a=!0,r=new Xb({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(d,n){let f=!n&&r._readableState.objectMode?d.toString():d;r.push(f)||t.pause()}),t.once("error",function(d){r.destroyed||(a=!1,r.destroy(d))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(i,d){if(t.readyState===t.CLOSED){d(i),process.nextTick(Z3,r);return}let n=!1;t.once("error",function(h){n=!0,d(h)}),t.once("close",function(){n||d(i),process.nextTick(Z3,r)}),a&&t.terminate()},r._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(i,d,n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(i,d,n)});return}t.send(i,n)},r.on("end",Zb),r.on("error",ef),r}tf.exports=eg});var df=T((cT,rf)=>{"use strict";l();var{tokenChars:tg}=o0();function ag(t){let e=new Set,a=-1,r=-1,i=0;for(i;i{"use strict";l();var rg=Ge("events"),wd=Ge("http"),mT=Ge("https"),vT=Ge("net"),bT=Ge("tls"),{createHash:ig}=Ge("crypto"),pf=Rp(),Fr=f0(),dg=df(),pg=Hp(),{GUID:ng,kWebSocket:sg}=pr(),fg=/^[+/0-9A-Za-z]{22}==$/,nf=0,sf=1,ff=2,Kp=class extends rg{constructor(e,a){if(super(),e={maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:pg,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=wd.createServer((r,i)=>{let d=wd.STATUS_CODES[426];i.writeHead(426,{"Content-Length":d.length,"Content-Type":"text/plain"}),i.end(d)}),this._server.listen(e.port,e.host,e.backlog,a)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=og(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,d,n)=>{this.handleUpgrade(i,d,n,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=nf}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===ff){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(h0,this);return}if(e&&this.once("close",e),this._state!==sf)if(this._state=sf,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(h0,this):process.nextTick(h0,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{h0(this)})}}shouldHandle(e){if(this.options.path){let a=e.url.indexOf("?");if((a!==-1?e.url.slice(0,a):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,a,r,i){a.on("error",zp);let d=e.headers["sec-websocket-key"]!==void 0?e.headers["sec-websocket-key"]:!1,n=+e.headers["sec-websocket-version"];if(e.method!=="GET"||e.headers.upgrade.toLowerCase()!=="websocket"||!d||!fg.test(d)||n!==8&&n!==13||!this.shouldHandle(e))return vi(a,400);let f=e.headers["sec-websocket-protocol"],h=new Set;if(f!==void 0)try{h=dg.parse(f)}catch{return vi(a,400)}let v=e.headers["sec-websocket-extensions"],I={};if(this.options.perMessageDeflate&&v!==void 0){let S=new Fr(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let O=pf.parse(v);O[Fr.extensionName]&&(S.accept(O[Fr.extensionName]),I[Fr.extensionName]=S)}catch{return vi(a,400)}}if(this.options.verifyClient){let S={origin:e.headers[`${n===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(S,(O,R,V,L)=>{if(!O)return vi(a,R||401,V,L);this.completeUpgrade(I,d,h,e,a,r,i)});return}if(!this.options.verifyClient(S))return vi(a,401)}this.completeUpgrade(I,d,h,e,a,r,i)}completeUpgrade(e,a,r,i,d,n,f){if(!d.readable||!d.writable)return d.destroy();if(d[sg])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>nf)return vi(d,503);let h=ig("sha1").update(a+ng).digest("base64"),v=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${h}`],I=new this.options.WebSocket(null);if(r.size){let S=this.options.handleProtocols?this.options.handleProtocols(r,i):r.values().next().value;S&&(v.push(`Sec-WebSocket-Protocol: ${S}`),I._protocol=S)}if(e[Fr.extensionName]){let S=e[Fr.extensionName].params,O=pf.format({[Fr.extensionName]:[S]});v.push(`Sec-WebSocket-Extensions: ${O}`),I._extensions=e}this.emit("headers",v,i),d.write(v.concat(`\r +var av=Object.create;var mp=Object.defineProperty;var rv=Object.getOwnPropertyDescriptor;var iv=Object.getOwnPropertyNames;var dv=Object.getPrototypeOf,pv=Object.prototype.hasOwnProperty;var Ge=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,a)=>(typeof require<"u"?require:e)[a]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var nv=(t,e)=>()=>(t&&(e=t(t=0)),e);var T=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),xs=(t,e)=>{for(var a in e)mp(t,a,{get:e[a],enumerable:!0})},sv=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of iv(e))!pv.call(t,i)&&i!==a&&mp(t,i,{get:()=>e[i],enumerable:!(r=rv(e,i))||r.enumerable});return t};var la=(t,e,a)=>(a=t!=null?av(dv(t)):{},sv(e||!t||!t.__esModule?mp(a,"default",{value:t,enumerable:!0}):a,t));var C,l=nv(()=>{C=Ge("buffer").Buffer});var _s=T((eT,As)=>{"use strict";l();var U1={};As.exports=U1;function ws(t){return t<0?-1:1}function ov(t){return t%1===.5&&(t&1)===0?Math.floor(t):Math.round(t)}function ar(t,e){e.unsigned||--t;let a=e.unsigned?0:-Math.pow(2,t),r=Math.pow(2,t)-1,i=e.moduloBitLength?Math.pow(2,e.moduloBitLength):Math.pow(2,t),d=e.moduloBitLength?Math.pow(2,e.moduloBitLength-1):Math.pow(2,t-1);return function(n,s){s||(s={});let c=+n;if(s.enforceRange){if(!Number.isFinite(c))throw new TypeError("Argument is not a finite number");if(c=ws(c)*Math.floor(Math.abs(c)),cr)throw new TypeError("Argument is not in byte range");return c}if(!isNaN(c)&&s.clamp)return c=ov(c),cr&&(c=r),c;if(!Number.isFinite(c)||c===0)return 0;if(c=ws(c)*Math.floor(Math.abs(c)),c=c%i,!e.unsigned&&c>=d)return c-i;if(e.unsigned){if(c<0)c+=i;else if(c===-0)return 0}return c}}U1.void=function(){};U1.boolean=function(t){return!!t};U1.byte=ar(8,{unsigned:!1});U1.octet=ar(8,{unsigned:!0});U1.short=ar(16,{unsigned:!1});U1["unsigned short"]=ar(16,{unsigned:!0});U1.long=ar(32,{unsigned:!1});U1["unsigned long"]=ar(32,{unsigned:!0});U1["long long"]=ar(32,{unsigned:!1,moduloBitLength:64});U1["unsigned long long"]=ar(32,{unsigned:!0,moduloBitLength:64});U1.double=function(t){let e=+t;if(!Number.isFinite(e))throw new TypeError("Argument is not a finite floating-point value");return e};U1["unrestricted double"]=function(t){let e=+t;if(isNaN(e))throw new TypeError("Argument is NaN");return e};U1.float=U1.double;U1["unrestricted float"]=U1["unrestricted double"];U1.DOMString=function(t,e){return e||(e={}),e.treatNullAsEmptyString&&t===null?"":String(t)};U1.ByteString=function(t,e){let a=String(t),r;for(let i=0;(r=a.codePointAt(i))!==void 0;++i)if(r>255)throw new TypeError("Argument is not a valid bytestring");return a};U1.USVString=function(t){let e=String(t),a=e.length,r=[];for(let i=0;i57343)r.push(String.fromCodePoint(d));else if(56320<=d&&d<=57343)r.push(String.fromCodePoint(65533));else if(i===a-1)r.push(String.fromCodePoint(65533));else{let n=e.charCodeAt(i+1);if(56320<=n&&n<=57343){let s=d&1023,c=n&1023;r.push(String.fromCodePoint((2<<15)+(2<<9)*s+c)),++i}else r.push(String.fromCodePoint(65533))}}return r.join("")};U1.Date=function(t,e){if(!(t instanceof Date))throw new TypeError("Argument is not a Date object");if(!isNaN(t))return t};U1.RegExp=function(t,e){return t instanceof RegExp||(t=new RegExp(t)),t}});var Is=T((aT,rr)=>{"use strict";l();rr.exports.mixin=function(e,a){let r=Object.getOwnPropertyNames(a);for(let i=0;i{fv.exports=[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1e3,1e3],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6e3],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8e3,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8e3]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9e3],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[3e4]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13e3,13e3],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43e3,43e3],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64e3,64e3],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66e3,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[12e4,12e4],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128e3,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23e3]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149e3]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32e3]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195e3,195e3],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[4e4]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918e3,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]});var Ts=T((dT,ld)=>{"use strict";l();var Cs=Ge("punycode"),Es=Ss(),oi={TRANSITIONAL:0,NONTRANSITIONAL:1};function Ns(t){return t.split("\0").map(function(e){return e.normalize("NFC")}).join("\0")}function Ds(t){for(var e=0,a=Es.length-1;e<=a;){var r=Math.floor((e+a)/2),i=Es[r];if(i[0][0]<=t&&i[0][1]>=t)return i;i[0][0]>t?a=r-1:e=r+1}return null}var lv=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function Ms(t){return t.replace(lv,"_").length}function uv(t,e,a){for(var r=!1,i="",d=Ms(t),n=0;n253||n.length===0)&&(i.error=!0);for(var s=0;s63||d.length===0){i.error=!0;break}}return i.error?null:d.join(".")};ld.exports.toUnicode=function(t,e){var a=fd(t,e,oi.NONTRANSITIONAL);return{domain:a.string,error:a.error}};ld.exports.PROCESSING_OPTIONS=oi});var ua=T((nT,It)=>{"use strict";l();var fi=Ge("punycode"),Bs=Ts(),Us={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},Ye=Symbol("failure");function qs(t){return fi.ucs2.decode(t).length}function Os(t,e){let a=t[e];return isNaN(a)?void 0:String.fromCodePoint(a)}function Gi(t){return t>=48&&t<=57}function Yi(t){return t>=65&&t<=90||t>=97&&t<=122}function mv(t){return Yi(t)||Gi(t)}function zt(t){return Gi(t)||t>=65&&t<=70||t>=97&&t<=102}function Ps(t){return t==="."||t.toLowerCase()==="%2e"}function vv(t){return t=t.toLowerCase(),t===".."||t==="%2e."||t===".%2e"||t==="%2e%2e"}function bv(t,e){return Yi(t)&&(e===58||e===124)}function Vs(t){return t.length===2&&Yi(t.codePointAt(0))&&(t[1]===":"||t[1]==="|")}function gv(t){return t.length===2&&Yi(t.codePointAt(0))&&t[1]===":"}function yv(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/)!==-1}function xv(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/)!==-1}function vp(t){return Us[t]!==void 0}function K1(t){return vp(t.scheme)}function wv(t){return Us[t]}function Rs(t){let e=t.toString(16).toUpperCase();return e.length===1&&(e="0"+e),"%"+e}function Av(t){let e=new C(t),a="";for(let r=0;r126}var Iv=new Set([32,34,35,60,62,63,96,123,125]);function Fs(t){return ud(t)||Iv.has(t)}var Sv=new Set([47,58,59,61,64,91,92,93,94,124]);function gp(t){return Fs(t)||Sv.has(t)}function Pr(t,e){let a=String.fromCodePoint(t);return e(t)?Av(a):a}function Ev(t){let e=10;return t.length>=2&&t.charAt(0)==="0"&&t.charAt(1).toLowerCase()==="x"?(t=t.substring(2),e=16):t.length>=2&&t.charAt(0)==="0"&&(t=t.substring(1),e=8),t===""?0:(e===10?/[^0-9]/:e===16?/[^0-9A-Fa-f]/:/[^0-7]/).test(t)?Ye:parseInt(t,e)}function Cv(t){let e=t.split(".");if(e[e.length-1]===""&&e.length>1&&e.pop(),e.length>4)return t;let a=[];for(let d of e){if(d==="")return t;let n=Ev(d);if(n===Ye)return t;a.push(n)}for(let d=0;d255)return Ye;if(a[a.length-1]>=Math.pow(256,5-a.length))return Ye;let r=a.pop(),i=0;for(let d of a)r+=d*Math.pow(256,3-i),++i;return r}function Nv(t){let e="",a=t;for(let r=1;r<=4;++r)e=String(a%256)+e,r!==4&&(e="."+e),a=Math.floor(a/256);return e}function Dv(t){let e=[0,0,0,0,0,0,0,0],a=0,r=null,i=0;if(t=fi.ucs2.decode(t),t[i]===58){if(t[i+1]!==58)return Ye;i+=2,++a,r=a}for(;i6))return Ye;let s=0;for(;t[i]!==void 0;){let c=null;if(s>0)if(t[i]===46&&s<4)++i;else return Ye;if(!Gi(t[i]))return Ye;for(;Gi(t[i]);){let v=parseInt(Os(t,i));if(c===null)c=v;else{if(c===0)return Ye;c=c*10+v}if(c>255)return Ye;++i}e[a]=e[a]*256+c,++s,(s===2||s===4)&&++a}if(s!==4)return Ye;break}else if(t[i]===58){if(++i,t[i]===void 0)return Ye}else if(t[i]!==void 0)return Ye;e[a]=d,++a}if(r!==null){let d=a-r;for(a=7;a!==0&&d>0;){let n=e[r+d-1];e[r+d-1]=e[a],e[a]=n,--a,--d}}else if(r===null&&a!==8)return Ye;return e}function Mv(t){let e="",r=Bv(t).idx,i=!1;for(let d=0;d<=7;++d)if(!(i&&t[d]===0)){if(i&&(i=!1),r===d){e+=d===0?"::":":",i=!0;continue}e+=t[d].toString(16),d!==7&&(e+=":")}return e}function bp(t,e){if(t[0]==="[")return t[t.length-1]!=="]"?Ye:Dv(t.substring(1,t.length-1));if(!e)return Tv(t);let a=_v(t),r=Bs.toASCII(a,!1,Bs.PROCESSING_OPTIONS.NONTRANSITIONAL,!1);if(r===null||yv(r))return Ye;let i=Cv(r);return typeof i=="number"||i===Ye?i:r}function Tv(t){if(xv(t))return Ye;let e="",a=fi.ucs2.decode(t);for(let r=0;ra&&(e=r,a=i),r=null,i=0):(r===null&&(r=d),++i);return i>a&&(e=r,a=i),{idx:e,len:a}}function yp(t){return typeof t=="number"?Nv(t):t instanceof Array?"["+Mv(t)+"]":t}function qv(t){return t.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,"")}function Ov(t){return t.replace(/\u0009|\u000A|\u000D/g,"")}function Ls(t){let e=t.path;e.length!==0&&(t.scheme==="file"&&e.length===1&&Uv(e[0])||e.pop())}function Qs(t){return t.username!==""||t.password!==""}function Pv(t){return t.host===null||t.host===""||t.cannotBeABaseURL||t.scheme==="file"}function Uv(t){return/^[A-Za-z]:$/.test(t)}function V1(t,e,a,r,i){if(this.pointer=0,this.input=t,this.base=e||null,this.encodingOverride=a||"utf-8",this.stateOverride=i,this.url=r,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};let n=qv(this.input);n!==this.input&&(this.parseError=!0),this.input=n}let d=Ov(this.input);for(d!==this.input&&(this.parseError=!0),this.input=d,this.state=i||"scheme start",this.buffer="",this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=fi.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){let n=this.input[this.pointer],s=isNaN(n)?void 0:String.fromCodePoint(n),c=this["parse "+this.state](n,s);if(c){if(c===Ye){this.failure=!0;break}}else break}}V1.prototype["parse scheme start"]=function(e,a){if(Yi(e))this.buffer+=a.toLowerCase(),this.state="scheme";else if(!this.stateOverride)this.state="no scheme",--this.pointer;else return this.parseError=!0,Ye;return!0};V1.prototype["parse scheme"]=function(e,a){if(mv(e)||e===43||e===45||e===46)this.buffer+=a.toLowerCase();else if(e===58){if(this.stateOverride&&(K1(this.url)&&!vp(this.buffer)||!K1(this.url)&&vp(this.buffer)||(Qs(this.url)||this.url.port!==null)&&this.buffer==="file"||this.url.scheme==="file"&&(this.url.host===""||this.url.host===null))||(this.url.scheme=this.buffer,this.buffer="",this.stateOverride))return!1;this.url.scheme==="file"?((this.input[this.pointer+1]!==47||this.input[this.pointer+2]!==47)&&(this.parseError=!0),this.state="file"):K1(this.url)&&this.base!==null&&this.base.scheme===this.url.scheme?this.state="special relative or authority":K1(this.url)?this.state="special authority slashes":this.input[this.pointer+1]===47?(this.state="path or authority",++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(""),this.state="cannot-be-a-base-URL path")}else if(!this.stateOverride)this.buffer="",this.state="no scheme",this.pointer=-1;else return this.parseError=!0,Ye;return!0};V1.prototype["parse no scheme"]=function(e){return this.base===null||this.base.cannotBeABaseURL&&e!==35?Ye:(this.base.cannotBeABaseURL&&e===35?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.url.cannotBeABaseURL=!0,this.state="fragment"):this.base.scheme==="file"?(this.state="file",--this.pointer):(this.state="relative",--this.pointer),!0)};V1.prototype["parse special relative or authority"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="relative",--this.pointer),!0};V1.prototype["parse path or authority"]=function(e){return e===47?this.state="authority":(this.state="path",--this.pointer),!0};V1.prototype["parse relative"]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===47?this.state="relative slash":e===63?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):K1(this.url)&&e===92?(this.parseError=!0,this.state="relative slash"):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state="path",--this.pointer),!0};V1.prototype["parse relative slash"]=function(e){return K1(this.url)&&(e===47||e===92)?(e===92&&(this.parseError=!0),this.state="special authority ignore slashes"):e===47?this.state="authority":(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state="path",--this.pointer),!0};V1.prototype["parse special authority slashes"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="special authority ignore slashes",--this.pointer),!0};V1.prototype["parse special authority ignore slashes"]=function(e){return e!==47&&e!==92?(this.state="authority",--this.pointer):this.parseError=!0,!0};V1.prototype["parse authority"]=function(e,a){if(e===64){this.parseError=!0,this.atFlag&&(this.buffer="%40"+this.buffer),this.atFlag=!0;let r=qs(this.buffer);for(let i=0;iMath.pow(2,16)-1)return this.parseError=!0,Ye;this.url.port=r===wv(this.url.scheme)?null:r,this.buffer=""}if(this.stateOverride)return!1;this.state="path start",--this.pointer}else return this.parseError=!0,Ye;return!0};var Vv=new Set([47,92,63,35]);V1.prototype["parse file"]=function(e){return this.url.scheme="file",e===47||e===92?(e===92&&(this.parseError=!0),this.state="file slash"):this.base!==null&&this.base.scheme==="file"?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===63?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):(this.input.length-this.pointer-1===0||!bv(e,this.input[this.pointer+1])||this.input.length-this.pointer-1>=2&&!Vv.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),Ls(this.url)):this.parseError=!0,this.state="path",--this.pointer):(this.state="path",--this.pointer),!0};V1.prototype["parse file slash"]=function(e){return e===47||e===92?(e===92&&(this.parseError=!0),this.state="file host"):(this.base!==null&&this.base.scheme==="file"&&(gv(this.base.path[0])?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state="path",--this.pointer),!0};V1.prototype["parse file host"]=function(e,a){if(isNaN(e)||e===47||e===92||e===63||e===35)if(--this.pointer,!this.stateOverride&&Vs(this.buffer))this.parseError=!0,this.state="path";else if(this.buffer===""){if(this.url.host="",this.stateOverride)return!1;this.state="path start"}else{let r=bp(this.buffer,K1(this.url));if(r===Ye)return Ye;if(r==="localhost"&&(r=""),this.url.host=r,this.stateOverride)return!1;this.buffer="",this.state="path start"}else this.buffer+=a;return!0};V1.prototype["parse path start"]=function(e){return K1(this.url)?(e===92&&(this.parseError=!0),this.state="path",e!==47&&e!==92&&--this.pointer):!this.stateOverride&&e===63?(this.url.query="",this.state="query"):!this.stateOverride&&e===35?(this.url.fragment="",this.state="fragment"):e!==void 0&&(this.state="path",e!==47&&--this.pointer),!0};V1.prototype["parse path"]=function(e){if(isNaN(e)||e===47||K1(this.url)&&e===92||!this.stateOverride&&(e===63||e===35)){if(K1(this.url)&&e===92&&(this.parseError=!0),vv(this.buffer)?(Ls(this.url),e!==47&&!(K1(this.url)&&e===92)&&this.url.path.push("")):Ps(this.buffer)&&e!==47&&!(K1(this.url)&&e===92)?this.url.path.push(""):Ps(this.buffer)||(this.url.scheme==="file"&&this.url.path.length===0&&Vs(this.buffer)&&(this.url.host!==""&&this.url.host!==null&&(this.parseError=!0,this.url.host=""),this.buffer=this.buffer[0]+":"),this.url.path.push(this.buffer)),this.buffer="",this.url.scheme==="file"&&(e===void 0||e===63||e===35))for(;this.url.path.length>1&&this.url.path[0]==="";)this.parseError=!0,this.url.path.shift();e===63&&(this.url.query="",this.state="query"),e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!zt(this.input[this.pointer+1])||!zt(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=Pr(e,Fs);return!0};V1.prototype["parse cannot-be-a-base-URL path"]=function(e){return e===63?(this.url.query="",this.state="query"):e===35?(this.url.fragment="",this.state="fragment"):(!isNaN(e)&&e!==37&&(this.parseError=!0),e===37&&(!zt(this.input[this.pointer+1])||!zt(this.input[this.pointer+2]))&&(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+Pr(e,ud))),!0};V1.prototype["parse query"]=function(e,a){if(isNaN(e)||!this.stateOverride&&e===35){(!K1(this.url)||this.url.scheme==="ws"||this.url.scheme==="wss")&&(this.encodingOverride="utf-8");let r=new C(this.buffer);for(let i=0;i126||r[i]===34||r[i]===35||r[i]===60||r[i]===62?this.url.query+=Rs(r[i]):this.url.query+=String.fromCodePoint(r[i]);this.buffer="",e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!zt(this.input[this.pointer+1])||!zt(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=a;return!0};V1.prototype["parse fragment"]=function(e){return isNaN(e)||(e===0?this.parseError=!0:(e===37&&(!zt(this.input[this.pointer+1])||!zt(this.input[this.pointer+2]))&&(this.parseError=!0),this.url.fragment+=Pr(e,ud))),!0};function Rv(t,e){let a=t.scheme+":";if(t.host!==null?(a+="//",(t.username!==""||t.password!=="")&&(a+=t.username,t.password!==""&&(a+=":"+t.password),a+="@"),a+=yp(t.host),t.port!==null&&(a+=":"+t.port)):t.host===null&&t.scheme==="file"&&(a+="//"),t.cannotBeABaseURL)a+=t.path[0];else for(let r of t.path)a+="/"+r;return t.query!==null&&(a+="?"+t.query),!e&&t.fragment!==null&&(a+="#"+t.fragment),a}function Fv(t){let e=t.scheme+"://";return e+=yp(t.host),t.port!==null&&(e+=":"+t.port),e}It.exports.serializeURL=Rv;It.exports.serializeURLOrigin=function(t){switch(t.scheme){case"blob":try{return It.exports.serializeURLOrigin(It.exports.parseURL(t.path[0]))}catch{return"null"}case"ftp":case"gopher":case"http":case"https":case"ws":case"wss":return Fv({scheme:t.scheme,host:t.host,port:t.port});case"file":return"file://";default:return"null"}};It.exports.basicURLParse=function(t,e){e===void 0&&(e={});let a=new V1(t,e.baseURL,e.encodingOverride,e.url,e.stateOverride);return a.failure?"failure":a.url};It.exports.setTheUsername=function(t,e){t.username="";let a=fi.ucs2.decode(e);for(let r=0;r{"use strict";l();var R1=ua();ks.implementation=class{constructor(e){let a=e[0],r=e[1],i=null;if(r!==void 0&&(i=R1.basicURLParse(r),i==="failure"))throw new TypeError("Invalid base URL");let d=R1.basicURLParse(a,{baseURL:i});if(d==="failure")throw new TypeError("Invalid URL");this._url=d}get href(){return R1.serializeURL(this._url)}set href(e){let a=R1.basicURLParse(e);if(a==="failure")throw new TypeError("Invalid URL");this._url=a}get origin(){return R1.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+":"}set protocol(e){R1.basicURLParse(e+":",{url:this._url,stateOverride:"scheme start"})}get username(){return this._url.username}set username(e){R1.cannotHaveAUsernamePasswordPort(this._url)||R1.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){R1.cannotHaveAUsernamePasswordPort(this._url)||R1.setThePassword(this._url,e)}get host(){let e=this._url;return e.host===null?"":e.port===null?R1.serializeHost(e.host):R1.serializeHost(e.host)+":"+R1.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||R1.basicURLParse(e,{url:this._url,stateOverride:"host"})}get hostname(){return this._url.host===null?"":R1.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||R1.basicURLParse(e,{url:this._url,stateOverride:"hostname"})}get port(){return this._url.port===null?"":R1.serializeInteger(this._url.port)}set port(e){R1.cannotHaveAUsernamePasswordPort(this._url)||(e===""?this._url.port=null:R1.basicURLParse(e,{url:this._url,stateOverride:"port"}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:this._url.path.length===0?"":"/"+this._url.path.join("/")}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],R1.basicURLParse(e,{url:this._url,stateOverride:"path start"}))}get search(){return this._url.query===null||this._url.query===""?"":"?"+this._url.query}set search(e){let a=this._url;if(e===""){a.query=null;return}let r=e[0]==="?"?e.substring(1):e;a.query="",R1.basicURLParse(r,{url:a,stateOverride:"query"})}get hash(){return this._url.fragment===null||this._url.fragment===""?"":"#"+this._url.fragment}set hash(e){if(e===""){this._url.fragment=null;return}let a=e[0]==="#"?e.substring(1):e;this._url.fragment="",R1.basicURLParse(a,{url:this._url,stateOverride:"fragment"})}toJSON(){return this.href}}});var zs=T((uT,Wi)=>{"use strict";l();var Ot=_s(),Ks=Is(),Hs=js(),D1=Ks.implSymbol;function G1(t){if(!this||this[D1]||!(this instanceof G1))throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");if(arguments.length<1)throw new TypeError("Failed to construct 'URL': 1 argument required, but only "+arguments.length+" present.");let e=[];for(let a=0;a{"use strict";l();ca.URL=zs().interface;ca.serializeURL=ua().serializeURL;ca.serializeURLOrigin=ua().serializeURLOrigin;ca.basicURLParse=ua().basicURLParse;ca.setTheUsername=ua().setTheUsername;ca.setThePassword=ua().setThePassword;ca.serializeHost=ua().serializeHost;ca.serializeInteger=ua().serializeInteger;ca.parseURL=ua().parseURL});var d3=T((ma,i3)=>{"use strict";l();Object.defineProperty(ma,"__esModule",{value:!0});function ci(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var $t=ci(Ge("stream")),Js=ci(Ge("http")),hd=ci(Ge("url")),Xs=ci($s()),Lv=ci(Ge("https")),Ur=ci(Ge("zlib")),Qv=$t.Readable,Ba=Symbol("buffer"),xp=Symbol("type"),pr=class{constructor(){this[xp]="";let e=arguments[0],a=arguments[1],r=[],i=0;if(e){let n=e,s=Number(n.length);for(let c=0;c1&&arguments[1]!==void 0?arguments[1]:{},r=a.size;let i=r===void 0?0:r;var d=a.timeout;let n=d===void 0?0:d;t==null?t=null:Zs(t)?t=C.from(t.toString()):Zi(t)||C.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=C.from(t):ArrayBuffer.isView(t)?t=C.from(t.buffer,t.byteOffset,t.byteLength):t instanceof $t||(t=C.from(String(t)))),this[Oa]={body:t,disturbed:!1,error:null},this.size=i,this.timeout=n,t instanceof $t&&t.on("error",function(s){let c=s.name==="AbortError"?s:new tt(`Invalid response body while trying to fetch ${e.url}: ${s.message}`,"system",s);e[Oa].error=c})}Y1.prototype={get body(){return this[Oa].body},get bodyUsed(){return this[Oa].disturbed},arrayBuffer(){return li.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return li.call(this).then(function(e){return Object.assign(new pr([],{type:t.toLowerCase()}),{[Ba]:e})})},json(){var t=this;return li.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(a){return Y1.Promise.reject(new tt(`invalid json response body at ${t.url} reason: ${a.message}`,"invalid-json"))}})},text(){return li.call(this).then(function(t){return t.toString()})},buffer(){return li.call(this)},textConverted(){var t=this;return li.call(this).then(function(e){return kv(e,t.headers)})}};Object.defineProperties(Y1.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});Y1.mixIn=function(t){for(let e of Object.getOwnPropertyNames(Y1.prototype))if(!(e in t)){let a=Object.getOwnPropertyDescriptor(Y1.prototype,e);Object.defineProperty(t,e,a)}};function li(){var t=this;if(this[Oa].disturbed)return Y1.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[Oa].disturbed=!0,this[Oa].error)return Y1.Promise.reject(this[Oa].error);let e=this.body;if(e===null)return Y1.Promise.resolve(C.alloc(0));if(Zi(e)&&(e=e.stream()),C.isBuffer(e))return Y1.Promise.resolve(e);if(!(e instanceof $t))return Y1.Promise.resolve(C.alloc(0));let a=[],r=0,i=!1;return new Y1.Promise(function(d,n){let s;t.timeout&&(s=setTimeout(function(){i=!0,n(new tt(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(c){c.name==="AbortError"?(i=!0,n(c)):n(new tt(`Invalid response body while trying to fetch ${t.url}: ${c.message}`,"system",c))}),e.on("data",function(c){if(!(i||c===null)){if(t.size&&r+c.length>t.size){i=!0,n(new tt(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}r+=c.length,a.push(c)}}),e.on("end",function(){if(!i){clearTimeout(s);try{d(C.concat(a,r))}catch(c){n(new tt(`Could not create Buffer from response body for ${t.url}: ${c.message}`,"system",c))}}})})}function kv(t,e){if(typeof _p!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let a=e.get("content-type"),r="utf-8",i,d;return a&&(i=/charset=([^;]*)/i.exec(a)),d=t.slice(0,1024).toString(),!i&&d&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[Q1]=Object.create(null),e instanceof bt){let a=e.raw(),r=Object.keys(a);for(let i of r)for(let d of a[i])this.append(i,d);return}if(e!=null)if(typeof e=="object"){let a=e[Symbol.iterator];if(a!=null){if(typeof a!="function")throw new TypeError("Header pairs must be iterable");let r=[];for(let i of e){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");r.push(Array.from(i))}for(let i of r){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(let r of Object.keys(e)){let i=e[r];this.append(r,i)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,Ji(e);let a=ui(this[Q1],e);return a===void 0?null:this[Q1][a].join(", ")}forEach(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,r=Sp(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[Q1]).sort().map(e==="key"?function(r){return r.toLowerCase()}:e==="value"?function(r){return t[Q1][r].join(", ")}:function(r){return[r.toLowerCase(),t[Q1][r].join(", ")]})}var Ep=Symbol("internal");function wp(t,e){let a=Object.create(Np);return a[Ep]={target:t,kind:e,index:0},a}var Np=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==Np)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[Ep];let e=t.target,a=t.kind,r=t.index,i=Sp(e,a),d=i.length;return r>=d?{value:void 0,done:!0}:(this[Ep].index=r+1,{value:i[r],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(Np,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function Hv(t){let e=Object.assign({__proto__:null},t[Q1]),a=ui(t[Q1],"Host");return a!==void 0&&(e[a]=e[a][0]),e}function Kv(t){let e=new bt;for(let a of Object.keys(t))if(!r3.test(a))if(Array.isArray(t[a]))for(let r of t[a])Ip.test(r)||(e[Q1][a]===void 0?e[Q1][a]=[r]:e[Q1][a].push(r));else Ip.test(t[a])||(e[Q1][a]=[t[a]]);return e}var ir=Symbol("Response internals"),zv=Js.STATUS_CODES,St=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Y1.call(this,e,a);let r=a.status||200,i=new bt(a.headers);if(e!=null&&!i.has("Content-Type")){let d=t3(e);d&&i.append("Content-Type",d)}this[ir]={url:a.url,status:r,statusText:a.statusText||zv[r],headers:i,counter:a.counter}}get url(){return this[ir].url||""}get status(){return this[ir].status}get ok(){return this[ir].status>=200&&this[ir].status<300}get redirected(){return this[ir].counter>0}get statusText(){return this[ir].statusText}get headers(){return this[ir].headers}clone(){return new St(e3(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};Y1.mixIn(St.prototype);Object.defineProperties(St.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(St.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var qa=Symbol("Request internals"),$v=hd.URL||Xs.URL,Gv=hd.parse,Yv=hd.format;function Ap(t){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(t)&&(t=new $v(t).toString()),Gv(t)}var Wv="destroy"in $t.Readable.prototype;function cd(t){return typeof t=="object"&&typeof t[qa]=="object"}function Jv(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var ha=class{constructor(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r;cd(e)?r=Ap(e.url):(e&&e.href?r=Ap(e.href):r=Ap(`${e}`),e={});let i=a.method||e.method||"GET";if(i=i.toUpperCase(),(a.body!=null||cd(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let d=a.body!=null?a.body:cd(e)&&e.body!==null?e3(e):null;Y1.call(this,d,{timeout:a.timeout||e.timeout||0,size:a.size||e.size||0});let n=new bt(a.headers||e.headers||{});if(d!=null&&!n.has("Content-Type")){let c=t3(d);c&&n.append("Content-Type",c)}let s=cd(e)?e.signal:null;if("signal"in a&&(s=a.signal),s!=null&&!Jv(s))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[qa]={method:i,redirect:a.redirect||e.redirect||"follow",headers:n,parsedURL:r,signal:s},this.follow=a.follow!==void 0?a.follow:e.follow!==void 0?e.follow:20,this.compress=a.compress!==void 0?a.compress:e.compress!==void 0?e.compress:!0,this.counter=a.counter||e.counter||0,this.agent=a.agent||e.agent}get method(){return this[qa].method}get url(){return Yv(this[qa].parsedURL)}get headers(){return this[qa].headers}get redirect(){return this[qa].redirect}get signal(){return this[qa].signal}clone(){return new ha(this)}};Y1.mixIn(ha.prototype);Object.defineProperty(ha.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(ha.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function Xv(t){let e=t[qa].parsedURL,a=new bt(t[qa].headers);if(a.has("Accept")||a.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof $t.Readable&&!Wv)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let r=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(r="0"),t.body!=null){let d=a3(t);typeof d=="number"&&(r=String(d))}r&&a.set("Content-Length",r),a.has("User-Agent")||a.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!a.has("Accept-Encoding")&&a.set("Accept-Encoding","gzip,deflate");let i=t.agent;return typeof i=="function"&&(i=i(e)),!a.has("Connection")&&!i&&a.set("Connection","close"),Object.assign({},e,{method:t.method,headers:Hv(a),agent:i})}function Xi(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}Xi.prototype=Object.create(Error.prototype);Xi.prototype.constructor=Xi;Xi.prototype.name="AbortError";var Cp=hd.URL||Xs.URL,Ws=$t.PassThrough,Zv=function(e,a){let r=new Cp(a).hostname,i=new Cp(e).hostname;return r===i||r[r.length-i.length-1]==="."&&r.endsWith(i)};function dr(t,e){if(!dr.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Y1.Promise=dr.Promise,new dr.Promise(function(a,r){let i=new ha(t,e),d=Xv(i),n=(d.protocol==="https:"?Lv:Js).request,s=i.signal,c=null,v=function(){let L=new Xi("The user aborted a request.");r(L),i.body&&i.body instanceof $t.Readable&&i.body.destroy(L),!(!c||!c.body)&&c.body.emit("error",L)};if(s&&s.aborted){v();return}let I=function(){v(),R()},S=n(d),O;s&&s.addEventListener("abort",I);function R(){S.abort(),s&&s.removeEventListener("abort",I),clearTimeout(O)}i.timeout&&S.once("socket",function(V){O=setTimeout(function(){r(new tt(`network timeout at: ${i.url}`,"request-timeout")),R()},i.timeout)}),S.on("error",function(V){r(new tt(`request to ${i.url} failed, reason: ${V.message}`,"system",V)),R()}),S.on("response",function(V){clearTimeout(O);let L=Kv(V.headers);if(dr.isRedirect(V.statusCode)){let ye=L.get("Location"),Ie=null;try{Ie=ye===null?null:new Cp(ye,i.url).toString()}catch{if(i.redirect!=="manual"){r(new tt(`uri requested responds with an invalid redirect URL: ${ye}`,"invalid-redirect")),R();return}}switch(i.redirect){case"error":r(new tt(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),R();return;case"manual":if(Ie!==null)try{L.set("Location",Ie)}catch(Ne){r(Ne)}break;case"follow":if(Ie===null)break;if(i.counter>=i.follow){r(new tt(`maximum redirect reached at: ${i.url}`,"max-redirect")),R();return}let we={headers:new bt(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:i.body,signal:i.signal,timeout:i.timeout,size:i.size};if(!Zv(i.url,Ie))for(let Ne of["authorization","www-authenticate","cookie","cookie2"])we.headers.delete(Ne);if(V.statusCode!==303&&i.body&&a3(i)===null){r(new tt("Cannot follow redirect with body being a readable stream","unsupported-redirect")),R();return}(V.statusCode===303||(V.statusCode===301||V.statusCode===302)&&i.method==="POST")&&(we.method="GET",we.body=void 0,we.headers.delete("content-length")),a(dr(new ha(Ie,we))),R();return}}V.once("end",function(){s&&s.removeEventListener("abort",I)});let G=V.pipe(new Ws),J={url:i.url,status:V.statusCode,statusText:V.statusMessage,headers:L,size:i.size,timeout:i.timeout,counter:i.counter},fe=L.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||fe===null||V.statusCode===204||V.statusCode===304){c=new St(G,J),a(c);return}let oe={flush:Ur.Z_SYNC_FLUSH,finishFlush:Ur.Z_SYNC_FLUSH};if(fe=="gzip"||fe=="x-gzip"){G=G.pipe(Ur.createGunzip(oe)),c=new St(G,J),a(c);return}if(fe=="deflate"||fe=="x-deflate"){V.pipe(new Ws).once("data",function(Ie){(Ie[0]&15)===8?G=G.pipe(Ur.createInflate()):G=G.pipe(Ur.createInflateRaw()),c=new St(G,J),a(c)});return}if(fe=="br"&&typeof Ur.createBrotliDecompress=="function"){G=G.pipe(Ur.createBrotliDecompress()),c=new St(G,J),a(c);return}c=new St(G,J),a(c)}),jv(S,i)})}dr.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};dr.Promise=global.Promise;i3.exports=ma=dr;Object.defineProperty(ma,"__esModule",{value:!0});ma.default=ma;ma.Headers=bt;ma.Request=ha;ma.Response=St;ma.FetchError=tt});var Dp=T((Vr,p3)=>{l();var e0=d3(),eb=e0.default||e0,md=function(t,e){return/^\/\//.test(t)&&(t="https:"+t),eb.call(this,t,e)};md.ponyfill=!0;p3.exports=Vr=md;Vr.fetch=md;Vr.Headers=e0.Headers;Vr.Request=e0.Request;Vr.Response=e0.Response;Vr.default=md});var Bp=T((gT,f3)=>{l();var Tp=Object.defineProperty,tb=Object.getOwnPropertyDescriptor,ab=Object.getOwnPropertyNames,rb=Object.prototype.hasOwnProperty,ib=(t,e)=>{for(var a in e)Tp(t,a,{get:e[a],enumerable:!0})},db=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ab(e))!rb.call(t,i)&&i!==a&&Tp(t,i,{get:()=>e[i],enumerable:!(r=tb(e,i))||r.enumerable});return t},pb=t=>db(Tp({},"__esModule",{value:!0}),t),n3={};ib(n3,{Channel:()=>o3,LongPoll:()=>bd,Presence:()=>a0,Serializer:()=>r0,Socket:()=>ub});f3.exports=pb(n3);var i0=t=>typeof t=="function"?t:function(){return t},nb=typeof self<"u"?self:null,t0=typeof window<"u"?window:null,d0=nb||t0||d0,sb="2.0.0",va={connecting:0,open:1,closing:2,closed:3},ob=1e4,fb=1e3,Et={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},Pa={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Mp={longpoll:"longpoll",websocket:"websocket"},lb={complete:4},vd=class{constructor(t,e,a,r){this.channel=t,this.event=e,this.payload=a||function(){return{}},this.receivedResp=null,this.timeout=r,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:t,response:e,_ref:a}){this.recHooks.filter(r=>r.status===t).forEach(r=>r.callback(e))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},s3=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},o3=class{constructor(t,e,a){this.state=Et.closed,this.topic=t,this.params=i0(e||{}),this.socket=a,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new vd(this,Pa.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new s3(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Et.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(r=>r.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=Et.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=Et.closed,this.socket.remove(this)}),this.onError(r=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,r),this.isJoining()&&this.joinPush.reset(),this.state=Et.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new vd(this,Pa.leave,i0({}),this.timeout).send(),this.state=Et.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(Pa.reply,(r,i)=>{this.trigger(this.replyEventName(i),r)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(t){this.on(Pa.close,t)}onError(t){return this.on(Pa.error,e=>t(e))}on(t,e){let a=this.bindingRef++;return this.bindings.push({event:t,ref:a,callback:e}),a}off(t,e){this.bindings=this.bindings.filter(a=>!(a.event===t&&(typeof e>"u"||e===a.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,a=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let r=new vd(this,t,function(){return e},a);return this.canPush()?r.send():(r.startTimeout(),this.pushBuffer.push(r)),r}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Et.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(Pa.close,"leave")},a=new vd(this,Pa.leave,i0({}),t);return a.receive("ok",()=>e()).receive("timeout",()=>e()),a.send(),this.canPush()||a.trigger("ok",{}),a}onMessage(t,e,a){return e}isMember(t,e,a,r){return this.topic!==t?!1:r&&r!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:a,joinRef:r}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Et.joining,this.joinPush.resend(t))}trigger(t,e,a,r){let i=this.onMessage(t,e,a,r);if(e&&!i)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let d=this.bindings.filter(n=>n.event===t);for(let n=0;n{let s=this.parseJSON(t.responseText);n&&n(s)},d&&(t.ontimeout=d),t.onprogress=()=>{},t.send(r),t}static xhrRequest(t,e,a,r,i,d,n,s){return t.open(e,a,!0),t.timeout=d,t.setRequestHeader("Content-Type",r),t.onerror=()=>s&&s(null),t.onreadystatechange=()=>{if(t.readyState===lb.complete&&s){let c=this.parseJSON(t.responseText);s(c)}},n&&(t.ontimeout=n),t.send(i),t}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let a=[];for(var r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let i=e?`${e}[${r}]`:r,d=t[r];typeof d=="object"?a.push(this.serialize(d,i)):a.push(encodeURIComponent(i)+"="+encodeURIComponent(d))}return a.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let a=t.match(/\?/)?"&":"?";return`${t}${a}${this.serialize(e)}`}},bd=class{constructor(t){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=va.connecting,this.poll()}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Mp.websocket),"$1/"+Mp.longpoll)}endpointURL(){return gd.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(t,e,a){this.close(t,e,a),this.readyState=va.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===va.open||this.readyState===va.connecting}poll(){this.ajax("GET",null,()=>this.ontimeout(),t=>{if(t){var{status:e,token:a,messages:r}=t;this.token=a}else e=0;switch(e){case 200:r.forEach(i=>{setTimeout(()=>this.onmessage({data:i}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=va.open,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${e}`)}})}send(t){this.ajax("POST",t,()=>this.onerror("timeout"),e=>{(!e||e.status!==200)&&(this.onerror(e&&e.status),this.closeAndRetry(1011,"internal server error",!1))})}close(t,e,a){for(let i of this.reqs)i.abort();this.readyState=va.closed;let r=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:t,reason:e,wasClean:a});typeof CloseEvent<"u"?this.onclose(new CloseEvent("close",r)):this.onclose(r)}ajax(t,e,a,r){let i,d=()=>{this.reqs.delete(i),a()};i=gd.request(t,this.endpointURL(),"application/json",e,this.timeout,d,n=>{this.reqs.delete(i),this.isActive()&&r(n)}),this.reqs.add(i)}},a0=class{constructor(t,e={}){let a=e.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(a.state,r=>{let{onJoin:i,onLeave:d,onSync:n}=this.caller;this.joinRef=this.channel.joinRef(),this.state=a0.syncState(this.state,r,i,d),this.pendingDiffs.forEach(s=>{this.state=a0.syncDiff(this.state,s,i,d)}),this.pendingDiffs=[],n()}),this.channel.on(a.diff,r=>{let{onJoin:i,onLeave:d,onSync:n}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=a0.syncDiff(this.state,r,i,d),n())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return a0.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,e,a,r){let i=this.clone(t),d={},n={};return this.map(i,(s,c)=>{e[s]||(n[s]=c)}),this.map(e,(s,c)=>{let v=i[s];if(v){let I=c.metas.map(V=>V.phx_ref),S=v.metas.map(V=>V.phx_ref),O=c.metas.filter(V=>S.indexOf(V.phx_ref)<0),R=v.metas.filter(V=>I.indexOf(V.phx_ref)<0);O.length>0&&(d[s]=c,d[s].metas=O),R.length>0&&(n[s]=this.clone(v),n[s].metas=R)}else d[s]=c}),this.syncDiff(i,{joins:d,leaves:n},a,r)}static syncDiff(t,e,a,r){let{joins:i,leaves:d}=this.clone(e);return a||(a=function(){}),r||(r=function(){}),this.map(i,(n,s)=>{let c=t[n];if(t[n]=this.clone(s),c){let v=t[n].metas.map(S=>S.phx_ref),I=c.metas.filter(S=>v.indexOf(S.phx_ref)<0);t[n].metas.unshift(...I)}a(n,c,s)}),this.map(d,(n,s)=>{let c=t[n];if(!c)return;let v=s.metas.map(I=>I.phx_ref);c.metas=c.metas.filter(I=>v.indexOf(I.phx_ref)<0),r(n,c,s),c.metas.length===0&&delete t[n]}),t}static list(t,e){return e||(e=function(a,r){return r}),this.map(t,(a,r)=>e(a,r))}static map(t,e){return Object.getOwnPropertyNames(t).map(a=>e(a,t[a]))}static clone(t){return JSON.parse(JSON.stringify(t))}},r0={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let a=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(a))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[a,r,i,d,n]=JSON.parse(t);return e({join_ref:a,ref:r,topic:i,event:d,payload:n})}},binaryEncode(t){let{join_ref:e,ref:a,event:r,topic:i,payload:d}=t,n=this.META_LENGTH+e.length+a.length+i.length+r.length,s=new ArrayBuffer(this.HEADER_LENGTH+n),c=new DataView(s),v=0;c.setUint8(v++,this.KINDS.push),c.setUint8(v++,e.length),c.setUint8(v++,a.length),c.setUint8(v++,i.length),c.setUint8(v++,r.length),Array.from(e,S=>c.setUint8(v++,S.charCodeAt(0))),Array.from(a,S=>c.setUint8(v++,S.charCodeAt(0))),Array.from(i,S=>c.setUint8(v++,S.charCodeAt(0))),Array.from(r,S=>c.setUint8(v++,S.charCodeAt(0)));var I=new Uint8Array(s.byteLength+d.byteLength);return I.set(new Uint8Array(s),0),I.set(new Uint8Array(d),s.byteLength),I.buffer},binaryDecode(t){let e=new DataView(t),a=e.getUint8(0),r=new TextDecoder;switch(a){case this.KINDS.push:return this.decodePush(t,e,r);case this.KINDS.reply:return this.decodeReply(t,e,r);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,r)}},decodePush(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=e.getUint8(3),n=this.HEADER_LENGTH+this.META_LENGTH-1,s=a.decode(t.slice(n,n+r));n=n+r;let c=a.decode(t.slice(n,n+i));n=n+i;let v=a.decode(t.slice(n,n+d));n=n+d;let I=t.slice(n,t.byteLength);return{join_ref:s,ref:null,topic:c,event:v,payload:I}},decodeReply(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=e.getUint8(3),n=e.getUint8(4),s=this.HEADER_LENGTH+this.META_LENGTH,c=a.decode(t.slice(s,s+r));s=s+r;let v=a.decode(t.slice(s,s+i));s=s+i;let I=a.decode(t.slice(s,s+d));s=s+d;let S=a.decode(t.slice(s,s+n));s=s+n;let O=t.slice(s,t.byteLength),R={status:S,response:O};return{join_ref:c,ref:v,topic:I,event:Pa.reply,payload:R}},decodeBroadcast(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=this.HEADER_LENGTH+2,n=a.decode(t.slice(d,d+r));d=d+r;let s=a.decode(t.slice(d,d+i));d=d+i;let c=t.slice(d,t.byteLength);return{join_ref:null,ref:null,topic:n,event:s,payload:c}}},ub=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=e.timeout||ob,this.transport=e.transport||d0.WebSocket||bd,this.establishedConnections=0,this.defaultEncoder=r0.encode.bind(r0),this.defaultDecoder=r0.decode.bind(r0),this.closeWasClean=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.transport!==bd?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let a=null;t0&&t0.addEventListener&&(t0.addEventListener("pagehide",r=>{this.conn&&(this.disconnect(),a=this.connectClock)}),t0.addEventListener("pageshow",r=>{a===this.connectClock&&(a=null,this.connect())})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.rejoinAfterMs=r=>e.rejoinAfterMs?e.rejoinAfterMs(r):[1e3,2e3,5e3][r-1]||1e4,this.reconnectAfterMs=r=>e.reconnectAfterMs?e.reconnectAfterMs(r):[10,50,100,150,200,250,500,1e3,2e3][r-1]||5e3,this.logger=e.logger||null,this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=i0(e.params||{}),this.endPoint=`${t}/${Mp.websocket}`,this.vsn=e.vsn||sb,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new s3(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}getLongPollTransport(){return bd}replaceTransport(t){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.sendBuffer=[],this.conn&&(this.conn.close(),this.conn=null),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=gd.appendParams(gd.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,a){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(t,e,a)}connect(t){t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=i0(t)),!this.conn&&(this.connectClock++,this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(t,e,a){this.logger(t,e,a)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}ping(t){if(!this.isConnected())return!1;let e=this.makeRef(),a=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:e});let r=this.onMessage(i=>{i.ref===e&&(this.off([r]),t(Date.now()-a))});return!0}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,t])=>t())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.triggerChanError(),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),fb,"heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,a){if(!this.conn)return t&&t();this.waitForBufferDone(()=>{this.conn&&(e?this.conn.close(e,a||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e=1){if(e===5||!this.conn||!this.conn.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(t,e+1)},150*e)}waitForSocketClosed(t,e=1){if(e===5||!this.conn||this.conn.readyState===va.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(t,e+1)},150*e)}onConnClose(t){let e=t&&t.code;this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(),this.clearHeartbeats(),!this.closeWasClean&&e!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,a])=>a(t))}onConnError(t){this.hasLogger()&&this.log("transport",t);let e=this.transport,a=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,r])=>{r(t,e,a)}),(e===this.transport||a>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(Pa.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case va.connecting:return"connecting";case va.open:return"open";case va.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e.joinRef()!==t.joinRef())}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([a])=>t.indexOf(a)===-1)}channel(t,e={}){let a=new o3(t,e,this);return this.channels.push(a),a}push(t){if(this.hasLogger()){let{topic:e,event:a,payload:r,ref:i,join_ref:d}=t;this.log("push",`${e} ${a} (${d}, ${i})`,r)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:a,event:r,payload:i,ref:d,join_ref:n}=e;d&&d===this.pendingHeartbeatRef&&(this.clearHeartbeats(),this.pendingHeartbeatRef=null,this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${i.status||""} ${a} ${r} ${d&&"("+d+")"||""}`,i);for(let s=0;sa.topic===t&&(a.isJoined()||a.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}}});var nr=T((CT,l3)=>{"use strict";l();l3.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:C.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var p0=T((DT,yd)=>{"use strict";l();var{EMPTY_BUFFER:cb}=nr();function hb(t,e){if(t.length===0)return cb;if(t.length===1)return t[0];let a=C.allocUnsafe(e),r=0;for(let i=0;i{"use strict";l();var h3=Symbol("kDone"),Op=Symbol("kRun"),Pp=class{constructor(e){this[h3]=()=>{this.pending--,this[Op]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Op]()}[Op](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[h3])}}};m3.exports=Pp});var o0=T((qT,x3)=>{"use strict";l();var n0=Ge("zlib"),b3=p0(),vb=v3(),{kStatusCode:g3}=nr(),bb=C.from([0,0,255,255]),Ad=Symbol("permessage-deflate"),Ua=Symbol("total-length"),s0=Symbol("callback"),sr=Symbol("buffers"),wd=Symbol("error"),xd,Up=class{constructor(e,a,r){if(this._maxPayload=r|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!a,this._deflate=null,this._inflate=null,this.params=null,!xd){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;xd=new vb(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[s0];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let a=this._options,r=e.find(i=>!(a.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(a.serverMaxWindowBits===!1||typeof a.serverMaxWindowBits=="number"&&a.serverMaxWindowBits>i.server_max_window_bits)||typeof a.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return a.serverNoContextTakeover&&(r.server_no_context_takeover=!0),a.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof a.serverMaxWindowBits=="number"&&(r.server_max_window_bits=a.serverMaxWindowBits),typeof a.clientMaxWindowBits=="number"?r.client_max_window_bits=a.clientMaxWindowBits:(r.client_max_window_bits===!0||a.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let a=e[0];if(this._options.clientNoContextTakeover===!1&&a.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!a.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(a.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&a.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return a}normalizeParams(e){return e.forEach(a=>{Object.keys(a).forEach(r=>{let i=a[r];if(i.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(i=i[0],r==="client_max_window_bits"){if(i!==!0){let d=+i;if(!Number.isInteger(d)||d<8||d>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=d}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else if(r==="server_max_window_bits"){let d=+i;if(!Number.isInteger(d)||d<8||d>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=d}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else throw new Error(`Unknown parameter "${r}"`);a[r]=i})}),e}decompress(e,a,r){xd.add(i=>{this._decompress(e,a,(d,n)=>{i(),r(d,n)})})}compress(e,a,r){xd.add(i=>{this._compress(e,a,(d,n)=>{i(),r(d,n)})})}_decompress(e,a,r){let i=this._isServer?"client":"server";if(!this._inflate){let d=`${i}_max_window_bits`,n=typeof this.params[d]!="number"?n0.Z_DEFAULT_WINDOWBITS:this.params[d];this._inflate=n0.createInflateRaw({...this._options.zlibInflateOptions,windowBits:n}),this._inflate[Ad]=this,this._inflate[Ua]=0,this._inflate[sr]=[],this._inflate.on("error",yb),this._inflate.on("data",y3)}this._inflate[s0]=r,this._inflate.write(e),a&&this._inflate.write(bb),this._inflate.flush(()=>{let d=this._inflate[wd];if(d){this._inflate.close(),this._inflate=null,r(d);return}let n=b3.concat(this._inflate[sr],this._inflate[Ua]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Ua]=0,this._inflate[sr]=[],a&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),r(null,n)})}_compress(e,a,r){let i=this._isServer?"server":"client";if(!this._deflate){let d=`${i}_max_window_bits`,n=typeof this.params[d]!="number"?n0.Z_DEFAULT_WINDOWBITS:this.params[d];this._deflate=n0.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:n}),this._deflate[Ua]=0,this._deflate[sr]=[],this._deflate.on("data",gb)}this._deflate[s0]=r,this._deflate.write(e),this._deflate.flush(n0.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let d=b3.concat(this._deflate[sr],this._deflate[Ua]);a&&(d=d.slice(0,d.length-4)),this._deflate[s0]=null,this._deflate[Ua]=0,this._deflate[sr]=[],a&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),r(null,d)})}};x3.exports=Up;function gb(t){this[sr].push(t),this[Ua]+=t.length}function y3(t){if(this[Ua]+=t.length,this[Ad]._maxPayload<1||this[Ua]<=this[Ad]._maxPayload){this[sr].push(t);return}this[wd]=new RangeError("Max payload size exceeded"),this[wd].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[wd][g3]=1009,this.removeListener("data",y3),this.reset()}function yb(t){this[Ad]._inflate=null,t[g3]=1007,this[s0](t)}});var f0=T((PT,Vp)=>{"use strict";l();var xb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function wb(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function w3(t){let e=t.length,a=0;for(;a=e||(t[a+1]&192)!==128||(t[a+2]&192)!==128||t[a]===224&&(t[a+1]&224)===128||t[a]===237&&(t[a+1]&224)===160)return!1;a+=3}else if((t[a]&248)===240){if(a+3>=e||(t[a+1]&192)!==128||(t[a+2]&192)!==128||(t[a+3]&192)!==128||t[a]===240&&(t[a+1]&240)===128||t[a]===244&&t[a+1]>143||t[a]>244)return!1;a+=4}else return!1;return!0}Vp.exports={isValidStatusCode:wb,isValidUTF8:w3,tokenChars:xb};if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=Ge("utf-8-validate");Vp.exports.isValidUTF8=function(e){return e.length<150?w3(e):t(e)}}catch{}});var Qp=T((VT,N3)=>{"use strict";l();var{Writable:Ab}=Ge("stream"),A3=o0(),{BINARY_TYPES:_b,EMPTY_BUFFER:_3,kStatusCode:Ib,kWebSocket:Sb}=nr(),{concat:Rp,toArrayBuffer:Eb,unmask:Cb}=p0(),{isValidStatusCode:Nb,isValidUTF8:I3}=f0(),l0=0,S3=1,E3=2,C3=3,Fp=4,Db=5,Lp=class extends Ab{constructor(e={}){super(),this._binaryType=e.binaryType||_b[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Sb]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=l0,this._loop=!1}_write(e,a,r){if(this._opcode===8&&this._state==l0)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=r.length?a.set(this._buffers.shift(),i):(a.set(new Uint8Array(r.buffer,r.byteOffset,e),i),this._buffers[0]=r.slice(e)),e-=r.length}while(e>0);return a}startLoop(e){let a;this._loop=!0;do switch(this._state){case l0:a=this.getInfo();break;case S3:a=this.getPayloadLength16();break;case E3:a=this.getPayloadLength64();break;case C3:this.getMask();break;case Fp:a=this.getData(e);break;default:this._loop=!1;return}while(this._loop);e(a)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let e=this.consume(2);if((e[0]&48)!==0)return this._loop=!1,z1(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");let a=(e[0]&64)===64;if(a&&!this._extensions[A3.extensionName])return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=(e[0]&128)===128,this._opcode=e[0]&15,this._payloadLength=e[1]&127,this._opcode===0){if(a)return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,z1(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,z1(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=a}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,z1(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(a)return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125)return this._loop=!1,z1(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}else return this._loop=!1,z1(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(e[1]&128)===128,this._isServer){if(!this._masked)return this._loop=!1,z1(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,z1(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(this._payloadLength===126)this._state=S3;else if(this._payloadLength===127)this._state=E3;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let e=this.consume(8),a=e.readUInt32BE(0);return a>Math.pow(2,53-32)-1?(this._loop=!1,z1(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=a*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,z1(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=C3:this._state=Fp}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Fp}getData(e){let a=_3;if(this._payloadLength){if(this._bufferedBytes7)return this.controlMessage(a);if(this._compressed){this._state=Db,this.decompress(a,e);return}return a.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(a)),this.dataMessage()}decompress(e,a){this._extensions[A3.extensionName].decompress(e,this._fin,(i,d)=>{if(i)return a(i);if(d.length){if(this._messageLength+=d.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return a(z1(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(d)}let n=this.dataMessage();if(n)return a(n);this.startLoop(a)})}dataMessage(){if(this._fin){let e=this._messageLength,a=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;this._binaryType==="nodebuffer"?r=Rp(a,e):this._binaryType==="arraybuffer"?r=Eb(Rp(a,e)):r=a,this.emit("message",r,!0)}else{let r=Rp(a,e);if(!this._skipUTF8Validation&&!I3(r))return this._loop=!1,z1(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",r,!1)}}this._state=l0}controlMessage(e){if(this._opcode===8)if(this._loop=!1,e.length===0)this.emit("conclude",1005,_3),this.end();else{if(e.length===1)return z1(RangeError,"invalid payload length 1",!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");{let a=e.readUInt16BE(0);if(!Nb(a))return z1(RangeError,`invalid status code ${a}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");let r=e.slice(2);if(!this._skipUTF8Validation&&!I3(r))return z1(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",a,r),this.end()}}else this._opcode===9?this.emit("ping",e):this.emit("pong",e);this._state=l0}};N3.exports=Lp;function z1(t,e,a,r,i){let d=new t(a?`Invalid WebSocket frame: ${e}`:e);return Error.captureStackTrace(d,z1),d.code=i,d[Ib]=r,d}});var kp=T((QT,T3)=>{"use strict";l();var FT=Ge("net"),LT=Ge("tls"),{randomFillSync:Mb}=Ge("crypto"),D3=o0(),{EMPTY_BUFFER:Tb}=nr(),{isValidStatusCode:Bb}=f0(),{mask:M3,toBuffer:hi}=p0(),Gt=Symbol("kByteLength"),qb=C.alloc(4),ba=class{constructor(e,a,r){this._extensions=a||{},r&&(this._generateMask=r,this._maskBuffer=C.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,a){let r,i=!1,d=2,n=!1;a.mask&&(r=a.maskBuffer||qb,a.generateMask?a.generateMask(r):Mb(r,0,4),n=(r[0]|r[1]|r[2]|r[3])===0,d=6);let s;typeof e=="string"?(!a.mask||n)&&a[Gt]!==void 0?s=a[Gt]:(e=C.from(e),s=e.length):(s=e.length,i=a.mask&&a.readOnly&&!n);let c=s;s>=65536?(d+=8,c=127):s>125&&(d+=2,c=126);let v=C.allocUnsafe(i?s+d:d);return v[0]=a.fin?a.opcode|128:a.opcode,a.rsv1&&(v[0]|=64),v[1]=c,c===126?v.writeUInt16BE(s,2):c===127&&(v[2]=v[3]=0,v.writeUIntBE(s,4,6)),a.mask?(v[1]|=128,v[d-4]=r[0],v[d-3]=r[1],v[d-2]=r[2],v[d-1]=r[3],n?[v,e]:i?(M3(e,r,v,d,s),[v]):(M3(e,r,e,0,s),[v,e])):[v,e]}close(e,a,r,i){let d;if(e===void 0)d=Tb;else{if(typeof e!="number"||!Bb(e))throw new TypeError("First argument must be a valid error code number");if(a===void 0||!a.length)d=C.allocUnsafe(2),d.writeUInt16BE(e,0);else{let s=C.byteLength(a);if(s>123)throw new RangeError("The message must not be greater than 123 bytes");d=C.allocUnsafe(2+s),d.writeUInt16BE(e,0),typeof a=="string"?d.write(a,2):d.set(a,2)}}let n={[Gt]:d.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,d,!1,n,i]):this.sendFrame(ba.frame(d,n),i)}ping(e,a,r){let i,d;if(typeof e=="string"?(i=C.byteLength(e),d=!1):(e=hi(e),i=e.length,d=hi.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[Gt]:i,fin:!0,generateMask:this._generateMask,mask:a,maskBuffer:this._maskBuffer,opcode:9,readOnly:d,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(ba.frame(e,n),r)}pong(e,a,r){let i,d;if(typeof e=="string"?(i=C.byteLength(e),d=!1):(e=hi(e),i=e.length,d=hi.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[Gt]:i,fin:!0,generateMask:this._generateMask,mask:a,maskBuffer:this._maskBuffer,opcode:10,readOnly:d,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(ba.frame(e,n),r)}send(e,a,r){let i=this._extensions[D3.extensionName],d=a.binary?2:1,n=a.compress,s,c;if(typeof e=="string"?(s=C.byteLength(e),c=!1):(e=hi(e),s=e.length,c=hi.readOnly),this._firstFragment?(this._firstFragment=!1,n&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(n=s>=i._threshold),this._compress=n):(n=!1,d=0),a.fin&&(this._firstFragment=!0),i){let v={[Gt]:s,fin:a.fin,generateMask:this._generateMask,mask:a.mask,maskBuffer:this._maskBuffer,opcode:d,readOnly:c,rsv1:n};this._deflating?this.enqueue([this.dispatch,e,this._compress,v,r]):this.dispatch(e,this._compress,v,r)}else this.sendFrame(ba.frame(e,{[Gt]:s,fin:a.fin,generateMask:this._generateMask,mask:a.mask,maskBuffer:this._maskBuffer,opcode:d,readOnly:c,rsv1:!1}),r)}dispatch(e,a,r,i){if(!a){this.sendFrame(ba.frame(e,r),i);return}let d=this._extensions[D3.extensionName];this._bufferedBytes+=r[Gt],this._deflating=!0,d.compress(e,r.fin,(n,s)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(c);for(let v=0;v{"use strict";l();var{kForOnEventAttribute:u0,kListener:jp}=nr(),B3=Symbol("kCode"),q3=Symbol("kData"),O3=Symbol("kError"),P3=Symbol("kMessage"),U3=Symbol("kReason"),mi=Symbol("kTarget"),V3=Symbol("kType"),R3=Symbol("kWasClean"),Va=class{constructor(e){this[mi]=null,this[V3]=e}get target(){return this[mi]}get type(){return this[V3]}};Object.defineProperty(Va.prototype,"target",{enumerable:!0});Object.defineProperty(Va.prototype,"type",{enumerable:!0});var Rr=class extends Va{constructor(e,a={}){super(e),this[B3]=a.code===void 0?0:a.code,this[U3]=a.reason===void 0?"":a.reason,this[R3]=a.wasClean===void 0?!1:a.wasClean}get code(){return this[B3]}get reason(){return this[U3]}get wasClean(){return this[R3]}};Object.defineProperty(Rr.prototype,"code",{enumerable:!0});Object.defineProperty(Rr.prototype,"reason",{enumerable:!0});Object.defineProperty(Rr.prototype,"wasClean",{enumerable:!0});var vi=class extends Va{constructor(e,a={}){super(e),this[O3]=a.error===void 0?null:a.error,this[P3]=a.message===void 0?"":a.message}get error(){return this[O3]}get message(){return this[P3]}};Object.defineProperty(vi.prototype,"error",{enumerable:!0});Object.defineProperty(vi.prototype,"message",{enumerable:!0});var c0=class extends Va{constructor(e,a={}){super(e),this[q3]=a.data===void 0?null:a.data}get data(){return this[q3]}};Object.defineProperty(c0.prototype,"data",{enumerable:!0});var Ob={addEventListener(t,e,a={}){for(let i of this.listeners(t))if(!a[u0]&&i[jp]===e&&!i[u0])return;let r;if(t==="message")r=function(d,n){let s=new c0("message",{data:n?d:d.toString()});s[mi]=this,_d(e,this,s)};else if(t==="close")r=function(d,n){let s=new Rr("close",{code:d,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});s[mi]=this,_d(e,this,s)};else if(t==="error")r=function(d){let n=new vi("error",{error:d,message:d.message});n[mi]=this,_d(e,this,n)};else if(t==="open")r=function(){let d=new Va("open");d[mi]=this,_d(e,this,d)};else return;r[u0]=!!a[u0],r[jp]=e,a.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let a of this.listeners(t))if(a[jp]===e&&!a[u0]){this.removeListener(t,a);break}}};F3.exports={CloseEvent:Rr,ErrorEvent:vi,Event:Va,EventTarget:Ob,MessageEvent:c0};function _d(t,e,a){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,a):t.call(e,a)}});var Hp=T((KT,Q3)=>{"use strict";l();var{tokenChars:h0}=f0();function ga(t,e,a){t[e]===void 0?t[e]=[a]:t[e].push(a)}function Pb(t){let e=Object.create(null),a=Object.create(null),r=!1,i=!1,d=!1,n,s,c=-1,v=-1,I=-1,S=0;for(;S{let a=t[e];return Array.isArray(a)||(a=[a]),a.map(r=>[e].concat(Object.keys(r).map(i=>{let d=r[i];return Array.isArray(d)||(d=[d]),d.map(n=>n===!0?i:`${i}=${n}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Q3.exports={format:Ub,parse:Pb}});var Yp=T((GT,X3)=>{"use strict";l();var Vb=Ge("events"),Rb=Ge("https"),Fb=Ge("http"),H3=Ge("net"),Lb=Ge("tls"),{randomBytes:Qb,createHash:kb}=Ge("crypto"),{Readable:$T}=Ge("stream"),{URL:Kp}=Ge("url"),or=o0(),jb=Qp(),Hb=kp(),{BINARY_TYPES:k3,EMPTY_BUFFER:Id,GUID:Kb,kForOnEventAttribute:zp,kListener:zb,kStatusCode:$b,kWebSocket:st,NOOP:K3}=nr(),{EventTarget:{addEventListener:Gb,removeEventListener:Yb}}=L3(),{format:Wb,parse:Jb}=Hp(),{toBuffer:Xb}=p0(),Zb=30*1e3,z3=Symbol("kAborted"),$p=[8,13],Ra=["CONNECTING","OPEN","CLOSING","CLOSED"],eg=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,Ve=class extends Vb{constructor(e,a,r){super(),this._binaryType=k3[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Id,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=Ve.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,a===void 0?a=[]:Array.isArray(a)||(typeof a=="object"&&a!==null?(r=a,a=[]):a=[a]),$3(this,e,a,r)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){!k3.includes(e)||(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,a,r){let i=new jb({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation});this._sender=new Hb(e,this._extensions,r.generateMask),this._receiver=i,this._socket=e,i[st]=this,e[st]=this,i.on("conclude",rg),i.on("drain",ig),i.on("error",dg),i.on("message",pg),i.on("ping",ng),i.on("pong",sg),e.setTimeout(0),e.setNoDelay(),a.length>0&&e.unshift(a),e.on("close",Y3),e.on("data",Ed),e.on("end",W3),e.on("error",J3),this._readyState=Ve.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=Ve.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[or.extensionName]&&this._extensions[or.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Ve.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,a){if(this.readyState!==Ve.CLOSED){if(this.readyState===Ve.CONNECTING){let r="WebSocket was closed before the connection was established";return Ct(this,this._req,r)}if(this.readyState===Ve.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=Ve.CLOSING,this._sender.close(e,a,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),Zb)}}pause(){this.readyState===Ve.CONNECTING||this.readyState===Ve.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,a,r){if(this.readyState===Ve.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=a=void 0):typeof a=="function"&&(r=a,a=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Ve.OPEN){Gp(this,e,r);return}a===void 0&&(a=!this._isServer),this._sender.ping(e||Id,a,r)}pong(e,a,r){if(this.readyState===Ve.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=a=void 0):typeof a=="function"&&(r=a,a=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Ve.OPEN){Gp(this,e,r);return}a===void 0&&(a=!this._isServer),this._sender.pong(e||Id,a,r)}resume(){this.readyState===Ve.CONNECTING||this.readyState===Ve.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,a,r){if(this.readyState===Ve.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof a=="function"&&(r=a,a={}),typeof e=="number"&&(e=e.toString()),this.readyState!==Ve.OPEN){Gp(this,e,r);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...a};this._extensions[or.extensionName]||(i.compress=!1),this._sender.send(e||Id,i,r)}terminate(){if(this.readyState!==Ve.CLOSED){if(this.readyState===Ve.CONNECTING){let e="WebSocket was closed before the connection was established";return Ct(this,this._req,e)}this._socket&&(this._readyState=Ve.CLOSING,this._socket.destroy())}}};Object.defineProperty(Ve,"CONNECTING",{enumerable:!0,value:Ra.indexOf("CONNECTING")});Object.defineProperty(Ve.prototype,"CONNECTING",{enumerable:!0,value:Ra.indexOf("CONNECTING")});Object.defineProperty(Ve,"OPEN",{enumerable:!0,value:Ra.indexOf("OPEN")});Object.defineProperty(Ve.prototype,"OPEN",{enumerable:!0,value:Ra.indexOf("OPEN")});Object.defineProperty(Ve,"CLOSING",{enumerable:!0,value:Ra.indexOf("CLOSING")});Object.defineProperty(Ve.prototype,"CLOSING",{enumerable:!0,value:Ra.indexOf("CLOSING")});Object.defineProperty(Ve,"CLOSED",{enumerable:!0,value:Ra.indexOf("CLOSED")});Object.defineProperty(Ve.prototype,"CLOSED",{enumerable:!0,value:Ra.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Ve.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Ve.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[zp])return e[zb];return null},set(e){for(let a of this.listeners(t))if(a[zp]){this.removeListener(t,a);break}typeof e=="function"&&this.addEventListener(t,e,{[zp]:!0})}})});Ve.prototype.addEventListener=Gb;Ve.prototype.removeEventListener=Yb;X3.exports=Ve;function $3(t,e,a,r){let i={protocolVersion:$p[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(!$p.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${$p.join(", ")})`);let d;if(e instanceof Kp)d=e,t._url=e.href;else{try{d=new Kp(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}t._url=e}let n=d.protocol==="wss:",s=d.protocol==="ws+unix:",c;if(d.protocol!=="ws:"&&!n&&!s?c=`The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`:s&&!d.pathname?c="The URL's pathname is empty":d.hash&&(c="The URL contains a fragment identifier"),c){let L=new SyntaxError(c);if(t._redirects===0)throw L;Sd(t,L);return}let v=n?443:80,I=Qb(16).toString("base64"),S=n?Rb.request:Fb.request,O=new Set,R;if(i.createConnection=n?ag:tg,i.defaultPort=i.defaultPort||v,i.port=d.port||v,i.host=d.hostname.startsWith("[")?d.hostname.slice(1,-1):d.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":I,Connection:"Upgrade",Upgrade:"websocket"},i.path=d.pathname+d.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(R=new or(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Wb({[or.extensionName]:R.offer()})),a.length){for(let L of a){if(typeof L!="string"||!eg.test(L)||O.has(L))throw new SyntaxError("An invalid or duplicated subprotocol was specified");O.add(L)}i.headers["Sec-WebSocket-Protocol"]=a.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(d.username||d.password)&&(i.auth=`${d.username}:${d.password}`),s){let L=i.path.split(":");i.socketPath=L[0],i.path=L[1]}let V;if(i.followRedirects){if(t._redirects===0){t._originalIpc=s,t._originalSecure=n,t._originalHostOrSocketPath=s?i.socketPath:d.host;let L=r&&r.headers;if(r={...r,headers:{}},L)for(let[G,J]of Object.entries(L))r.headers[G.toLowerCase()]=J}else if(t.listenerCount("redirect")===0){let L=s?t._originalIpc?i.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:d.host===t._originalHostOrSocketPath;(!L||t._originalSecure&&!n)&&(delete i.headers.authorization,delete i.headers.cookie,L||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+C.from(i.auth).toString("base64")),V=t._req=S(i),t._redirects&&t.emit("redirect",t.url,V)}else V=t._req=S(i);i.timeout&&V.on("timeout",()=>{Ct(t,V,"Opening handshake has timed out")}),V.on("error",L=>{V===null||V[z3]||(V=t._req=null,Sd(t,L))}),V.on("response",L=>{let G=L.headers.location,J=L.statusCode;if(G&&i.followRedirects&&J>=300&&J<400){if(++t._redirects>i.maxRedirects){Ct(t,V,"Maximum redirects exceeded");return}V.abort();let fe;try{fe=new Kp(G,e)}catch{let ye=new SyntaxError(`Invalid URL: ${G}`);Sd(t,ye);return}$3(t,fe,a,r)}else t.emit("unexpected-response",V,L)||Ct(t,V,`Unexpected server response: ${L.statusCode}`)}),V.on("upgrade",(L,G,J)=>{if(t.emit("upgrade",L),t.readyState!==Ve.CONNECTING)return;if(V=t._req=null,L.headers.upgrade.toLowerCase()!=="websocket"){Ct(t,G,"Invalid Upgrade header");return}let fe=kb("sha1").update(I+Kb).digest("base64");if(L.headers["sec-websocket-accept"]!==fe){Ct(t,G,"Invalid Sec-WebSocket-Accept header");return}let oe=L.headers["sec-websocket-protocol"],ye;if(oe!==void 0?O.size?O.has(oe)||(ye="Server sent an invalid subprotocol"):ye="Server sent a subprotocol but none was requested":O.size&&(ye="Server sent no subprotocol"),ye){Ct(t,G,ye);return}oe&&(t._protocol=oe);let Ie=L.headers["sec-websocket-extensions"];if(Ie!==void 0){if(!R){Ct(t,G,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let we;try{we=Jb(Ie)}catch{Ct(t,G,"Invalid Sec-WebSocket-Extensions header");return}let Ne=Object.keys(we);if(Ne.length!==1||Ne[0]!==or.extensionName){Ct(t,G,"Server indicated an extension that was not requested");return}try{R.accept(we[or.extensionName])}catch{Ct(t,G,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[or.extensionName]=R}t.setSocket(G,J,{generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),V.end()}function Sd(t,e){t._readyState=Ve.CLOSING,t.emit("error",e),t.emitClose()}function tg(t){return t.path=t.socketPath,H3.connect(t)}function ag(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=H3.isIP(t.host)?"":t.host),Lb.connect(t)}function Ct(t,e,a){t._readyState=Ve.CLOSING;let r=new Error(a);Error.captureStackTrace(r,Ct),e.setHeader?(e[z3]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Sd,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Gp(t,e,a){if(e){let r=Xb(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(a){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${Ra[t.readyState]})`);a(r)}}function rg(t,e){let a=this[st];a._closeFrameReceived=!0,a._closeMessage=e,a._closeCode=t,a._socket[st]!==void 0&&(a._socket.removeListener("data",Ed),process.nextTick(G3,a._socket),t===1005?a.close():a.close(t,e))}function ig(){let t=this[st];t.isPaused||t._socket.resume()}function dg(t){let e=this[st];e._socket[st]!==void 0&&(e._socket.removeListener("data",Ed),process.nextTick(G3,e._socket),e.close(t[$b])),e.emit("error",t)}function j3(){this[st].emitClose()}function pg(t,e){this[st].emit("message",t,e)}function ng(t){let e=this[st];e.pong(t,!e._isServer,K3),e.emit("ping",t)}function sg(t){this[st].emit("pong",t)}function G3(t){t.resume()}function Y3(){let t=this[st];this.removeListener("close",Y3),this.removeListener("data",Ed),this.removeListener("end",W3),t._readyState=Ve.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[st]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",j3),t._receiver.on("finish",j3))}function Ed(t){this[st]._receiver.write(t)||this.pause()}function W3(){let t=this[st];t._readyState=Ve.CLOSING,t._receiver.end(),this.end()}function J3(){let t=this[st];this.removeListener("error",J3),this.on("error",K3),t&&(t._readyState=Ve.CLOSING,this.destroy())}});var ao=T((WT,to)=>{"use strict";l();var{Duplex:og}=Ge("stream");function Z3(t){t.emit("close")}function fg(){!this.destroyed&&this._writableState.finished&&this.destroy()}function eo(t){this.removeListener("error",eo),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function lg(t,e){let a=!0,r=new og({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(d,n){let s=!n&&r._readableState.objectMode?d.toString():d;r.push(s)||t.pause()}),t.once("error",function(d){r.destroyed||(a=!1,r.destroy(d))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(i,d){if(t.readyState===t.CLOSED){d(i),process.nextTick(Z3,r);return}let n=!1;t.once("error",function(c){n=!0,d(c)}),t.once("close",function(){n||d(i),process.nextTick(Z3,r)}),a&&t.terminate()},r._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(i,d,n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(i,d,n)});return}t.send(i,n)},r.on("end",fg),r.on("error",eo),r}to.exports=lg});var io=T((XT,ro)=>{"use strict";l();var{tokenChars:ug}=f0();function cg(t){let e=new Set,a=-1,r=-1,i=0;for(i;i{"use strict";l();var hg=Ge("events"),Cd=Ge("http"),eB=Ge("https"),tB=Ge("net"),aB=Ge("tls"),{createHash:mg}=Ge("crypto"),po=Hp(),Fr=o0(),vg=io(),bg=Yp(),{GUID:gg,kWebSocket:yg}=nr(),xg=/^[+/0-9A-Za-z]{22}==$/,no=0,so=1,fo=2,Wp=class extends hg{constructor(e,a){if(super(),e={maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:bg,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=Cd.createServer((r,i)=>{let d=Cd.STATUS_CODES[426];i.writeHead(426,{"Content-Length":d.length,"Content-Type":"text/plain"}),i.end(d)}),this._server.listen(e.port,e.host,e.backlog,a)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=wg(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,d,n)=>{this.handleUpgrade(i,d,n,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=no}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===fo){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(m0,this);return}if(e&&this.once("close",e),this._state!==so)if(this._state=so,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(m0,this):process.nextTick(m0,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{m0(this)})}}shouldHandle(e){if(this.options.path){let a=e.url.indexOf("?");if((a!==-1?e.url.slice(0,a):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,a,r,i){a.on("error",oo);let d=e.headers["sec-websocket-key"],n=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Lr(this,e,a,405,"Invalid HTTP method");return}if(e.headers.upgrade.toLowerCase()!=="websocket"){Lr(this,e,a,400,"Invalid Upgrade header");return}if(!d||!xg.test(d)){Lr(this,e,a,400,"Missing or invalid Sec-WebSocket-Key header");return}if(n!==8&&n!==13){Lr(this,e,a,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(e)){v0(a,400);return}let s=e.headers["sec-websocket-protocol"],c=new Set;if(s!==void 0)try{c=vg.parse(s)}catch{Lr(this,e,a,400,"Invalid Sec-WebSocket-Protocol header");return}let v=e.headers["sec-websocket-extensions"],I={};if(this.options.perMessageDeflate&&v!==void 0){let S=new Fr(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let O=po.parse(v);O[Fr.extensionName]&&(S.accept(O[Fr.extensionName]),I[Fr.extensionName]=S)}catch{Lr(this,e,a,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let S={origin:e.headers[`${n===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(S,(O,R,V,L)=>{if(!O)return v0(a,R||401,V,L);this.completeUpgrade(I,d,c,e,a,r,i)});return}if(!this.options.verifyClient(S))return v0(a,401)}this.completeUpgrade(I,d,c,e,a,r,i)}completeUpgrade(e,a,r,i,d,n,s){if(!d.readable||!d.writable)return d.destroy();if(d[yg])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>no)return v0(d,503);let v=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${mg("sha1").update(a+gg).digest("base64")}`],I=new this.options.WebSocket(null);if(r.size){let S=this.options.handleProtocols?this.options.handleProtocols(r,i):r.values().next().value;S&&(v.push(`Sec-WebSocket-Protocol: ${S}`),I._protocol=S)}if(e[Fr.extensionName]){let S=e[Fr.extensionName].params,O=po.format({[Fr.extensionName]:[S]});v.push(`Sec-WebSocket-Extensions: ${O}`),I._extensions=e}this.emit("headers",v,i),d.write(v.concat(`\r `).join(`\r -`)),d.removeListener("error",zp),I.setSocket(d,n,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(I),I.on("close",()=>{this.clients.delete(I),this._shouldEmitClose&&!this.clients.size&&process.nextTick(h0,this)})),f(I,i)}};of.exports=Kp;function og(t,e){for(let a of Object.keys(e))t.on(a,e[a]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function h0(t){t._state=ff,t.emit("close")}function zp(){this.destroy()}function vi(t,e,a,r){t.writable&&(a=a||wd.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":N.byteLength(a),...r},t.write(`HTTP/1.1 ${e} ${wd.STATUS_CODES[e]}\r +`)),d.removeListener("error",oo),I.setSocket(d,n,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(I),I.on("close",()=>{this.clients.delete(I),this._shouldEmitClose&&!this.clients.size&&process.nextTick(m0,this)})),s(I,i)}};lo.exports=Wp;function wg(t,e){for(let a of Object.keys(e))t.on(a,e[a]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function m0(t){t._state=fo,t.emit("close")}function oo(){this.destroy()}function v0(t,e,a,r){a=a||Cd.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":C.byteLength(a),...r},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${Cd.STATUS_CODES[e]}\r `+Object.keys(r).map(i=>`${i}: ${r[i]}`).join(`\r `)+`\r \r -`+a)),t.removeListener("error",zp),t.destroy()}});var cf=T((xT,uf)=>{"use strict";l();var Ra=Hp();Ra.createWebSocketStream=af();Ra.Server=lf();Ra.Receiver=Pp();Ra.Sender=Vp();Ra.WebSocket=Ra;Ra.WebSocketServer=Ra.Server;uf.exports=Ra});var mf=T((wT,hf)=>{"use strict";l();hf.exports=cf()});var fr=T((IT,vf)=>{l();var lg=vf.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=lg)});var _d=T((ET,bf)=>{l();var ug=bf.exports={version:"2.6.0"};typeof __e=="number"&&(__e=ug)});var Lr=T((NT,gf)=>{l();gf.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var bi=T((MT,yf)=>{l();var cg=Lr();yf.exports=function(t){if(!cg(t))throw TypeError(t+" is not an object!");return t}});var m0=T((BT,xf)=>{l();xf.exports=function(t){try{return!!t()}catch{return!0}}});var gi=T((OT,Af)=>{l();Af.exports=!m0()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Gp=T((VT,_f)=>{l();var wf=Lr(),$p=fr().document,hg=wf($p)&&wf($p.createElement);_f.exports=function(t){return hg?$p.createElement(t):{}}});var Sf=T((RT,If)=>{l();If.exports=!gi()&&!m0()(function(){return Object.defineProperty(Gp()("div"),"a",{get:function(){return 7}}).a!=7})});var Cf=T((LT,Ef)=>{l();var Id=Lr();Ef.exports=function(t,e){if(!Id(t))return t;var a,r;if(e&&typeof(a=t.toString)=="function"&&!Id(r=a.call(t))||typeof(a=t.valueOf)=="function"&&!Id(r=a.call(t))||!e&&typeof(a=t.toString)=="function"&&!Id(r=a.call(t)))return r;throw TypeError("Can't convert object to primitive value")}});var v0=T(Df=>{l();var Nf=bi(),mg=Sf(),vg=Cf(),bg=Object.defineProperty;Df.f=gi()?Object.defineProperty:function(e,a,r){if(Nf(e),a=vg(a,!0),Nf(r),mg)try{return bg(e,a,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[a]=r.value),e}});var Yp=T((HT,Mf)=>{l();Mf.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var or=T((zT,Tf)=>{l();var gg=v0(),yg=Yp();Tf.exports=gi()?function(t,e,a){return gg.f(t,e,yg(1,a))}:function(t,e,a){return t[e]=a,t}});var b0=T((GT,Bf)=>{l();var xg={}.hasOwnProperty;Bf.exports=function(t,e){return xg.call(t,e)}});var Sd=T((WT,qf)=>{l();var Ag=0,wg=Math.random();qf.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++Ag+wg).toString(36))}});var g0=T((XT,Pf)=>{l();var _g=fr(),Ed=or(),Of=b0(),Wp=Sd()("src"),Jp="toString",Xp=Function[Jp],Ig=(""+Xp).split(Jp);_d().inspectSource=function(t){return Xp.call(t)};(Pf.exports=function(t,e,a,r){var i=typeof a=="function";i&&(Of(a,"name")||Ed(a,"name",e)),t[e]!==a&&(i&&(Of(a,Wp)||Ed(a,Wp,t[e]?""+t[e]:Ig.join(String(e)))),t===_g?t[e]=a:r?t[e]?t[e]=a:Ed(t,e,a):(delete t[e],Ed(t,e,a)))})(Function.prototype,Jp,function(){return typeof this=="function"&&this[Wp]||Xp.call(this)})});var Zp=T((eB,Vf)=>{l();Vf.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var en=T((aB,Uf)=>{l();var Sg=Zp();Uf.exports=function(t,e,a){if(Sg(t),e===void 0)return t;switch(a){case 1:return function(r){return t.call(e,r)};case 2:return function(r,i){return t.call(e,r,i)};case 3:return function(r,i,d){return t.call(e,r,i,d)}}return function(){return t.apply(e,arguments)}}});var Bt=T((iB,Ff)=>{l();var yi=fr(),Cd=_d(),Eg=or(),Cg=g0(),Rf=en(),tn="prototype",ut=function(t,e,a){var r=t&ut.F,i=t&ut.G,d=t&ut.S,n=t&ut.P,f=t&ut.B,h=i?yi:d?yi[e]||(yi[e]={}):(yi[e]||{})[tn],v=i?Cd:Cd[e]||(Cd[e]={}),I=v[tn]||(v[tn]={}),S,O,R,V;i&&(a=e);for(S in a)O=!r&&h&&h[S]!==void 0,R=(O?h:a)[S],V=f&&O?Rf(R,yi):n&&typeof R=="function"?Rf(Function.call,R):R,h&&Cg(h,S,R,t&ut.U),v[S]!=R&&Eg(v,S,V),n&&I[S]!=R&&(I[S]=R)};yi.core=Cd;ut.F=1;ut.G=2;ut.S=4;ut.P=8;ut.B=16;ut.W=32;ut.U=64;ut.R=128;Ff.exports=ut});var y0=T((pB,Lf)=>{l();var Ng={}.toString;Lf.exports=function(t){return Ng.call(t).slice(8,-1)}});var an=T((sB,Qf)=>{l();var Dg=y0();Qf.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return Dg(t)=="String"?t.split(""):Object(t)}});var xi=T((oB,kf)=>{l();kf.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var rn=T((uB,jf)=>{l();var Mg=xi();jf.exports=function(t){return Object(Mg(t))}});var Nd=T((hB,Hf)=>{l();var Tg=Math.ceil,Bg=Math.floor;Hf.exports=function(t){return isNaN(t=+t)?0:(t>0?Bg:Tg)(t)}});var Dd=T((vB,Kf)=>{l();var qg=Nd(),Og=Math.min;Kf.exports=function(t){return t>0?Og(qg(t),9007199254740991):0}});var $f=T((gB,zf)=>{l();var Pg=y0();zf.exports=Array.isArray||function(e){return Pg(e)=="Array"}});var dn=T((xB,Gf)=>{l();Gf.exports=!1});var pn=T((wB,Xf)=>{l();var Vg=_d(),Yf=fr(),Wf="__core-js_shared__",Jf=Yf[Wf]||(Yf[Wf]={});(Xf.exports=function(t,e){return Jf[t]||(Jf[t]=e!==void 0?e:{})})("versions",[]).push({version:Vg.version,mode:dn()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var Gt=T((IB,eo)=>{l();var nn=pn()("wks"),Ug=Sd(),sn=fr().Symbol,Zf=typeof sn=="function",Rg=eo.exports=function(t){return nn[t]||(nn[t]=Zf&&sn[t]||(Zf?sn:Ug)("Symbol."+t))};Rg.store=nn});var ro=T((EB,ao)=>{l();var Fg=Lr(),to=$f(),Lg=Gt()("species");ao.exports=function(t){var e;return to(t)&&(e=t.constructor,typeof e=="function"&&(e===Array||to(e.prototype))&&(e=void 0),Fg(e)&&(e=e[Lg],e===null&&(e=void 0))),e===void 0?Array:e}});var po=T((NB,io)=>{l();var Qg=ro();io.exports=function(t,e){return new(Qg(t))(e)}});var Ai=T((MB,no)=>{l();var kg=en(),jg=an(),Hg=rn(),Kg=Dd(),zg=po();no.exports=function(t,e){var a=t==1,r=t==2,i=t==3,d=t==4,n=t==6,f=t==5||n,h=e||zg;return function(v,I,S){for(var O=Hg(v),R=jg(O),V=kg(I,S,3),L=Kg(R.length),$=0,X=a?h(v,L):r?h(v,0):void 0,ie,oe;L>$;$++)if((f||$ in R)&&(ie=R[$],oe=V(ie,$,O),t)){if(a)X[$]=oe;else if(oe)switch(t){case 3:return!0;case 5:return ie;case 6:return $;case 2:X.push(ie)}else if(d)return!1}return n?-1:i||d?d:X}}});var x0=T((BB,so)=>{l();var fn=Gt()("unscopables"),on=Array.prototype;on[fn]==null&&or()(on,fn,{});so.exports=function(t){on[fn][t]=!0}});var oo=T(()=>{"use strict";l();var ln=Bt(),$g=Ai()(6),un="findIndex",fo=!0;un in[]&&Array(1)[un](function(){fo=!1});ln(ln.P+ln.F*fo,"Array",{findIndex:function(e){return $g(this,e,arguments.length>1?arguments[1]:void 0)}});x0()(un)});var uo=T(()=>{"use strict";l();var cn=Bt(),Gg=Ai()(5),hn="find",lo=!0;hn in[]&&Array(1)[hn](function(){lo=!1});cn(cn.P+cn.F*lo,"Array",{find:function(e){return Gg(this,e,arguments.length>1?arguments[1]:void 0)}});x0()(hn)});var mo=T(()=>{l();var Yg=v0().f,co=Function.prototype,Wg=/^\s*function ([^ (]*)/,ho="name";ho in co||gi()&&Yg(co,ho,{configurable:!0,get:function(){try{return(""+this).match(Wg)[1]}catch{return""}}})});var vn=T(mn=>{"use strict";l();mn.__esModule=!0;mn.default=function(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}});var bo=T(lr=>{"use strict";l();Object.defineProperty(lr,"__esModule",{value:!0});lr.flip=Jg;lr.constant=Xg;lr.on=Zg;lr.compose=ey;lr.pipe=ty;lr.curry=ay;function Jg(t){return function(e,a){return t(a,e)}}function Xg(t){return function(){return t}}function Zg(t,e){return function(a,r){return t(e(a),e(r))}}function ey(){for(var t=this,e=arguments.length,a=Array(e),r=0;r-1;f--)n=a[f].call(t,n);return n}}function ty(){for(var t=this,e=arguments.length,a=Array(e),r=0;r=e?t.apply(this,r):vo(t,e,r)}}function ay(t){return vo(t,t.length,[])}});var Md=T(($B,go)=>{l();var ry=Math.ceil,iy=Math.floor;go.exports=function(t){return isNaN(t=+t)?0:(t>0?iy:ry)(t)}});var Td=T((YB,yo)=>{l();yo.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var Ao=T((JB,xo)=>{l();var dy=Md(),py=Td();xo.exports=function(t){return function(e,a){var r=String(py(e)),i=dy(a),d=r.length,n,f;return i<0||i>=d?t?"":void 0:(n=r.charCodeAt(i),n<55296||n>56319||i+1===d||(f=r.charCodeAt(i+1))<56320||f>57343?t?r.charAt(i):n:t?r.slice(i,i+2):(n-55296<<10)+(f-56320)+65536)}}});var A0=T((ZB,wo)=>{l();wo.exports=!0});var Fa=T((tq,_o)=>{l();var ny=_o.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=ny)});var ct=T((rq,Io)=>{l();var sy=Io.exports={version:"2.6.0"};typeof __e=="number"&&(__e=sy)});var Eo=T((dq,So)=>{l();So.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var bn=T((nq,Co)=>{l();var fy=Eo();Co.exports=function(t,e,a){if(fy(t),e===void 0)return t;switch(a){case 1:return function(r){return t.call(e,r)};case 2:return function(r,i){return t.call(e,r,i)};case 3:return function(r,i,d){return t.call(e,r,i,d)}}return function(){return t.apply(e,arguments)}}});var Qr=T((fq,No)=>{l();No.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var kr=T((lq,Do)=>{l();var oy=Qr();Do.exports=function(t){if(!oy(t))throw TypeError(t+" is not an object!");return t}});var jr=T((cq,Mo)=>{l();Mo.exports=function(t){try{return!!t()}catch{return!0}}});var ur=T((mq,To)=>{l();To.exports=!jr()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var yn=T((bq,qo)=>{l();var Bo=Qr(),gn=Fa().document,ly=Bo(gn)&&Bo(gn.createElement);qo.exports=function(t){return ly?gn.createElement(t):{}}});var xn=T((yq,Oo)=>{l();Oo.exports=!ur()&&!jr()(function(){return Object.defineProperty(yn()("div"),"a",{get:function(){return 7}}).a!=7})});var qd=T((Aq,Po)=>{l();var Bd=Qr();Po.exports=function(t,e){if(!Bd(t))return t;var a,r;if(e&&typeof(a=t.toString)=="function"&&!Bd(r=a.call(t))||typeof(a=t.valueOf)=="function"&&!Bd(r=a.call(t))||!e&&typeof(a=t.toString)=="function"&&!Bd(r=a.call(t)))return r;throw TypeError("Can't convert object to primitive value")}});var La=T(Uo=>{l();var Vo=kr(),uy=xn(),cy=qd(),hy=Object.defineProperty;Uo.f=ur()?Object.defineProperty:function(e,a,r){if(Vo(e),a=cy(a,!0),Vo(r),uy)try{return hy(e,a,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[a]=r.value),e}});var wi=T((Sq,Ro)=>{l();Ro.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var Hr=T((Cq,Fo)=>{l();var my=La(),vy=wi();Fo.exports=ur()?function(t,e,a){return my.f(t,e,vy(1,a))}:function(t,e,a){return t[e]=a,t}});var cr=T((Dq,Lo)=>{l();var by={}.hasOwnProperty;Lo.exports=function(t,e){return by.call(t,e)}});var Qa=T((Tq,ko)=>{l();var Od=Fa(),An=ct(),Qo=bn(),gy=Hr(),yy=cr(),Pd="prototype",st=function(t,e,a){var r=t&st.F,i=t&st.G,d=t&st.S,n=t&st.P,f=t&st.B,h=t&st.W,v=i?An:An[e]||(An[e]={}),I=v[Pd],S=i?Od:d?Od[e]:(Od[e]||{})[Pd],O,R,V;i&&(a=e);for(O in a)R=!r&&S&&S[O]!==void 0,!(R&&yy(v,O))&&(V=R?S[O]:a[O],v[O]=i&&typeof S[O]!="function"?a[O]:f&&R?Qo(V,Od):h&&S[O]==V?function(L){var $=function(X,ie,oe){if(this instanceof L){switch(arguments.length){case 0:return new L;case 1:return new L(X);case 2:return new L(X,ie)}return new L(X,ie,oe)}return L.apply(this,arguments)};return $[Pd]=L[Pd],$}(V):n&&typeof V=="function"?Qo(Function.call,V):V,n&&((v.virtual||(v.virtual={}))[O]=V,t&st.R&&I&&!I[O]&&gy(I,O,V)))};st.F=1;st.G=2;st.S=4;st.P=8;st.B=16;st.W=32;st.U=64;st.R=128;ko.exports=st});var wn=T((qq,jo)=>{l();jo.exports=Hr()});var Kr=T((Pq,Ho)=>{l();Ho.exports={}});var Vd=T((Uq,Ko)=>{l();var xy={}.toString;Ko.exports=function(t){return xy.call(t).slice(8,-1)}});var _n=T((Fq,zo)=>{l();var Ay=Vd();zo.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return Ay(t)=="String"?t.split(""):Object(t)}});var hr=T((Qq,$o)=>{l();var wy=_n(),_y=Td();$o.exports=function(t){return wy(_y(t))}});var In=T((jq,Go)=>{l();var Iy=Md(),Sy=Math.min;Go.exports=function(t){return t>0?Sy(Iy(t),9007199254740991):0}});var Wo=T((Kq,Yo)=>{l();var Ey=Md(),Cy=Math.max,Ny=Math.min;Yo.exports=function(t,e){return t=Ey(t),t<0?Cy(t+e,0):Ny(t,e)}});var Xo=T(($q,Jo)=>{l();var Dy=hr(),My=In(),Ty=Wo();Jo.exports=function(t){return function(e,a,r){var i=Dy(e),d=My(i.length),n=Ty(r,d),f;if(t&&a!=a){for(;d>n;)if(f=i[n++],f!=f)return!0}else for(;d>n;n++)if((t||n in i)&&i[n]===a)return t||n||0;return!t&&-1}}});var Ud=T((Yq,a5)=>{l();var By=ct(),Zo=Fa(),e5="__core-js_shared__",t5=Zo[e5]||(Zo[e5]={});(a5.exports=function(t,e){return t5[t]||(t5[t]=e!==void 0?e:{})})("versions",[]).push({version:By.version,mode:A0()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var w0=T((Jq,r5)=>{l();var qy=0,Oy=Math.random();r5.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++qy+Oy).toString(36))}});var Rd=T((Zq,d5)=>{l();var i5=Ud()("keys"),Py=w0();d5.exports=function(t){return i5[t]||(i5[t]=Py(t))}});var Sn=T((tO,n5)=>{l();var p5=cr(),Vy=hr(),Uy=Xo()(!1),Ry=Rd()("IE_PROTO");n5.exports=function(t,e){var a=Vy(t),r=0,i=[],d;for(d in a)d!=Ry&&p5(a,d)&&i.push(d);for(;e.length>r;)p5(a,d=e[r++])&&(~Uy(i,d)||i.push(d));return i}});var Fd=T((rO,s5)=>{l();s5.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var zr=T((dO,f5)=>{l();var Fy=Sn(),Ly=Fd();f5.exports=Object.keys||function(e){return Fy(e,Ly)}});var l5=T((nO,o5)=>{l();var Qy=La(),ky=kr(),jy=zr();o5.exports=ur()?Object.defineProperties:function(e,a){ky(e);for(var r=jy(a),i=r.length,d=0,n;i>d;)Qy.f(e,n=r[d++],a[n]);return e}});var h5=T((fO,c5)=>{l();var u5=Fa().document;c5.exports=u5&&u5.documentElement});var Nn=T((lO,v5)=>{l();var Hy=kr(),Ky=l5(),m5=Fd(),zy=Rd()("IE_PROTO"),En=function(){},Cn="prototype",Ld=function(){var t=yn()("iframe"),e=m5.length,a="<",r=">",i;for(t.style.display="none",h5().appendChild(t),t.src="javascript:",i=t.contentWindow.document,i.open(),i.write(a+"script"+r+"document.F=Object"+a+"/script"+r),i.close(),Ld=i.F;e--;)delete Ld[Cn][m5[e]];return Ld()};v5.exports=Object.create||function(e,a){var r;return e!==null?(En[Cn]=Hy(e),r=new En,En[Cn]=null,r[zy]=e):r=Ld(),a===void 0?r:Ky(r,a)}});var qt=T((cO,g5)=>{l();var Dn=Ud()("wks"),$y=w0(),Mn=Fa().Symbol,b5=typeof Mn=="function",Gy=g5.exports=function(t){return Dn[t]||(Dn[t]=b5&&Mn[t]||(b5?Mn:$y)("Symbol."+t))};Gy.store=Dn});var Qd=T((mO,x5)=>{l();var Yy=La().f,Wy=cr(),y5=qt()("toStringTag");x5.exports=function(t,e,a){t&&!Wy(t=a?t:t.prototype,y5)&&Yy(t,y5,{configurable:!0,value:e})}});var _5=T((bO,w5)=>{"use strict";l();var Jy=Nn(),Xy=wi(),Zy=Qd(),A5={};Hr()(A5,qt()("iterator"),function(){return this});w5.exports=function(t,e,a){t.prototype=Jy(A5,{next:Xy(1,a)}),Zy(t,e+" Iterator")}});var _0=T((yO,I5)=>{l();var ex=Td();I5.exports=function(t){return Object(ex(t))}});var C5=T((AO,E5)=>{l();var tx=cr(),ax=_0(),S5=Rd()("IE_PROTO"),rx=Object.prototype;E5.exports=Object.getPrototypeOf||function(t){return t=ax(t),tx(t,S5)?t[S5]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?rx:null}});var qn=T((_O,q5)=>{"use strict";l();var N5=A0(),Tn=Qa(),ix=wn(),D5=Hr(),M5=Kr(),dx=_5(),px=Qd(),nx=C5(),I0=qt()("iterator"),Bn=!([].keys&&"next"in[].keys()),sx="@@iterator",T5="keys",kd="values",B5=function(){return this};q5.exports=function(t,e,a,r,i,d,n){dx(a,e,r);var f=function(oe){if(!Bn&&oe in S)return S[oe];switch(oe){case T5:return function(){return new a(this,oe)};case kd:return function(){return new a(this,oe)}}return function(){return new a(this,oe)}},h=e+" Iterator",v=i==kd,I=!1,S=t.prototype,O=S[I0]||S[sx]||i&&S[i],R=O||f(i),V=i?v?f("entries"):R:void 0,L=e=="Array"&&S.entries||O,$,X,ie;if(L&&(ie=nx(L.call(new t)),ie!==Object.prototype&&ie.next&&(px(ie,h,!0),!N5&&typeof ie[I0]!="function"&&D5(ie,I0,B5))),v&&O&&O.name!==kd&&(I=!0,R=function(){return O.call(this)}),(!N5||n)&&(Bn||I||!S[I0])&&D5(S,I0,R),M5[e]=R,M5[h]=B5,i)if($={values:v?R:f(kd),keys:d?R:f(T5),entries:V},n)for(X in $)X in S||ix(S,X,$[X]);else Tn(Tn.P+Tn.F*(Bn||I),e,$);return $}});var S0=T(()=>{"use strict";l();var fx=Ao()(!0);qn()(String,"String",function(t){this._t=String(t),this._i=0},function(){var t=this._t,e=this._i,a;return e>=t.length?{value:void 0,done:!0}:(a=fx(t,e),this._i+=a.length,{value:a,done:!1})})});var P5=T((NO,O5)=>{l();O5.exports=function(){}});var U5=T((MO,V5)=>{l();V5.exports=function(t,e){return{value:e,done:!!t}}});var L5=T((BO,F5)=>{"use strict";l();var On=P5(),jd=U5(),R5=Kr(),ox=hr();F5.exports=qn()(Array,"Array",function(t,e){this._t=ox(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,a=this._i++;return!t||a>=t.length?(this._t=void 0,jd(1)):e=="keys"?jd(0,a):e=="values"?jd(0,t[a]):jd(0,[a,t[a]])},"values");R5.Arguments=R5.Array;On("keys");On("values");On("entries")});var $d=T(()=>{l();L5();var lx=Fa(),ux=Hr(),Q5=Kr(),k5=qt()("toStringTag"),j5="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(Hd=0;Hd{l();H5.f=qt()});var z5=T((FO,K5)=>{l();S0();$d();K5.exports=Gd().f("iterator")});var G5=T((QO,$5)=>{l();$5.exports={default:z5(),__esModule:!0}});var W5=T((jO,Y5)=>{l();var $r=w0()("meta"),cx=Qr(),Vn=cr(),hx=La().f,mx=0,Yd=Object.isExtensible||function(){return!0},vx=!jr()(function(){return Yd(Object.preventExtensions({}))}),Un=function(t){hx(t,$r,{value:{i:"O"+ ++mx,w:{}}})},bx=function(t,e){if(!cx(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!Vn(t,$r)){if(!Yd(t))return"F";if(!e)return"E";Un(t)}return t[$r].i},gx=function(t,e){if(!Vn(t,$r)){if(!Yd(t))return!0;if(!e)return!1;Un(t)}return t[$r].w},yx=function(t){return vx&&xx.NEED&&Yd(t)&&!Vn(t,$r)&&Un(t),t},xx=Y5.exports={KEY:$r,NEED:!1,fastKey:bx,getWeak:gx,onFreeze:yx}});var Wd=T((KO,X5)=>{l();var Ax=Fa(),J5=ct(),wx=A0(),_x=Gd(),Ix=La().f;X5.exports=function(t){var e=J5.Symbol||(J5.Symbol=wx?{}:Ax.Symbol||{});t.charAt(0)!="_"&&!(t in e)&&Ix(e,t,{value:_x.f(t)})}});var Jd=T(Z5=>{l();Z5.f=Object.getOwnPropertySymbols});var _i=T(e8=>{l();e8.f={}.propertyIsEnumerable});var a8=T((JO,t8)=>{l();var Sx=zr(),Ex=Jd(),Cx=_i();t8.exports=function(t){var e=Sx(t),a=Ex.f;if(a)for(var r=a(t),i=Cx.f,d=0,n;r.length>d;)i.call(t,n=r[d++])&&e.push(n);return e}});var i8=T((ZO,r8)=>{l();var Nx=Vd();r8.exports=Array.isArray||function(e){return Nx(e)=="Array"}});var Rn=T(d8=>{l();var Dx=Sn(),Mx=Fd().concat("length","prototype");d8.f=Object.getOwnPropertyNames||function(e){return Dx(e,Mx)}});var f8=T((rP,s8)=>{l();var Tx=hr(),p8=Rn().f,Bx={}.toString,n8=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],qx=function(t){try{return p8(t)}catch{return n8.slice()}};s8.exports.f=function(e){return n8&&Bx.call(e)=="[object Window]"?qx(e):p8(Tx(e))}});var u8=T(l8=>{l();var Ox=_i(),Px=wi(),Vx=hr(),Ux=qd(),Rx=cr(),Fx=xn(),o8=Object.getOwnPropertyDescriptor;l8.f=ur()?o8:function(e,a){if(e=Vx(e),a=Ux(a,!0),Fx)try{return o8(e,a)}catch{}if(Rx(e,a))return Px(!Ox.f.call(e,a),e[a])}});var C8=T(()=>{"use strict";l();var e2=Fa(),W1=cr(),Hn=ur(),Et=Qa(),c8=wn(),Lx=W5().KEY,b8=jr(),Wn=Ud(),Jn=Qd(),Qx=w0(),N0=qt(),kx=Gd(),jx=Wd(),Hx=a8(),Kx=i8(),Kn=kr(),zx=Qr(),t2=hr(),Xn=qd(),zn=wi(),C0=Nn(),g8=f8(),y8=u8(),x8=La(),$x=zr(),A8=y8.f,Gr=x8.f,w8=g8.f,bt=e2.Symbol,Zd=e2.JSON,Xd=Zd&&Zd.stringify,mr="prototype",vt=N0("_hidden"),h8=N0("toPrimitive"),Gx={}.propertyIsEnumerable,E0=Wn("symbol-registry"),ka=Wn("symbols"),D0=Wn("op-symbols"),Ot=Object[mr],Ii=typeof bt=="function",Fn=e2.QObject,$n=!Fn||!Fn[mr]||!Fn[mr].findChild,Gn=Hn&&b8(function(){return C0(Gr({},"a",{get:function(){return Gr(this,"a",{value:7}).a}})).a!=7})?function(t,e,a){var r=A8(Ot,e);r&&delete Ot[e],Gr(t,e,a),r&&t!==Ot&&Gr(Ot,e,r)}:Gr,m8=function(t){var e=ka[t]=C0(bt[mr]);return e._k=t,e},Yn=Ii&&typeof bt.iterator=="symbol"?function(t){return typeof t=="symbol"}:function(t){return t instanceof bt},a2=function(e,a,r){return e===Ot&&a2(D0,a,r),Kn(e),a=Xn(a,!0),Kn(r),W1(ka,a)?(r.enumerable?(W1(e,vt)&&e[vt][a]&&(e[vt][a]=!1),r=C0(r,{enumerable:zn(0,!1)})):(W1(e,vt)||Gr(e,vt,zn(1,{})),e[vt][a]=!0),Gn(e,a,r)):Gr(e,a,r)},_8=function(e,a){Kn(e);for(var r=Hx(a=t2(a)),i=0,d=r.length,n;d>i;)a2(e,n=r[i++],a[n]);return e},Yx=function(e,a){return a===void 0?C0(e):_8(C0(e),a)},v8=function(e){var a=Gx.call(this,e=Xn(e,!0));return this===Ot&&W1(ka,e)&&!W1(D0,e)?!1:a||!W1(this,e)||!W1(ka,e)||W1(this,vt)&&this[vt][e]?a:!0},I8=function(e,a){if(e=t2(e),a=Xn(a,!0),!(e===Ot&&W1(ka,a)&&!W1(D0,a))){var r=A8(e,a);return r&&W1(ka,a)&&!(W1(e,vt)&&e[vt][a])&&(r.enumerable=!0),r}},S8=function(e){for(var a=w8(t2(e)),r=[],i=0,d;a.length>i;)!W1(ka,d=a[i++])&&d!=vt&&d!=Lx&&r.push(d);return r},E8=function(e){for(var a=e===Ot,r=w8(a?D0:t2(e)),i=[],d=0,n;r.length>d;)W1(ka,n=r[d++])&&(a?W1(Ot,n):!0)&&i.push(ka[n]);return i};Ii||(bt=function(){if(this instanceof bt)throw TypeError("Symbol is not a constructor!");var e=Qx(arguments.length>0?arguments[0]:void 0),a=function(r){this===Ot&&a.call(D0,r),W1(this,vt)&&W1(this[vt],e)&&(this[vt][e]=!1),Gn(this,e,zn(1,r))};return Hn&&$n&&Gn(Ot,e,{configurable:!0,set:a}),m8(e)},c8(bt[mr],"toString",function(){return this._k}),y8.f=I8,x8.f=a2,Rn().f=g8.f=S8,_i().f=v8,Jd().f=E8,Hn&&!A0()&&c8(Ot,"propertyIsEnumerable",v8,!0),kx.f=function(t){return m8(N0(t))});Et(Et.G+Et.W+Et.F*!Ii,{Symbol:bt});for(Ln="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Qn=0;Ln.length>Qn;)N0(Ln[Qn++]);var Ln,Qn;for(kn=$x(N0.store),jn=0;kn.length>jn;)jx(kn[jn++]);var kn,jn;Et(Et.S+Et.F*!Ii,"Symbol",{for:function(t){return W1(E0,t+="")?E0[t]:E0[t]=bt(t)},keyFor:function(e){if(!Yn(e))throw TypeError(e+" is not a symbol!");for(var a in E0)if(E0[a]===e)return a},useSetter:function(){$n=!0},useSimple:function(){$n=!1}});Et(Et.S+Et.F*!Ii,"Object",{create:Yx,defineProperty:a2,defineProperties:_8,getOwnPropertyDescriptor:I8,getOwnPropertyNames:S8,getOwnPropertySymbols:E8});Zd&&Et(Et.S+Et.F*(!Ii||b8(function(){var t=bt();return Xd([t])!="[null]"||Xd({a:t})!="{}"||Xd(Object(t))!="{}"})),"JSON",{stringify:function(e){for(var a=[e],r=1,i,d;arguments.length>r;)a.push(arguments[r++]);if(d=i=a[1],!(!zx(i)&&e===void 0||Yn(e)))return Kx(i)||(i=function(n,f){if(typeof d=="function"&&(f=d.call(this,n,f)),!Yn(f))return f}),a[1]=i,Xd.apply(Zd,a)}});bt[mr][h8]||Hr()(bt[mr],h8,bt[mr].valueOf);Jn(bt,"Symbol");Jn(Math,"Math",!0);Jn(e2.JSON,"JSON",!0)});var N8=T(()=>{l()});var D8=T(()=>{l();Wd()("asyncIterator")});var M8=T(()=>{l();Wd()("observable")});var B8=T((yP,T8)=>{l();C8();N8();D8();M8();T8.exports=ct().Symbol});var Zn=T((AP,q8)=>{l();q8.exports={default:B8(),__esModule:!0}});var V8=T(t6=>{"use strict";l();t6.__esModule=!0;var Wx=G5(),O8=P8(Wx),Jx=Zn(),vr=P8(Jx),e6=typeof vr.default=="function"&&typeof O8.default=="symbol"?function(t){return typeof t}:function(t){return t&&typeof vr.default=="function"&&t.constructor===vr.default&&t!==vr.default.prototype?"symbol":typeof t};function P8(t){return t&&t.__esModule?t:{default:t}}t6.default=typeof vr.default=="function"&&e6(O8.default)==="symbol"?function(t){return typeof t>"u"?"undefined":e6(t)}:function(t){return t&&typeof vr.default=="function"&&t.constructor===vr.default&&t!==vr.default.prototype?"symbol":typeof t>"u"?"undefined":e6(t)}});var F8=T((SP,R8)=>{l();var U8=kr();R8.exports=function(t,e,a,r){try{return r?e(U8(a)[0],a[1]):e(a)}catch(d){var i=t.return;throw i!==void 0&&U8(i.call(t)),d}}});var Q8=T((CP,L8)=>{l();var Xx=Kr(),Zx=qt()("iterator"),eA=Array.prototype;L8.exports=function(t){return t!==void 0&&(Xx.Array===t||eA[Zx]===t)}});var j8=T((DP,k8)=>{"use strict";l();var tA=La(),aA=wi();k8.exports=function(t,e,a){e in t?tA.f(t,e,aA(0,a)):t[e]=a}});var r6=T((TP,H8)=>{l();var a6=Vd(),rA=qt()("toStringTag"),iA=a6(function(){return arguments}())=="Arguments",dA=function(t,e){try{return t[e]}catch{}};H8.exports=function(t){var e,a,r;return t===void 0?"Undefined":t===null?"Null":typeof(a=dA(e=Object(t),rA))=="string"?a:iA?a6(e):(r=a6(e))=="Object"&&typeof e.callee=="function"?"Arguments":r}});var i6=T((qP,K8)=>{l();var pA=r6(),nA=qt()("iterator"),sA=Kr();K8.exports=ct().getIteratorMethod=function(t){if(t!=null)return t[nA]||t["@@iterator"]||sA[pA(t)]}});var G8=T((PP,$8)=>{l();var p6=qt()("iterator"),z8=!1;try{d6=[7][p6](),d6.return=function(){z8=!0},Array.from(d6,function(){throw 2})}catch{}var d6;$8.exports=function(t,e){if(!e&&!z8)return!1;var a=!1;try{var r=[7],i=r[p6]();i.next=function(){return{done:a=!0}},r[p6]=function(){return i},t(r)}catch{}return a}});var W8=T(()=>{"use strict";l();var fA=bn(),n6=Qa(),oA=_0(),lA=F8(),uA=Q8(),cA=In(),Y8=j8(),hA=i6();n6(n6.S+n6.F*!G8()(function(t){Array.from(t)}),"Array",{from:function(e){var a=oA(e),r=typeof this=="function"?this:Array,i=arguments.length,d=i>1?arguments[1]:void 0,n=d!==void 0,f=0,h=hA(a),v,I,S,O;if(n&&(d=fA(d,i>2?arguments[2]:void 0,2)),h!=null&&!(r==Array&&uA(h)))for(O=h.call(a),I=new r;!(S=O.next()).done;f++)Y8(I,f,n?lA(O,d,[S.value,f],!0):S.value);else for(v=cA(a.length),I=new r(v);v>f;f++)Y8(I,f,n?d(a[f],f):a[f]);return I.length=f,I}})});var X8=T((LP,J8)=>{l();S0();W8();J8.exports=ct().Array.from});var s6=T((kP,Z8)=>{l();Z8.exports={default:X8(),__esModule:!0}});var o6=T(f6=>{"use strict";l();f6.__esModule=!0;var mA=s6(),vA=bA(mA);function bA(t){return t&&t.__esModule?t:{default:t}}f6.default=function(t){if(Array.isArray(t)){for(var e=0,a=Array(t.length);e{"use strict";l();Object.defineProperty(br,"__esModule",{value:!0});br.flip=gA;br.constant=yA;br.on=xA;br.compose=AA;br.pipe=wA;br.curry=_A;function gA(t){return function(e,a){return t(a,e)}}function yA(t){return function(){return t}}function xA(t,e){return function(a,r){return t(e(a),e(r))}}function AA(){for(var t=this,e=arguments.length,a=Array(e),r=0;r-1;f--)n=a[f].call(t,n);return n}}function wA(){for(var t=this,e=arguments.length,a=Array(e),r=0;r=e?t.apply(this,r):e9(t,e,r)}}function _A(t){return e9(t,t.length,[])}});var i9=T((GP,r9)=>{"use strict";l();var a9=zr(),IA=Jd(),SA=_i(),EA=_0(),CA=_n(),r2=Object.assign;r9.exports=!r2||jr()(function(){var t={},e={},a=Symbol(),r="abcdefghijklmnopqrst";return t[a]=7,r.split("").forEach(function(i){e[i]=i}),r2({},t)[a]!=7||Object.keys(r2({},e)).join("")!=r})?function(e,a){for(var r=EA(e),i=arguments.length,d=1,n=IA.f,f=SA.f;i>d;)for(var h=CA(arguments[d++]),v=n?a9(h).concat(n(h)):a9(h),I=v.length,S=0,O;I>S;)f.call(h,O=v[S++])&&(r[O]=h[O]);return r}:r2});var d9=T(()=>{l();var l6=Qa();l6(l6.S+l6.F,"Object",{assign:i9()})});var n9=T((ZP,p9)=>{l();d9();p9.exports=ct().Object.assign});var f9=T((tV,s9)=>{l();s9.exports={default:n9(),__esModule:!0}});var c6=T(u6=>{"use strict";l();u6.__esModule=!0;var NA=f9(),DA=MA(NA);function MA(t){return t&&t.__esModule?t:{default:t}}u6.default=DA.default||function(t){for(var e=1;e{l();var h6=Qa(),TA=ct(),BA=jr();o9.exports=function(t,e){var a=(TA.Object||{})[t]||Object[t],r={};r[t]=e(a),h6(h6.S+h6.F*BA(function(){a(1)}),"Object",r)}});var u9=T(()=>{l();var qA=_0(),OA=zr();l9()("keys",function(){return function(e){return OA(qA(e))}})});var h9=T((oV,c9)=>{l();u9();c9.exports=ct().Object.keys});var m6=T((uV,m9)=>{l();m9.exports={default:h9(),__esModule:!0}});var b9=T((hV,v9)=>{l();var PA=Qr(),VA=Math.floor;v9.exports=function(e){return!PA(e)&&isFinite(e)&&VA(e)===e}});var y9=T(()=>{l();var g9=Qa();g9(g9.S,"Number",{isInteger:b9()})});var A9=T((yV,x9)=>{l();y9();x9.exports=ct().Number.isInteger});var _9=T((AV,w9)=>{l();w9.exports={default:A9(),__esModule:!0}});var b6=T(v6=>{"use strict";l();v6.__esModule=!0;v6.default=function(t,e){var a={};for(var r in t)e.indexOf(r)>=0||!Object.prototype.hasOwnProperty.call(t,r)||(a[r]=t[r]);return a}});var g6=T(tt=>{"use strict";l();Object.defineProperty(tt,"__esModule",{value:!0});function Yr(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var gt=Yr(o6()),j1=Yr(vn()),Yt=t9(),UA=Yr(c6()),RA=Yr(s6()),C9=Yr(m6()),FA=Yr(_9()),LA=Yr(b6()),QA=void 0,kA=function(t,e){return j1(this,QA),[].concat(gt(e),gt(t))}.bind(void 0),jA=Yt.curry(kA),HA=void 0,KA=function(t){return j1(this,HA),Array.isArray(t)?t:[t]}.bind(void 0),zA=void 0,$A=function(t,e){return j1(this,zA),e===t.length-1}.bind(void 0),N9=Yt.curry($A),GA=void 0,YA=function(t,e){return j1(this,GA),N9(t,e)?0:e+1}.bind(void 0),WA=Yt.curry(YA),D9=void 0,JA=function(t){return j1(this,D9),Math.max.apply(Math,gt(C9(t)))+1}.bind(void 0),XA=function(t){return j1(this,D9),RA("length"in t?t:UA({},t,{length:JA(t)}))}.bind(void 0),ZA=void 0,ew=function(t,e,a){return j1(this,ZA),[].concat(gt(a.slice(0,t)),gt(e),gt(a.slice(t+1)))}.bind(void 0),tw=Yt.curry(ew),M9=void 0,aw=function(t,e){return j1(this,M9),FA(t)&&t>=e}.bind(void 0),T9=function(t){return j1(this,M9),aw(Number(t),0)}.bind(void 0),rw=void 0,iw=function(t){var e=t.length,a=LA(t,["length"]);return j1(this,rw),C9(a).every(T9)}.bind(void 0),dw=void 0,pw=function(t,e){return j1(this,dw),[].concat(gt(t),gt(e))}.bind(void 0),nw=Yt.curry(pw),I9=void 0,sw=function(t,e,a,r){return j1(this,I9),r.reduce(function(i,d,n){return j1(this,I9),t(d,n,i)?e(i,d,n):i}.bind(this),a)}.bind(void 0),fw=Yt.curry(sw),S9=void 0,ow=function(t,e,a,r){j1(this,S9);var i=a;return r.every(function(d,n){j1(this,S9);var f=t(d,n,i);return f&&(i=e(i,d,n)),f}.bind(this)),i}.bind(void 0),lw=Yt.curry(ow),uw=void 0,cw=function(t,e,a){return j1(this,uw),[].concat(gt(a.slice(0,t)),gt(a.slice(t+e)))}.bind(void 0),hw=Yt.curry(cw),E9=void 0,mw=function(t,e){return j1(this,E9),[].concat(gt(Array(t))).map(function(){return j1(this,E9),e}.bind(this))}.bind(void 0),vw=Yt.curry(mw),bw=void 0,gw=function(t,e,a){return j1(this,bw),[].concat(gt(a.slice(0,t)),gt(e),gt(a.slice(t+e.length)))}.bind(void 0),yw=Yt.curry(gw),xw=void 0,Aw=function(t,e){return j1(this,xw),e<0?t.length-e:e}.bind(void 0),ww=Yt.curry(Aw);tt.append=jA;tt.convertIfNot=KA;tt.cycleNext=WA;tt.fromObject=XA;tt.insert=tw;tt.isKey=T9;tt.isLastIndex=N9;tt.isPossibleFromObject=iw;tt.prepend=nw;tt.reduceIf=fw;tt.reduceWhile=lw;tt.remove=hw;tt.repeat=vw;tt.replace=yw;tt.resolveIndex=ww});var q9=T((CV,B9)=>{"use strict";l();B9.exports=function t(e,a){if(e===a)return!0;var r=Array.isArray(e),i=Array.isArray(a),d;if(r&&i){if(e.length!=a.length)return!1;for(d=0;d{l();var y6=Qa();y6(y6.S+y6.F*!ur(),"Object",{defineProperty:La().f})});var V9=T((BV,P9)=>{l();O9();var _w=ct().Object;P9.exports=function(e,a,r){return _w.defineProperty(e,a,r)}});var R9=T((OV,U9)=>{l();U9.exports={default:V9(),__esModule:!0}});var F9=T(x6=>{"use strict";l();x6.__esModule=!0;var Iw=R9(),Sw=Ew(Iw);function Ew(t){return t&&t.__esModule?t:{default:t}}x6.default=function(t,e,a){return e in t?(0,Sw.default)(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}});var Q9=T((RV,L9)=>{l();var Cw=r6(),Nw=qt()("iterator"),Dw=Kr();L9.exports=ct().isIterable=function(t){var e=Object(t);return e[Nw]!==void 0||"@@iterator"in e||Dw.hasOwnProperty(Cw(e))}});var j9=T((LV,k9)=>{l();$d();S0();k9.exports=Q9()});var K9=T((kV,H9)=>{l();H9.exports={default:j9(),__esModule:!0}});var $9=T((HV,z9)=>{l();var Mw=kr(),Tw=i6();z9.exports=ct().getIterator=function(t){var e=Tw(t);if(typeof e!="function")throw TypeError(t+" is not iterable!");return Mw(e.call(t))}});var Y9=T((zV,G9)=>{l();$d();S0();G9.exports=$9()});var J9=T((GV,W9)=>{l();W9.exports={default:Y9(),__esModule:!0}});var Z9=T(A6=>{"use strict";l();A6.__esModule=!0;var Bw=K9(),qw=X9(Bw),Ow=J9(),Pw=X9(Ow);function X9(t){return t&&t.__esModule?t:{default:t}}A6.default=function(){function t(e,a){var r=[],i=!0,d=!1,n=void 0;try{for(var f=(0,Pw.default)(e),h;!(i=(h=f.next()).done)&&(r.push(h.value),!(a&&r.length===a));i=!0);}catch(v){d=!0,n=v}finally{try{!i&&f.return&&f.return()}finally{if(d)throw n}}return r}return function(e,a){if(Array.isArray(e))return e;if((0,qw.default)(Object(e)))return t(e,a);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var t7=T((XV,e7)=>{l();var Vw=zr(),Uw=hr(),Rw=_i().f;e7.exports=function(t){return function(e){for(var a=Uw(e),r=Vw(a),i=r.length,d=0,n=[],f;i>d;)Rw.call(a,f=r[d++])&&n.push(t?[f,a[f]]:a[f]);return n}}});var r7=T(()=>{l();var a7=Qa(),Fw=t7()(!0);a7(a7.S,"Object",{entries:function(e){return Fw(e)}})});var d7=T((rU,i7)=>{l();r7();i7.exports=ct().Object.entries});var n7=T((dU,p7)=>{l();p7.exports={default:d7(),__esModule:!0}});var I7=T($1=>{"use strict";l();function Jt(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Object.defineProperty($1,"__esModule",{value:!0});var $e=Jt(vn()),Pt=bo(),o7=Jt(V8()),_6=g6(),Lw=Jt(m6()),l7=Jt(o6()),Qw=Jt(q9()),kw=Jt(F9()),M0=Jt(c6()),jw=Jt(Z9()),Hw=Jt(n7()),Kw=Jt(b6()),zw=Jt(Zn()),$w=void 0,Gw=function(t,e){return $e(this,$w),e[t]}.bind(void 0),Wr=Pt.curry(Gw),u7=void 0,Yw=function(t){return $e(this,u7),t!==null&&(t===void 0?"undefined":o7(t))==="object"}.bind(void 0),c7=function(t){return $e(this,u7),Array.isArray(t)||Yw(t)}.bind(void 0),T0=void 0,Ww=function(t,e,a){return $e(this,T0),_6.isLastIndex(e,t)?a:h7(t+1,e,a)}.bind(void 0),Jw=function(t,e,a){return $e(this,T0),"Expected to find a composite at ["+String(e.join(", "))+"]["+String(t)+"], but instead got: "+(a===void 0?"undefined":o7(a))}.bind(void 0),Xw=function(t,e,a){if($e(this,T0),c7(a))return a;throw new Error(Jw(t,e,a))}.bind(void 0),h7=function(t,e,a){return $e(this,T0),a===void 0?void 0:Ww(t,e,Wr(e[t],Xw(t,e,a)))}.bind(void 0),Zw=function(t,e){return $e(this,T0),t.length===0?void 0:h7(0,t,e)}.bind(void 0),m7=Pt.curry(Zw),e_=void 0,i2=function(t){return $e(this,e_),Array.isArray(t)?[].concat(l7(t.keys())):Lw(t)}.bind(void 0),t_=void 0,a_=function(t,e,a){return $e(this,t_),Qw(m7(t,a),e)}.bind(void 0),r_=Pt.curry(a_),i_=void 0,d_=function(t,e){return $e(this,i_),Object.prototype.hasOwnProperty.call(e,t)}.bind(void 0),I6=Pt.curry(d_),s7=void 0,p_=function(t,e){$e(this,s7);var a=i2(t);return a.length===i2(e).length&&a.every(function(r){return $e(this,s7),I6(r,e)&&Wr(r,t)===Wr(r,e)}.bind(this))}.bind(void 0),v7=Pt.curry(p_),n_=void 0,b7=function(t){return $e(this,n_),i2(t).length===0}.bind(void 0),w6=void 0,s_=function(t,e){return $e(this,w6),Hw(e).reduce(function(a,r){var i=jw(r,2),d=i[0],n=i[1];return $e(this,w6),M0({},a,kw({},d,t(n,d,e)))}.bind(this),{})}.bind(void 0),f_=function(t,e){return $e(this,w6),Array.isArray(e)?e.map(t):s_(t,e)}.bind(void 0),o_=Pt.curry(f_),g7=void 0,l_=function(t,e){e[t];var a=Kw(e,[t]);return $e(this,g7),a}.bind(void 0),u_=function(t,e){return $e(this,g7),Array.isArray(e)?_6.remove(t,1,e):l_(t,e)}.bind(void 0),y7=Pt.curry(u_),c_=void 0,d2=function(t){return $e(this,c_),Array.isArray(t)?[].concat(l7(t)):M0({},t)}.bind(void 0),Wt=void 0,h_=function(t){$e(this,Wt);var e=d2(t);return{origin:e,current:e,previous:void 0}}.bind(void 0),x7=function(t,e,a){return $e(this,Wt),a[t]=e,Wr(t,a)}.bind(void 0),m_=function(t,e,a,r){return $e(this,Wt),M0({},r,{current:x7(t[e],a,r.current),previous:r.current})}.bind(void 0),v_=function(t,e,a){$e(this,Wt);var r=y7(t[e],a.current);return e===0?M0({},a,{current:r,origin:r}):M0({},a,{previous:x7(t[e-1],r,a.previous)})}.bind(void 0),A7=zw("composite.updateIn.removeAction"),b_=function(t,e,a,r){return $e(this,Wt),a===A7?v_(t,e,r):m_(t,e,a,r)}.bind(void 0),g_=function(t){return $e(this,Wt),typeof t=="number"?[]:{}}.bind(void 0),y_=function(t,e,a){return $e(this,Wt),I6(t,a)?d2(Wr(t,a)):g_(e)}.bind(void 0),x_=function(t,e,a,r){return $e(this,Wt),_6.isLastIndex(t,a)?e(Wr(t[a],r)):y_(t[a],t[a+1],r)}.bind(void 0),A_=function(t,e){return $e(this,Wt),function(a,r,i){return $e(this,Wt),b_(t,i,x_(t,e,i,a.current),a)}.bind(this)}.bind(void 0),w_=function(t,e,a){return $e(this,Wt),t.length===0?a:t.reduce(A_(t,e),h_(a)).origin}.bind(void 0),B0=Pt.curry(w_);B0.remove=A7;var w7=void 0,__=function(){return $e(this,w7),B0.remove}.bind(void 0),I_=function(t,e){return $e(this,w7),B0(t,__,e)}.bind(void 0),S_=Pt.curry(I_),E_=void 0,C_=function(t,e,a){$e(this,E_);var r=d2(a);return r[t]=e,r}.bind(void 0),N_=Pt.curry(C_),f7=void 0,D_=function(t,e,a){return $e(this,f7),B0(t,function(){return $e(this,f7),e}.bind(this),a)}.bind(void 0),M_=Pt.curry(D_),_7=void 0,T_=function(t,e){return $e(this,_7),Boolean(Number(t)^Number(e))}.bind(void 0),B_=function(t,e){return $e(this,_7),t===e||!T_(Array.isArray(t),Array.isArray(e))&&v7(t,e)}.bind(void 0),q_=Pt.curry(B_),O_=void 0,P_=function(t){return $e(this,O_),b7(t)?void 0:t}.bind(void 0);$1.get=Wr,$1.getIn=m7,$1.getKeys=i2,$1.hasIn=r_,$1.hasKey=I6,$1.haveSameProps=v7,$1.is=c7,$1.isEmpty=b7,$1.map=o_,$1.remove=y7,$1.removeIn=S_,$1.set=N_,$1.setIn=M_,$1.shallowCopy=d2,$1.shallowEqual=q_,$1.toUndefinedIfEmpty=P_,$1.updateIn=B0});var E7=T((fU,S7)=>{l();S7.exports=function(t,e){return{value:e,done:!!t}}});var p2=T((lU,C7)=>{l();C7.exports={}});var n2=T((cU,N7)=>{l();var V_=an(),U_=xi();N7.exports=function(t){return V_(U_(t))}});var M7=T((mU,D7)=>{l();var R_=Nd(),F_=Math.max,L_=Math.min;D7.exports=function(t,e){return t=R_(t),t<0?F_(t+e,0):L_(t,e)}});var s2=T((bU,T7)=>{l();var Q_=n2(),k_=Dd(),j_=M7();T7.exports=function(t){return function(e,a,r){var i=Q_(e),d=k_(i.length),n=j_(r,d),f;if(t&&a!=a){for(;d>n;)if(f=i[n++],f!=f)return!0}else for(;d>n;n++)if((t||n in i)&&i[n]===a)return t||n||0;return!t&&-1}}});var f2=T((yU,q7)=>{l();var B7=pn()("keys"),H_=Sd();q7.exports=function(t){return B7[t]||(B7[t]=H_(t))}});var V7=T((AU,P7)=>{l();var O7=b0(),K_=n2(),z_=s2()(!1),$_=f2()("IE_PROTO");P7.exports=function(t,e){var a=K_(t),r=0,i=[],d;for(d in a)d!=$_&&O7(a,d)&&i.push(d);for(;e.length>r;)O7(a,d=e[r++])&&(~z_(i,d)||i.push(d));return i}});var S6=T((_U,U7)=>{l();U7.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var E6=T((SU,R7)=>{l();var G_=V7(),Y_=S6();R7.exports=Object.keys||function(e){return G_(e,Y_)}});var L7=T((CU,F7)=>{l();var W_=v0(),J_=bi(),X_=E6();F7.exports=gi()?Object.defineProperties:function(e,a){J_(e);for(var r=X_(a),i=r.length,d=0,n;i>d;)W_.f(e,n=r[d++],a[n]);return e}});var j7=T((DU,k7)=>{l();var Q7=fr().document;k7.exports=Q7&&Q7.documentElement});var z7=T((TU,K7)=>{l();var Z_=bi(),eI=L7(),H7=S6(),tI=f2()("IE_PROTO"),C6=function(){},N6="prototype",o2=function(){var t=Gp()("iframe"),e=H7.length,a="<",r=">",i;for(t.style.display="none",j7().appendChild(t),t.src="javascript:",i=t.contentWindow.document,i.open(),i.write(a+"script"+r+"document.F=Object"+a+"/script"+r),i.close(),o2=i.F;e--;)delete o2[N6][H7[e]];return o2()};K7.exports=Object.create||function(e,a){var r;return e!==null?(C6[N6]=Z_(e),r=new C6,C6[N6]=null,r[tI]=e):r=o2(),a===void 0?r:eI(r,a)}});var D6=T((qU,G7)=>{l();var aI=v0().f,rI=b0(),$7=Gt()("toStringTag");G7.exports=function(t,e,a){t&&!rI(t=a?t:t.prototype,$7)&&aI(t,$7,{configurable:!0,value:e})}});var J7=T((PU,W7)=>{"use strict";l();var iI=z7(),dI=Yp(),pI=D6(),Y7={};or()(Y7,Gt()("iterator"),function(){return this});W7.exports=function(t,e,a){t.prototype=iI(Y7,{next:dI(1,a)}),pI(t,e+" Iterator")}});var el=T((UU,Z7)=>{l();var nI=b0(),sI=rn(),X7=f2()("IE_PROTO"),fI=Object.prototype;Z7.exports=Object.getPrototypeOf||function(t){return t=sI(t),nI(t,X7)?t[X7]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?fI:null}});var nl=T((FU,pl)=>{"use strict";l();var tl=dn(),M6=Bt(),oI=g0(),al=or(),rl=p2(),lI=J7(),uI=D6(),cI=el(),q0=Gt()("iterator"),T6=!([].keys&&"next"in[].keys()),hI="@@iterator",il="keys",l2="values",dl=function(){return this};pl.exports=function(t,e,a,r,i,d,n){lI(a,e,r);var f=function(oe){if(!T6&&oe in S)return S[oe];switch(oe){case il:return function(){return new a(this,oe)};case l2:return function(){return new a(this,oe)}}return function(){return new a(this,oe)}},h=e+" Iterator",v=i==l2,I=!1,S=t.prototype,O=S[q0]||S[hI]||i&&S[i],R=O||f(i),V=i?v?f("entries"):R:void 0,L=e=="Array"&&S.entries||O,$,X,ie;if(L&&(ie=cI(L.call(new t)),ie!==Object.prototype&&ie.next&&(uI(ie,h,!0),!tl&&typeof ie[q0]!="function"&&al(ie,q0,dl))),v&&O&&O.name!==l2&&(I=!0,R=function(){return O.call(this)}),(!tl||n)&&(T6||I||!S[q0])&&al(S,q0,R),rl[e]=R,rl[h]=dl,i)if($={values:v?R:f(l2),keys:d?R:f(il),entries:V},n)for(X in $)X in S||oI(S,X,$[X]);else M6(M6.P+M6.F*(T6||I),e,$);return $}});var ol=T((QU,fl)=>{"use strict";l();var B6=x0(),u2=E7(),sl=p2(),mI=n2();fl.exports=nl()(Array,"Array",function(t,e){this._t=mI(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,a=this._i++;return!t||a>=t.length?(this._t=void 0,u2(1)):e=="keys"?u2(0,a):e=="values"?u2(0,t[a]):u2(0,[a,t[a]])},"values");sl.Arguments=sl.Array;B6("keys");B6("values");B6("entries")});var xl=T(()=>{l();var ll=ol(),vI=E6(),bI=g0(),gI=fr(),ul=or(),gl=p2(),yl=Gt(),cl=yl("iterator"),hl=yl("toStringTag"),ml=gl.Array,vl={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(q6=vI(vl),c2=0;c2{"use strict";l();var yI=m0();Al.exports=function(t,e){return!!t&&yI(function(){e?t.call(null,function(){},1):t.call(null)})}});var wl=T(()=>{"use strict";l();var P6=Bt(),xI=Ai()(0),AI=V0()([].forEach,!0);P6(P6.P+P6.F*!AI,"Array",{forEach:function(e){return xI(this,e,arguments[1])}})});var Il=T((JU,_l)=>{l();function wI(t){if(Array.isArray(t)){for(var e=0,a=new Array(t.length);e{l();function _I(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}Sl.exports=_I});var Nl=T((tR,Cl)=>{l();function II(){throw new TypeError("Invalid attempt to spread non-iterable instance")}Cl.exports=II});var Ml=T((rR,Dl)=>{l();var SI=Il(),EI=El(),CI=Nl();function NI(t){return SI(t)||EI(t)||CI()}Dl.exports=NI});var Tl=T(()=>{"use strict";l();var V6=Bt(),DI=Ai()(1);V6(V6.P+V6.F*!V0()([].map,!0),"Array",{map:function(e){return DI(this,e,arguments[1])}})});var ql=T((sR,Bl)=>{l();var MI=Nd(),TI=xi();Bl.exports=function(t){return function(e,a){var r=String(TI(e)),i=MI(a),d=r.length,n,f;return i<0||i>=d?t?"":void 0:(n=r.charCodeAt(i),n<55296||n>56319||i+1===d||(f=r.charCodeAt(i+1))<56320||f>57343?t?r.charAt(i):n:t?r.slice(i,i+2):(n-55296<<10)+(f-56320)+65536)}}});var Pl=T((oR,Ol)=>{"use strict";l();var BI=ql()(!0);Ol.exports=function(t,e,a){return e+(a?BI(t,e).length:1)}});var Ul=T((uR,Vl)=>{l();var U6=y0(),qI=Gt()("toStringTag"),OI=U6(function(){return arguments}())=="Arguments",PI=function(t,e){try{return t[e]}catch{}};Vl.exports=function(t){var e,a,r;return t===void 0?"Undefined":t===null?"Null":typeof(a=PI(e=Object(t),qI))=="string"?a:OI?U6(e):(r=U6(e))=="Object"&&typeof e.callee=="function"?"Arguments":r}});var Fl=T((hR,Rl)=>{"use strict";l();var VI=Ul(),UI=RegExp.prototype.exec;Rl.exports=function(t,e){var a=t.exec;if(typeof a=="function"){var r=a.call(t,e);if(typeof r!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return r}if(VI(t)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return UI.call(t,e)}});var Ql=T((vR,Ll)=>{"use strict";l();var RI=bi();Ll.exports=function(){var t=RI(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}});var L6=T((gR,jl)=>{"use strict";l();var FI=Ql(),h2=RegExp.prototype.exec,LI=String.prototype.replace,kl=h2,m2="lastIndex",R6=function(){var t=/a/,e=/b*/g;return h2.call(t,"a"),h2.call(e,"a"),t[m2]!==0||e[m2]!==0}(),F6=/()??/.exec("")[1]!==void 0,QI=R6||F6;QI&&(kl=function(e){var a=this,r,i,d,n;return F6&&(i=new RegExp("^"+a.source+"$(?!\\s)",FI.call(a))),R6&&(r=a[m2]),d=h2.call(a,e),R6&&d&&(a[m2]=a.global?d.index+d[0].length:r),F6&&d&&d.length>1&&LI.call(d[0],i,function(){for(n=1;n{"use strict";l();var Hl=L6();Bt()({target:"RegExp",proto:!0,forced:Hl!==/./.exec},{exec:Hl})});var Gl=T((_R,$l)=>{"use strict";l();Kl();var kI=g0(),jI=or(),Q6=m0(),HI=xi(),zl=Gt(),KI=L6(),zI=zl("species"),$I=!Q6(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$")!=="7"}),GI=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var a="ab".split(t);return a.length===2&&a[0]==="a"&&a[1]==="b"}();$l.exports=function(t,e,a){var r=zl(t),i=!Q6(function(){var I={};return I[r]=function(){return 7},""[t](I)!=7}),d=i?!Q6(function(){var I=!1,S=/a/;return S.exec=function(){return I=!0,null},t==="split"&&(S.constructor={},S.constructor[zI]=function(){return S}),S[r](""),!I}):void 0;if(!i||!d||t==="replace"&&!$I||t==="split"&&!GI){var n=/./[r],f=a(HI,r,""[t],function(S,O,R,V,L){return O.exec===KI?i&&!L?{done:!0,value:n.call(O,R,V)}:{done:!0,value:S.call(R,O,V)}:{done:!1}}),h=f[0],v=f[1];kI(String.prototype,t,h),jI(RegExp.prototype,r,e==2?function(I,S){return v.call(I,this,S)}:function(I){return v.call(I,this)})}}});var Wl=T(()=>{"use strict";l();var YI=bi(),WI=Dd(),JI=Pl(),Yl=Fl();Gl()("match",1,function(t,e,a,r){return[function(d){var n=t(this),f=d?.[e];return f!==void 0?f.call(d,n):new RegExp(d)[e](String(n))},function(i){var d=r(a,i,this);if(d.done)return d.value;var n=YI(i),f=String(this);if(!n.global)return Yl(n,f);var h=n.unicode;n.lastIndex=0;for(var v=[],I=0,S;(S=Yl(n,f))!==null;){var O=String(S[0]);v[I]=O,O===""&&(n.lastIndex=JI(f,WI(n.lastIndex),h)),I++}return I===0?null:v}]})});var Jl=T(()=>{"use strict";l();var k6=Bt(),XI=Ai()(3);k6(k6.P+k6.F*!V0()([].some,!0),"Array",{some:function(e){return XI(this,e,arguments[1])}})});var Zl=T((TR,Xl)=>{l();Xl.exports=function(t,e,a){var r=a===void 0;switch(e.length){case 0:return r?t():t.call(a);case 1:return r?t(e[0]):t.call(a,e[0]);case 2:return r?t(e[0],e[1]):t.call(a,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(a,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(a,e[0],e[1],e[2],e[3])}return t.apply(a,e)}});var au=T((qR,tu)=>{"use strict";l();var ZI=Zp(),eS=Lr(),tS=Zl(),eu=[].slice,j6={},aS=function(t,e,a){if(!(e in j6)){for(var r=[],i=0;i{l();var ru=Bt();ru(ru.P,"Function",{bind:au()})});var K6=T((RR,iu)=>{l();function rS(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}iu.exports=rS});var nu=T(Jr=>{"use strict";l();Object.defineProperty(Jr,"__esModule",{value:!0});function iS(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Tl();Wl();Jl();H6();var ba=iS(K6()),z6=void 0,dS=function(e){var a=this;return ba(this,z6),e.map(function(r){var i=r.column,d=r.line;return ba(this,a),"".concat(d,":").concat(i)}.bind(this)).join("; ")}.bind(void 0),pS=function(e){var a=e.message,r=e.locations;return ba(this,z6),a+(r?" (".concat(dS(r),")"):"")}.bind(void 0),nS=function(e){return ba(this,z6),e.map(pS).join(` -`)}.bind(void 0),du=void 0,sS=/^\s*(query|mutation|subscription|\{)/,fS=function(e){return ba(this,du),e==="{"?"query":e}.bind(void 0),oS=function(e){ba(this,du);var a=e.match(sS);if(!a)throw new TypeError(`Invalid operation: -`.concat(e));return fS(a[1])}.bind(void 0),pu=void 0,lS=function(e){return ba(this,pu),e.kind==="OperationDefinition"&&e.operation==="subscription"}.bind(void 0),uS=function(e){return ba(this,pu),e.definitions.some(lS)}.bind(void 0),cS=void 0,hS=function(e){var a=e.query,r=e.variables;return ba(this,cS),r?{operation:a,variables:r}:{operation:a}}.bind(void 0),mS=void 0,vS=function(e){var a=e.operation,r=e.variables;return ba(this,mS),r?{query:a,variables:r}:{query:a}}.bind(void 0);Jr.errorsToString=nS;Jr.getOperationType=oS;Jr.hasSubscription=uS;Jr.requestFromCompat=hS;Jr.requestToCompat=vS});var lu=T(a4=>{"use strict";l();Object.defineProperty(a4,"__esModule",{value:!0});var W6=function(){function t(e,a){for(var r=0;r1,n=!1,f=arguments[1],h=f;return new i(function(v){return r.subscribe({next:function(I){var S=!n;if(n=!0,!S||d)try{h=a(h,I)}catch(O){return v.error(O)}else h=I},error:function(I){v.error(I)},complete:function(){if(!n&&!d)return v.error(new TypeError("Cannot reduce an empty sequence"));v.next(h),v.complete()}})})}},{key:"concat",value:function(){for(var a=this,r=arguments.length,i=Array(r),d=0;d=0&&n.splice(S,1),h()}});n.push(I)},error:function(v){d.error(v)},complete:function(){h()}});function h(){f.closed&&n.length===0&&d.complete()}return function(){n.forEach(function(v){return v.unsubscribe()}),f.unsubscribe()}})}},{key:G6,value:function(){return this}}],[{key:"from",value:function(a){var r=typeof this=="function"?this:t;if(a==null)throw new TypeError(a+" is not an object");var i=b2(a,G6);if(i){var d=i.call(a);if(Object(d)!==d)throw new TypeError(d+" is not an object");return gS(d)&&d.constructor===r?d:new r(function(n){return d.subscribe(n)})}if(Z6("iterator")&&(i=b2(a,bS),i))return new r(function(n){v2(function(){if(!n.closed){var f=!0,h=!1,v=void 0;try{for(var I=i.call(a)[Symbol.iterator](),S;!(f=(S=I.next()).done);f=!0){var O=S.value;if(n.next(O),n.closed)return}}catch(R){h=!0,v=R}finally{try{!f&&I.return&&I.return()}finally{if(h)throw v}}n.complete()}})});if(Array.isArray(a))return new r(function(n){v2(function(){if(!n.closed){for(var f=0;f{l();uu.exports=lu().Observable});var mu=T(()=>{"use strict";l();var hu=Bt(),wS=s2()(!0);hu(hu.P,"Array",{includes:function(e){return wS(this,e,arguments.length>1?arguments[1]:void 0)}});x0()("includes")});var bu=T((YR,vu)=>{l();var _S=Lr(),IS=y0(),SS=Gt()("match");vu.exports=function(t){var e;return _S(t)&&((e=t[SS])!==void 0?!!e:IS(t)=="RegExp")}});var yu=T((JR,gu)=>{l();var ES=bu(),CS=xi();gu.exports=function(t,e,a){if(ES(e))throw TypeError("String#"+a+" doesn't accept regex!");return String(CS(t))}});var Au=T((ZR,xu)=>{l();var NS=Gt()("match");xu.exports=function(t){var e=/./;try{"/./"[t](e)}catch{try{return e[NS]=!1,!"/./"[t](e)}catch{}}return!0}});var _u=T(()=>{"use strict";l();var r4=Bt(),DS=yu(),wu="includes";r4(r4.P+r4.F*Au()(wu),"String",{includes:function(e){return!!~DS(this,e,wu).indexOf(e,arguments.length>1?arguments[1]:void 0)}})});var Su=T((iF,Iu)=>{l();function MS(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}Iu.exports=MS});var Cu=T((pF,Eu)=>{l();var TS=Su();function BS(t){for(var e=1;e{l();function qS(t,e){if(t==null)return{};var a={},r=Object.keys(t),i,d;for(d=0;d=0)&&(a[i]=t[i]);return a}Nu.exports=qS});var Tu=T((oF,Mu)=>{l();var OS=Du();function PS(t,e){if(t==null)return{};var a=OS(t,e),r,i;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(t);for(i=0;i=0)&&(!Object.prototype.propertyIsEnumerable.call(t,r)||(a[r]=t[r]))}return a}Mu.exports=PS});var qu=T(()=>{"use strict";l();var i4=Bt(),VS=s2()(!1),d4=[].indexOf,Bu=!!d4&&1/[1].indexOf(1,-0)<0;i4(i4.P+i4.F*(Bu||!V0()(d4)),"Array",{indexOf:function(e){return Bu?d4.apply(this,arguments)||0:VS(this,e,arguments[1])}})});var uc=T(za=>{"use strict";l();Object.defineProperty(za,"__esModule",{value:!0});function F0(t){return t&&typeof t=="object"&&"default"in t?t.default:t}oo();uo();mo();var p4=I7();Ep();xl();wl();var R0=F0(Ml()),n4=nu(),US=F0(cu());mu();_u();var Xt=F0(Cu()),g2=F0(Tu());qu();var y2=g6();H6();var G=F0(K6()),RS=void 0,s4=function(e){var a=e.activeObservers,r=e.canceledObservers,i=g2(e,["activeObservers","canceledObservers"]);return G(this,RS),Xt({},i,{isActive:!1,activeObservers:[],canceledObservers:R0(a).concat(R0(r))})}.bind(void 0),f4=void 0,FS=function(e,a){var r=this;return G(this,f4),function(i){return G(this,r),i[e]&&i[e](a)}.bind(this)}.bind(void 0),LS=function(e){var a=e.name;return G(this,f4),"on".concat(a)}.bind(void 0),o4=function(e,a){return G(this,f4),e.forEach(FS(LS(a),a.payload))}.bind(void 0),QS=void 0,Uu=function(e,a){return G(this,QS),o4(e.canceledObservers,a),e}.bind(void 0),L0={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},Q0=void 0,kS=function(e){return G(this,Q0),{payload:e,name:L0.start}}.bind(void 0),jS=function(e){return G(this,Q0),{payload:e,name:L0.result}}.bind(void 0),x2=function(e){return G(this,Q0),{payload:e,name:L0.error}}.bind(void 0),HS=function(){return G(this,Q0),{name:L0.cancel,payload:void 0}}.bind(void 0),KS=function(e){return G(this,Q0),{payload:e,name:L0.abort}}.bind(void 0),Ru=void 0,zS=function(e){return G(this,Ru),Xt({},e,{canceledObservers:[]})}.bind(void 0),k0=function(e){return G(this,Ru),e.canceledObservers.length>0?zS(Uu(e,HS())):e}.bind(void 0),$S=void 0,Fu=function(e,a,r){return G(this,$S),e.findIndex(p4.hasIn([a],r))}.bind(void 0),GS=void 0,l4=function(e){var a=this;return G(this,GS),function(r){return G(this,a),y2.replace(Fu(r,"request",e.request),[e],r)}.bind(this)}.bind(void 0),YS=void 0,j0=function(e){var a=this;return G(this,YS),function(r){return G(this,a),y2.remove(Fu(r,"request",e.request),1,r)}.bind(this)}.bind(void 0),WS=void 0,ja=function(e,a){return G(this,WS),e.notifiers=a(e.notifiers),e}.bind(void 0),JS=void 0,Ha=function(e,a){return G(this,JS),ja(e,l4(a)),a}.bind(void 0),Zt={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},Lu=void 0,XS=function(e){var a=e.activeObservers,r=e.canceledObservers;return G(this,Lu),R0(a).concat(R0(r))}.bind(void 0),Qu=function(e,a){return G(this,Lu),o4(XS(e),a),e}.bind(void 0),ZS=void 0,u4=function(e,a,r){return G(this,ZS),ja(e,j0(Qu(a,KS(r))))}.bind(void 0),eE=void 0,A2=function(e,a,r){return G(this,eE),e.find(p4.hasIn([a],r))}.bind(void 0),tE=void 0,w2=function(e,a){return G(this,tE),o4(e.activeObservers,a),e}.bind(void 0),aE=void 0,ku=function(e,a){return G(this,aE),w2(e,jS(a))}.bind(void 0),rE=void 0,ju=function(e){return G(this,rE),w2(e,kS(e))}.bind(void 0),iE=void 0,Hu=function(e){return G(this,iE),k0(Xt({},e,{isActive:!0,requestStatus:Zt.pending,subscriptionId:void 0}))}.bind(void 0),dE=void 0,Ku=function(e,a){return G(this,dE),e.receive("ok",a.onSucceed).receive("error",a.onError).receive("timeout",a.onTimeout)}.bind(void 0),c4=void 0,pE=function(e,a){var r=this;return G(this,c4),function(i){var d=this;return G(this,r),function(){G(this,d);var n=A2(e.notifiers,"request",a);if(n){for(var f=arguments.length,h=new Array(f),v=0;v0}.bind(void 0),QE=function(e){var a=this;return G(this,ga),function(){G(this,a),LE(e)&&rc(e)}.bind(this)}.bind(void 0),kE="__absinthe__:control",jE=function(e){G(this,ga);var a={phoenixSocket:e,channel:e.channel(kE),channelJoinCreated:!1,notifiers:[]};return e.onOpen(QE(a)),e.onClose(FE(a)),e.onMessage(PE(a)),a}.bind(void 0),HE=void 0,KE=function(e,a){var r=e.activeObservers,i=g2(e,["activeObservers"]);return G(this,HE),Xt({},i,{activeObservers:R0(r).concat([a]),isActive:!0})}.bind(void 0),zE=void 0,pc=function(e,a,r){return G(this,zE),Ha(e,KE(a,r))}.bind(void 0),nc=void 0,$E=function(e,a){return G(this,nc),{operationType:a,request:e,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:Zt.pending,subscriptionId:void 0}}.bind(void 0),GE=function(e){return G(this,nc),$E(e,n4.getOperationType(e.operation))}.bind(void 0),YE=void 0,WE=function(e){return G(this,YE),e.isActive?e:Xt({},e,{isActive:!0})}.bind(void 0),Zr=void 0,JE=function(e){G(this,Zr),e.phoenixSocket.isConnected()?rc(e):e.phoenixSocket.connect()}.bind(void 0),XE=function(e,a){G(this,Zr);var r=GE(a);return ja(e,y2.append([r])),e.channelJoinCreated?ac(e,r):JE(e),r}.bind(void 0),Vu=function(e,a){return G(this,Zr),Ha(e,WE(a))}.bind(void 0),ZE=function(e,a){return G(this,Zr),a.requestStatus===Zt.sending?Vu(e,k0(a)):Vu(e,a)}.bind(void 0),eC=function(e,a){return G(this,Zr),a.isActive?a:ZE(e,a)}.bind(void 0),tC=function(e,a){G(this,Zr);var r=A2(e.notifiers,"request",a);return r&&eC(e,r)}.bind(void 0),aC=function(e,a){return G(this,Zr),tC(e,a)||XE(e,a)}.bind(void 0),S2=void 0,rC=function(e,a,r,i){var d=this,n=a.request;return G(this,S2),function(){G(this,d);var f=A2(e.notifiers,"request",n);i(e,f,f?r:void 0)}.bind(this)}.bind(void 0),iC=function(e,a){var r=this,i=e.operationType;return G(this,S2),function(d){G(this,r),a.next(d),i!=="subscription"&&a.complete()}.bind(this)}.bind(void 0),dC=function(e,a,r){return G(this,S2),Xt({},a,{onAbort:r.error.bind(r),onResult:iC(e,r)})}.bind(void 0),pC=function(e,a){var r=this,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},d=i.unsubscribe,n=g2(i,["unsubscribe"]);return G(this,S2),new US(function(f){G(this,r);var h=dC(a,n,f);return pc(e,a,h),d&&rC(e,a,h,d)}.bind(this))}.bind(void 0),sc=void 0,nC=function(e,a){return G(this,sc),y2.remove(e.indexOf(a),1,e)}.bind(void 0),sC=function(e,a){var r=e.activeObservers,i=g2(e,["activeObservers"]);return G(this,sc),Xt({},i,{activeObservers:nC(r,a)})}.bind(void 0),fc=void 0,fC=function(e,a){if(G(this,fc),e.activeObservers.includes(a))return e;throw new Error("Observer is not attached to notifier")}.bind(void 0),oc=function(e,a,r){return G(this,fc),ja(e,l4(sC(fC(a,r),r)))}.bind(void 0),lc=void 0,oC=function(e,a,r){return G(this,lc),a.activeObservers.length===1?tc(e,a):oc(e,a,r)}.bind(void 0),lC=function(e,a,r){return G(this,lc),a.isActive?oC(e,a,r):e}.bind(void 0);za.cancel=tc;za.create=jE;za.observe=pc;za.send=aC;za.toObservable=pC;za.unobserve=oc;za.unobserveOrCancel=lC});var h4=T((bF,K0)=>{l();var{Socket:uC}=Ep(),cC=mf(),H0=uc();K0.exports.absintheCreate=function(t){let e=new uC(t,{transport:cC});return H0.create(e)};K0.exports.absintheSend=function(t,e){return H0.send(t,{operation:e})};K0.exports.absintheObserve=function(t,e,a){return new Promise((r,i)=>{H0.observe(t,e,{onStart:function(){r(e)},onError:function(d){H0.cancel(t,e),i(d)},onResult:function(d){a(d)}})})};K0.exports.absintheCancel=function(t,e){H0.cancel(t,e)}});var Sc=T((wF,bC)=>{bC.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var xa=T((Ec,v4)=>{l();(function(t,e){"use strict";function a(C,p){if(!C)throw new Error(p||"Assertion failed")}function r(C,p){C.super_=p;var o=function(){};o.prototype=p.prototype,C.prototype=new o,C.prototype.constructor=C}function i(C,p,o){if(i.isBN(C))return C;this.negative=0,this.words=null,this.length=0,this.red=null,C!==null&&((p==="le"||p==="be")&&(o=p,p=10),this._init(C||0,p||10,o||"be"))}typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var d;try{d=Ge("buffer").Buffer}catch{}i.isBN=function(p){return p instanceof i?!0:p!==null&&typeof p=="object"&&p.constructor.wordSize===i.wordSize&&Array.isArray(p.words)},i.max=function(p,o){return p.cmp(o)>0?p:o},i.min=function(p,o){return p.cmp(o)<0?p:o},i.prototype._init=function(p,o,c){if(typeof p=="number")return this._initNumber(p,o,c);if(typeof p=="object")return this._initArray(p,o,c);o==="hex"&&(o=16),a(o===(o|0)&&o>=2&&o<=36),p=p.toString().replace(/\s+/g,"");var g=0;p[0]==="-"&&g++,o===16?this._parseHex(p,g):this._parseBase(p,o,g),p[0]==="-"&&(this.negative=1),this.strip(),c==="le"&&this._initArray(this.toArray(),o,c)},i.prototype._initNumber=function(p,o,c){p<0&&(this.negative=1,p=-p),p<67108864?(this.words=[p&67108863],this.length=1):p<4503599627370496?(this.words=[p&67108863,p/67108864&67108863],this.length=2):(a(p<9007199254740992),this.words=[p&67108863,p/67108864&67108863,1],this.length=3),c==="le"&&this._initArray(this.toArray(),o,c)},i.prototype._initArray=function(p,o,c){if(a(typeof p.length=="number"),p.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(p.length/3),this.words=new Array(this.length);for(var g=0;g=0;g-=3)D=p[g]|p[g-1]<<8|p[g-2]<<16,this.words[A]|=D<>>26-P&67108863,P+=24,P>=26&&(P-=26,A++);else if(c==="le")for(g=0,A=0;g>>26-P&67108863,P+=24,P>=26&&(P-=26,A++);return this.strip()};function n(C,p,o){for(var c=0,g=Math.min(C.length,o),A=p;A=49&&D<=54?c|=D-49+10:D>=17&&D<=22?c|=D-17+10:c|=D&15}return c}i.prototype._parseHex=function(p,o){this.length=Math.ceil((p.length-o)/6),this.words=new Array(this.length);for(var c=0;c=o;c-=6)A=n(p,c,c+6),this.words[g]|=A<>>26-D&4194303,D+=24,D>=26&&(D-=26,g++);c+6!==o&&(A=n(p,o,c+6),this.words[g]|=A<>>26-D&4194303),this.strip()};function f(C,p,o,c){for(var g=0,A=Math.min(C.length,o),D=p;D=49?g+=P-49+10:P>=17?g+=P-17+10:g+=P}return g}i.prototype._parseBase=function(p,o,c){this.words=[0],this.length=1;for(var g=0,A=1;A<=67108863;A*=o)g++;g--,A=A/o|0;for(var D=p.length-c,P=D%g,M=Math.min(D,D-P)+c,u=0,B=c;B1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var h=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],v=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],I=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(p,o){p=p||10,o=o|0||1;var c;if(p===16||p==="hex"){c="";for(var g=0,A=0,D=0;D>>24-g&16777215,A!==0||D!==this.length-1?c=h[6-M.length]+M+c:c=M+c,g+=2,g>=26&&(g-=26,D--)}for(A!==0&&(c=A.toString(16)+c);c.length%o!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(p===(p|0)&&p>=2&&p<=36){var u=v[p],B=I[p];c="";var ae=this.clone();for(ae.negative=0;!ae.isZero();){var se=ae.modn(B).toString(p);ae=ae.idivn(B),ae.isZero()?c=se+c:c=h[u-se.length]+se+c}for(this.isZero()&&(c="0"+c);c.length%o!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}a(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var p=this.words[0];return this.length===2?p+=this.words[1]*67108864:this.length===3&&this.words[2]===1?p+=4503599627370496+this.words[1]*67108864:this.length>2&&a(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-p:p},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(p,o){return a(typeof d<"u"),this.toArrayLike(d,p,o)},i.prototype.toArray=function(p,o){return this.toArrayLike(Array,p,o)},i.prototype.toArrayLike=function(p,o,c){var g=this.byteLength(),A=c||Math.max(1,g);a(g<=A,"byte array longer than desired length"),a(A>0,"Requested array length <= 0"),this.strip();var D=o==="le",P=new p(A),M,u,B=this.clone();if(D){for(u=0;!B.isZero();u++)M=B.andln(255),B.iushrn(8),P[u]=M;for(;u=4096&&(c+=13,o>>>=13),o>=64&&(c+=7,o>>>=7),o>=8&&(c+=4,o>>>=4),o>=2&&(c+=2,o>>>=2),c+o},i.prototype._zeroBits=function(p){if(p===0)return 26;var o=p,c=0;return(o&8191)===0&&(c+=13,o>>>=13),(o&127)===0&&(c+=7,o>>>=7),(o&15)===0&&(c+=4,o>>>=4),(o&3)===0&&(c+=2,o>>>=2),(o&1)===0&&c++,c},i.prototype.bitLength=function(){var p=this.words[this.length-1],o=this._countBits(p);return(this.length-1)*26+o};function S(C){for(var p=new Array(C.bitLength()),o=0;o>>g}return p}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var p=0,o=0;op.length?this.clone().ior(p):p.clone().ior(this)},i.prototype.uor=function(p){return this.length>p.length?this.clone().iuor(p):p.clone().iuor(this)},i.prototype.iuand=function(p){var o;this.length>p.length?o=p:o=this;for(var c=0;cp.length?this.clone().iand(p):p.clone().iand(this)},i.prototype.uand=function(p){return this.length>p.length?this.clone().iuand(p):p.clone().iuand(this)},i.prototype.iuxor=function(p){var o,c;this.length>p.length?(o=this,c=p):(o=p,c=this);for(var g=0;gp.length?this.clone().ixor(p):p.clone().ixor(this)},i.prototype.uxor=function(p){return this.length>p.length?this.clone().iuxor(p):p.clone().iuxor(this)},i.prototype.inotn=function(p){a(typeof p=="number"&&p>=0);var o=Math.ceil(p/26)|0,c=p%26;this._expand(o),c>0&&o--;for(var g=0;g0&&(this.words[g]=~this.words[g]&67108863>>26-c),this.strip()},i.prototype.notn=function(p){return this.clone().inotn(p)},i.prototype.setn=function(p,o){a(typeof p=="number"&&p>=0);var c=p/26|0,g=p%26;return this._expand(c+1),o?this.words[c]=this.words[c]|1<p.length?(c=this,g=p):(c=p,g=this);for(var A=0,D=0;D>>26;for(;A!==0&&D>>26;if(this.length=c.length,A!==0)this.words[this.length]=A,this.length++;else if(c!==this)for(;Dp.length?this.clone().iadd(p):p.clone().iadd(this)},i.prototype.isub=function(p){if(p.negative!==0){p.negative=0;var o=this.iadd(p);return p.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(p),this.negative=1,this._normSign();var c=this.cmp(p);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var g,A;c>0?(g=this,A=p):(g=p,A=this);for(var D=0,P=0;P>26,this.words[P]=o&67108863;for(;D!==0&&P>26,this.words[P]=o&67108863;if(D===0&&P>>26,ae=M&67108863,se=Math.min(u,p.length-1),J=Math.max(0,u-C.length+1);J<=se;J++){var ue=u-J|0;g=C.words[ue]|0,A=p.words[J]|0,D=g*A+ae,B+=D/67108864|0,ae=D&67108863}o.words[u]=ae|0,M=B|0}return M!==0?o.words[u]=M|0:o.length--,o.strip()}var R=function(p,o,c){var g=p.words,A=o.words,D=c.words,P=0,M,u,B,ae=g[0]|0,se=ae&8191,J=ae>>>13,ue=g[1]|0,Z=ue&8191,b=ue>>>13,z=g[2]|0,k=z&8191,j=z>>>13,ne=g[3]|0,re=ne&8191,de=ne>>>13,he=g[4]|0,Ce=he&8191,fe=he>>>13,Ue=g[5]|0,x1=Ue&8191,A1=Ue>>>13,lt=g[6]|0,f1=lt&8191,w1=lt>>>13,Lt=g[7]|0,c1=Lt&8191,o1=Lt>>>13,Qt=g[8]|0,l1=Qt&8191,h1=Qt>>>13,kt=g[9]|0,_1=kt&8191,E1=kt>>>13,jt=A[0]|0,m1=jt&8191,u1=jt>>>13,wt=A[1]|0,i1=wt&8191,p1=wt>>>13,Dt=A[2]|0,n1=Dt&8191,s1=Dt>>>13,Ht=A[3]|0,I1=Ht&8191,C1=Ht>>>13,Ma=A[4]|0,Je=Ma&8191,t1=Ma>>>13,ht=A[5]|0,v1=ht&8191,b1=ht>>>13,na=A[6]|0,N1=na&8191,Ke=na>>>13,sa=A[7]|0,m=sa&8191,w=sa>>>13,_=A[8]|0,s=_&8191,E=_>>>13,F=A[9]|0,U=F&8191,K=F>>>13;c.negative=p.negative^o.negative,c.length=19,M=Math.imul(se,m1),u=Math.imul(se,u1),u=u+Math.imul(J,m1)|0,B=Math.imul(J,u1);var te=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(te>>>26)|0,te&=67108863,M=Math.imul(Z,m1),u=Math.imul(Z,u1),u=u+Math.imul(b,m1)|0,B=Math.imul(b,u1),M=M+Math.imul(se,i1)|0,u=u+Math.imul(se,p1)|0,u=u+Math.imul(J,i1)|0,B=B+Math.imul(J,p1)|0;var ge=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(ge>>>26)|0,ge&=67108863,M=Math.imul(k,m1),u=Math.imul(k,u1),u=u+Math.imul(j,m1)|0,B=Math.imul(j,u1),M=M+Math.imul(Z,i1)|0,u=u+Math.imul(Z,p1)|0,u=u+Math.imul(b,i1)|0,B=B+Math.imul(b,p1)|0,M=M+Math.imul(se,n1)|0,u=u+Math.imul(se,s1)|0,u=u+Math.imul(J,n1)|0,B=B+Math.imul(J,s1)|0;var le=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(le>>>26)|0,le&=67108863,M=Math.imul(re,m1),u=Math.imul(re,u1),u=u+Math.imul(de,m1)|0,B=Math.imul(de,u1),M=M+Math.imul(k,i1)|0,u=u+Math.imul(k,p1)|0,u=u+Math.imul(j,i1)|0,B=B+Math.imul(j,p1)|0,M=M+Math.imul(Z,n1)|0,u=u+Math.imul(Z,s1)|0,u=u+Math.imul(b,n1)|0,B=B+Math.imul(b,s1)|0,M=M+Math.imul(se,I1)|0,u=u+Math.imul(se,C1)|0,u=u+Math.imul(J,I1)|0,B=B+Math.imul(J,C1)|0;var Fe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,M=Math.imul(Ce,m1),u=Math.imul(Ce,u1),u=u+Math.imul(fe,m1)|0,B=Math.imul(fe,u1),M=M+Math.imul(re,i1)|0,u=u+Math.imul(re,p1)|0,u=u+Math.imul(de,i1)|0,B=B+Math.imul(de,p1)|0,M=M+Math.imul(k,n1)|0,u=u+Math.imul(k,s1)|0,u=u+Math.imul(j,n1)|0,B=B+Math.imul(j,s1)|0,M=M+Math.imul(Z,I1)|0,u=u+Math.imul(Z,C1)|0,u=u+Math.imul(b,I1)|0,B=B+Math.imul(b,C1)|0,M=M+Math.imul(se,Je)|0,u=u+Math.imul(se,t1)|0,u=u+Math.imul(J,Je)|0,B=B+Math.imul(J,t1)|0;var ve=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(ve>>>26)|0,ve&=67108863,M=Math.imul(x1,m1),u=Math.imul(x1,u1),u=u+Math.imul(A1,m1)|0,B=Math.imul(A1,u1),M=M+Math.imul(Ce,i1)|0,u=u+Math.imul(Ce,p1)|0,u=u+Math.imul(fe,i1)|0,B=B+Math.imul(fe,p1)|0,M=M+Math.imul(re,n1)|0,u=u+Math.imul(re,s1)|0,u=u+Math.imul(de,n1)|0,B=B+Math.imul(de,s1)|0,M=M+Math.imul(k,I1)|0,u=u+Math.imul(k,C1)|0,u=u+Math.imul(j,I1)|0,B=B+Math.imul(j,C1)|0,M=M+Math.imul(Z,Je)|0,u=u+Math.imul(Z,t1)|0,u=u+Math.imul(b,Je)|0,B=B+Math.imul(b,t1)|0,M=M+Math.imul(se,v1)|0,u=u+Math.imul(se,b1)|0,u=u+Math.imul(J,v1)|0,B=B+Math.imul(J,b1)|0;var De=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(De>>>26)|0,De&=67108863,M=Math.imul(f1,m1),u=Math.imul(f1,u1),u=u+Math.imul(w1,m1)|0,B=Math.imul(w1,u1),M=M+Math.imul(x1,i1)|0,u=u+Math.imul(x1,p1)|0,u=u+Math.imul(A1,i1)|0,B=B+Math.imul(A1,p1)|0,M=M+Math.imul(Ce,n1)|0,u=u+Math.imul(Ce,s1)|0,u=u+Math.imul(fe,n1)|0,B=B+Math.imul(fe,s1)|0,M=M+Math.imul(re,I1)|0,u=u+Math.imul(re,C1)|0,u=u+Math.imul(de,I1)|0,B=B+Math.imul(de,C1)|0,M=M+Math.imul(k,Je)|0,u=u+Math.imul(k,t1)|0,u=u+Math.imul(j,Je)|0,B=B+Math.imul(j,t1)|0,M=M+Math.imul(Z,v1)|0,u=u+Math.imul(Z,b1)|0,u=u+Math.imul(b,v1)|0,B=B+Math.imul(b,b1)|0,M=M+Math.imul(se,N1)|0,u=u+Math.imul(se,Ke)|0,u=u+Math.imul(J,N1)|0,B=B+Math.imul(J,Ke)|0;var Me=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,M=Math.imul(c1,m1),u=Math.imul(c1,u1),u=u+Math.imul(o1,m1)|0,B=Math.imul(o1,u1),M=M+Math.imul(f1,i1)|0,u=u+Math.imul(f1,p1)|0,u=u+Math.imul(w1,i1)|0,B=B+Math.imul(w1,p1)|0,M=M+Math.imul(x1,n1)|0,u=u+Math.imul(x1,s1)|0,u=u+Math.imul(A1,n1)|0,B=B+Math.imul(A1,s1)|0,M=M+Math.imul(Ce,I1)|0,u=u+Math.imul(Ce,C1)|0,u=u+Math.imul(fe,I1)|0,B=B+Math.imul(fe,C1)|0,M=M+Math.imul(re,Je)|0,u=u+Math.imul(re,t1)|0,u=u+Math.imul(de,Je)|0,B=B+Math.imul(de,t1)|0,M=M+Math.imul(k,v1)|0,u=u+Math.imul(k,b1)|0,u=u+Math.imul(j,v1)|0,B=B+Math.imul(j,b1)|0,M=M+Math.imul(Z,N1)|0,u=u+Math.imul(Z,Ke)|0,u=u+Math.imul(b,N1)|0,B=B+Math.imul(b,Ke)|0,M=M+Math.imul(se,m)|0,u=u+Math.imul(se,w)|0,u=u+Math.imul(J,m)|0,B=B+Math.imul(J,w)|0;var qe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(qe>>>26)|0,qe&=67108863,M=Math.imul(l1,m1),u=Math.imul(l1,u1),u=u+Math.imul(h1,m1)|0,B=Math.imul(h1,u1),M=M+Math.imul(c1,i1)|0,u=u+Math.imul(c1,p1)|0,u=u+Math.imul(o1,i1)|0,B=B+Math.imul(o1,p1)|0,M=M+Math.imul(f1,n1)|0,u=u+Math.imul(f1,s1)|0,u=u+Math.imul(w1,n1)|0,B=B+Math.imul(w1,s1)|0,M=M+Math.imul(x1,I1)|0,u=u+Math.imul(x1,C1)|0,u=u+Math.imul(A1,I1)|0,B=B+Math.imul(A1,C1)|0,M=M+Math.imul(Ce,Je)|0,u=u+Math.imul(Ce,t1)|0,u=u+Math.imul(fe,Je)|0,B=B+Math.imul(fe,t1)|0,M=M+Math.imul(re,v1)|0,u=u+Math.imul(re,b1)|0,u=u+Math.imul(de,v1)|0,B=B+Math.imul(de,b1)|0,M=M+Math.imul(k,N1)|0,u=u+Math.imul(k,Ke)|0,u=u+Math.imul(j,N1)|0,B=B+Math.imul(j,Ke)|0,M=M+Math.imul(Z,m)|0,u=u+Math.imul(Z,w)|0,u=u+Math.imul(b,m)|0,B=B+Math.imul(b,w)|0,M=M+Math.imul(se,s)|0,u=u+Math.imul(se,E)|0,u=u+Math.imul(J,s)|0,B=B+Math.imul(J,E)|0;var Te=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Te>>>26)|0,Te&=67108863,M=Math.imul(_1,m1),u=Math.imul(_1,u1),u=u+Math.imul(E1,m1)|0,B=Math.imul(E1,u1),M=M+Math.imul(l1,i1)|0,u=u+Math.imul(l1,p1)|0,u=u+Math.imul(h1,i1)|0,B=B+Math.imul(h1,p1)|0,M=M+Math.imul(c1,n1)|0,u=u+Math.imul(c1,s1)|0,u=u+Math.imul(o1,n1)|0,B=B+Math.imul(o1,s1)|0,M=M+Math.imul(f1,I1)|0,u=u+Math.imul(f1,C1)|0,u=u+Math.imul(w1,I1)|0,B=B+Math.imul(w1,C1)|0,M=M+Math.imul(x1,Je)|0,u=u+Math.imul(x1,t1)|0,u=u+Math.imul(A1,Je)|0,B=B+Math.imul(A1,t1)|0,M=M+Math.imul(Ce,v1)|0,u=u+Math.imul(Ce,b1)|0,u=u+Math.imul(fe,v1)|0,B=B+Math.imul(fe,b1)|0,M=M+Math.imul(re,N1)|0,u=u+Math.imul(re,Ke)|0,u=u+Math.imul(de,N1)|0,B=B+Math.imul(de,Ke)|0,M=M+Math.imul(k,m)|0,u=u+Math.imul(k,w)|0,u=u+Math.imul(j,m)|0,B=B+Math.imul(j,w)|0,M=M+Math.imul(Z,s)|0,u=u+Math.imul(Z,E)|0,u=u+Math.imul(b,s)|0,B=B+Math.imul(b,E)|0,M=M+Math.imul(se,U)|0,u=u+Math.imul(se,K)|0,u=u+Math.imul(J,U)|0,B=B+Math.imul(J,K)|0;var Oe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,M=Math.imul(_1,i1),u=Math.imul(_1,p1),u=u+Math.imul(E1,i1)|0,B=Math.imul(E1,p1),M=M+Math.imul(l1,n1)|0,u=u+Math.imul(l1,s1)|0,u=u+Math.imul(h1,n1)|0,B=B+Math.imul(h1,s1)|0,M=M+Math.imul(c1,I1)|0,u=u+Math.imul(c1,C1)|0,u=u+Math.imul(o1,I1)|0,B=B+Math.imul(o1,C1)|0,M=M+Math.imul(f1,Je)|0,u=u+Math.imul(f1,t1)|0,u=u+Math.imul(w1,Je)|0,B=B+Math.imul(w1,t1)|0,M=M+Math.imul(x1,v1)|0,u=u+Math.imul(x1,b1)|0,u=u+Math.imul(A1,v1)|0,B=B+Math.imul(A1,b1)|0,M=M+Math.imul(Ce,N1)|0,u=u+Math.imul(Ce,Ke)|0,u=u+Math.imul(fe,N1)|0,B=B+Math.imul(fe,Ke)|0,M=M+Math.imul(re,m)|0,u=u+Math.imul(re,w)|0,u=u+Math.imul(de,m)|0,B=B+Math.imul(de,w)|0,M=M+Math.imul(k,s)|0,u=u+Math.imul(k,E)|0,u=u+Math.imul(j,s)|0,B=B+Math.imul(j,E)|0,M=M+Math.imul(Z,U)|0,u=u+Math.imul(Z,K)|0,u=u+Math.imul(b,U)|0,B=B+Math.imul(b,K)|0;var Ve=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,M=Math.imul(_1,n1),u=Math.imul(_1,s1),u=u+Math.imul(E1,n1)|0,B=Math.imul(E1,s1),M=M+Math.imul(l1,I1)|0,u=u+Math.imul(l1,C1)|0,u=u+Math.imul(h1,I1)|0,B=B+Math.imul(h1,C1)|0,M=M+Math.imul(c1,Je)|0,u=u+Math.imul(c1,t1)|0,u=u+Math.imul(o1,Je)|0,B=B+Math.imul(o1,t1)|0,M=M+Math.imul(f1,v1)|0,u=u+Math.imul(f1,b1)|0,u=u+Math.imul(w1,v1)|0,B=B+Math.imul(w1,b1)|0,M=M+Math.imul(x1,N1)|0,u=u+Math.imul(x1,Ke)|0,u=u+Math.imul(A1,N1)|0,B=B+Math.imul(A1,Ke)|0,M=M+Math.imul(Ce,m)|0,u=u+Math.imul(Ce,w)|0,u=u+Math.imul(fe,m)|0,B=B+Math.imul(fe,w)|0,M=M+Math.imul(re,s)|0,u=u+Math.imul(re,E)|0,u=u+Math.imul(de,s)|0,B=B+Math.imul(de,E)|0,M=M+Math.imul(k,U)|0,u=u+Math.imul(k,K)|0,u=u+Math.imul(j,U)|0,B=B+Math.imul(j,K)|0;var Pe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,M=Math.imul(_1,I1),u=Math.imul(_1,C1),u=u+Math.imul(E1,I1)|0,B=Math.imul(E1,C1),M=M+Math.imul(l1,Je)|0,u=u+Math.imul(l1,t1)|0,u=u+Math.imul(h1,Je)|0,B=B+Math.imul(h1,t1)|0,M=M+Math.imul(c1,v1)|0,u=u+Math.imul(c1,b1)|0,u=u+Math.imul(o1,v1)|0,B=B+Math.imul(o1,b1)|0,M=M+Math.imul(f1,N1)|0,u=u+Math.imul(f1,Ke)|0,u=u+Math.imul(w1,N1)|0,B=B+Math.imul(w1,Ke)|0,M=M+Math.imul(x1,m)|0,u=u+Math.imul(x1,w)|0,u=u+Math.imul(A1,m)|0,B=B+Math.imul(A1,w)|0,M=M+Math.imul(Ce,s)|0,u=u+Math.imul(Ce,E)|0,u=u+Math.imul(fe,s)|0,B=B+Math.imul(fe,E)|0,M=M+Math.imul(re,U)|0,u=u+Math.imul(re,K)|0,u=u+Math.imul(de,U)|0,B=B+Math.imul(de,K)|0;var xe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(xe>>>26)|0,xe&=67108863,M=Math.imul(_1,Je),u=Math.imul(_1,t1),u=u+Math.imul(E1,Je)|0,B=Math.imul(E1,t1),M=M+Math.imul(l1,v1)|0,u=u+Math.imul(l1,b1)|0,u=u+Math.imul(h1,v1)|0,B=B+Math.imul(h1,b1)|0,M=M+Math.imul(c1,N1)|0,u=u+Math.imul(c1,Ke)|0,u=u+Math.imul(o1,N1)|0,B=B+Math.imul(o1,Ke)|0,M=M+Math.imul(f1,m)|0,u=u+Math.imul(f1,w)|0,u=u+Math.imul(w1,m)|0,B=B+Math.imul(w1,w)|0,M=M+Math.imul(x1,s)|0,u=u+Math.imul(x1,E)|0,u=u+Math.imul(A1,s)|0,B=B+Math.imul(A1,E)|0,M=M+Math.imul(Ce,U)|0,u=u+Math.imul(Ce,K)|0,u=u+Math.imul(fe,U)|0,B=B+Math.imul(fe,K)|0;var Ee=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,M=Math.imul(_1,v1),u=Math.imul(_1,b1),u=u+Math.imul(E1,v1)|0,B=Math.imul(E1,b1),M=M+Math.imul(l1,N1)|0,u=u+Math.imul(l1,Ke)|0,u=u+Math.imul(h1,N1)|0,B=B+Math.imul(h1,Ke)|0,M=M+Math.imul(c1,m)|0,u=u+Math.imul(c1,w)|0,u=u+Math.imul(o1,m)|0,B=B+Math.imul(o1,w)|0,M=M+Math.imul(f1,s)|0,u=u+Math.imul(f1,E)|0,u=u+Math.imul(w1,s)|0,B=B+Math.imul(w1,E)|0,M=M+Math.imul(x1,U)|0,u=u+Math.imul(x1,K)|0,u=u+Math.imul(A1,U)|0,B=B+Math.imul(A1,K)|0;var be=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(be>>>26)|0,be&=67108863,M=Math.imul(_1,N1),u=Math.imul(_1,Ke),u=u+Math.imul(E1,N1)|0,B=Math.imul(E1,Ke),M=M+Math.imul(l1,m)|0,u=u+Math.imul(l1,w)|0,u=u+Math.imul(h1,m)|0,B=B+Math.imul(h1,w)|0,M=M+Math.imul(c1,s)|0,u=u+Math.imul(c1,E)|0,u=u+Math.imul(o1,s)|0,B=B+Math.imul(o1,E)|0,M=M+Math.imul(f1,U)|0,u=u+Math.imul(f1,K)|0,u=u+Math.imul(w1,U)|0,B=B+Math.imul(w1,K)|0;var Ae=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,M=Math.imul(_1,m),u=Math.imul(_1,w),u=u+Math.imul(E1,m)|0,B=Math.imul(E1,w),M=M+Math.imul(l1,s)|0,u=u+Math.imul(l1,E)|0,u=u+Math.imul(h1,s)|0,B=B+Math.imul(h1,E)|0,M=M+Math.imul(c1,U)|0,u=u+Math.imul(c1,K)|0,u=u+Math.imul(o1,U)|0,B=B+Math.imul(o1,K)|0;var _e=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(_e>>>26)|0,_e&=67108863,M=Math.imul(_1,s),u=Math.imul(_1,E),u=u+Math.imul(E1,s)|0,B=Math.imul(E1,E),M=M+Math.imul(l1,U)|0,u=u+Math.imul(l1,K)|0,u=u+Math.imul(h1,U)|0,B=B+Math.imul(h1,K)|0;var me=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(me>>>26)|0,me&=67108863,M=Math.imul(_1,U),u=Math.imul(_1,K),u=u+Math.imul(E1,U)|0,B=Math.imul(E1,K);var Q=(P+M|0)+((u&8191)<<13)|0;return P=(B+(u>>>13)|0)+(Q>>>26)|0,Q&=67108863,D[0]=te,D[1]=ge,D[2]=le,D[3]=Fe,D[4]=ve,D[5]=De,D[6]=Me,D[7]=qe,D[8]=Te,D[9]=Oe,D[10]=Ve,D[11]=Pe,D[12]=xe,D[13]=Ee,D[14]=be,D[15]=Ae,D[16]=_e,D[17]=me,D[18]=Q,P!==0&&(D[19]=P,c.length++),c};Math.imul||(R=O);function V(C,p,o){o.negative=p.negative^C.negative,o.length=C.length+p.length;for(var c=0,g=0,A=0;A>>26)|0,g+=D>>>26,D&=67108863}o.words[A]=P,c=D,D=g}return c!==0?o.words[A]=c:o.length--,o.strip()}function L(C,p,o){var c=new $;return c.mulp(C,p,o)}i.prototype.mulTo=function(p,o){var c,g=this.length+p.length;return this.length===10&&p.length===10?c=R(this,p,o):g<63?c=O(this,p,o):g<1024?c=V(this,p,o):c=L(this,p,o),c};function $(C,p){this.x=C,this.y=p}$.prototype.makeRBT=function(p){for(var o=new Array(p),c=i.prototype._countBits(p)-1,g=0;g>=1;return g},$.prototype.permute=function(p,o,c,g,A,D){for(var P=0;P>>1)A++;return 1<>>13,c[2*D+1]=A&8191,A=A>>>13;for(D=2*o;D>=26,o+=g/67108864|0,o+=A>>>26,this.words[c]=A&67108863}return o!==0&&(this.words[c]=o,this.length++),this},i.prototype.muln=function(p){return this.clone().imuln(p)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(p){var o=S(p);if(o.length===0)return new i(1);for(var c=this,g=0;g=0);var o=p%26,c=(p-o)/26,g=67108863>>>26-o<<26-o,A;if(o!==0){var D=0;for(A=0;A>>26-o}D&&(this.words[A]=D,this.length++)}if(c!==0){for(A=this.length-1;A>=0;A--)this.words[A+c]=this.words[A];for(A=0;A=0);var g;o?g=(o-o%26)/26:g=0;var A=p%26,D=Math.min((p-A)/26,this.length),P=67108863^67108863>>>A<D)for(this.length-=D,u=0;u=0&&(B!==0||u>=g);u--){var ae=this.words[u]|0;this.words[u]=B<<26-A|ae>>>A,B=ae&P}return M&&B!==0&&(M.words[M.length++]=B),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(p,o,c){return a(this.negative===0),this.iushrn(p,o,c)},i.prototype.shln=function(p){return this.clone().ishln(p)},i.prototype.ushln=function(p){return this.clone().iushln(p)},i.prototype.shrn=function(p){return this.clone().ishrn(p)},i.prototype.ushrn=function(p){return this.clone().iushrn(p)},i.prototype.testn=function(p){a(typeof p=="number"&&p>=0);var o=p%26,c=(p-o)/26,g=1<=0);var o=p%26,c=(p-o)/26;if(a(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(o!==0&&c++,this.length=Math.min(c,this.length),o!==0){var g=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},i.prototype.isubn=function(p){if(a(typeof p=="number"),a(p<67108864),p<0)return this.iaddn(-p);if(this.negative!==0)return this.negative=0,this.iaddn(p),this.negative=1,this;if(this.words[0]-=p,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(M/67108864|0),this.words[A+c]=D&67108863}for(;A>26,this.words[A+c]=D&67108863;if(P===0)return this.strip();for(a(P===-1),P=0,A=0;A>26,this.words[A]=D&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(p,o){var c=this.length-p.length,g=this.clone(),A=p,D=A.words[A.length-1]|0,P=this._countBits(D);c=26-P,c!==0&&(A=A.ushln(c),g.iushln(c),D=A.words[A.length-1]|0);var M=g.length-A.length,u;if(o!=="mod"){u=new i(null),u.length=M+1,u.words=new Array(u.length);for(var B=0;B=0;se--){var J=(g.words[A.length+se]|0)*67108864+(g.words[A.length+se-1]|0);for(J=Math.min(J/D|0,67108863),g._ishlnsubmul(A,J,se);g.negative!==0;)J--,g.negative=0,g._ishlnsubmul(A,1,se),g.isZero()||(g.negative^=1);u&&(u.words[se]=J)}return u&&u.strip(),g.strip(),o!=="div"&&c!==0&&g.iushrn(c),{div:u||null,mod:g}},i.prototype.divmod=function(p,o,c){if(a(!p.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var g,A,D;return this.negative!==0&&p.negative===0?(D=this.neg().divmod(p,o),o!=="mod"&&(g=D.div.neg()),o!=="div"&&(A=D.mod.neg(),c&&A.negative!==0&&A.iadd(p)),{div:g,mod:A}):this.negative===0&&p.negative!==0?(D=this.divmod(p.neg(),o),o!=="mod"&&(g=D.div.neg()),{div:g,mod:D.mod}):(this.negative&p.negative)!==0?(D=this.neg().divmod(p.neg(),o),o!=="div"&&(A=D.mod.neg(),c&&A.negative!==0&&A.isub(p)),{div:D.div,mod:A}):p.length>this.length||this.cmp(p)<0?{div:new i(0),mod:this}:p.length===1?o==="div"?{div:this.divn(p.words[0]),mod:null}:o==="mod"?{div:null,mod:new i(this.modn(p.words[0]))}:{div:this.divn(p.words[0]),mod:new i(this.modn(p.words[0]))}:this._wordDiv(p,o)},i.prototype.div=function(p){return this.divmod(p,"div",!1).div},i.prototype.mod=function(p){return this.divmod(p,"mod",!1).mod},i.prototype.umod=function(p){return this.divmod(p,"mod",!0).mod},i.prototype.divRound=function(p){var o=this.divmod(p);if(o.mod.isZero())return o.div;var c=o.div.negative!==0?o.mod.isub(p):o.mod,g=p.ushrn(1),A=p.andln(1),D=c.cmp(g);return D<0||A===1&&D===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},i.prototype.modn=function(p){a(p<=67108863);for(var o=(1<<26)%p,c=0,g=this.length-1;g>=0;g--)c=(o*c+(this.words[g]|0))%p;return c},i.prototype.idivn=function(p){a(p<=67108863);for(var o=0,c=this.length-1;c>=0;c--){var g=(this.words[c]|0)+o*67108864;this.words[c]=g/p|0,o=g%p}return this.strip()},i.prototype.divn=function(p){return this.clone().idivn(p)},i.prototype.egcd=function(p){a(p.negative===0),a(!p.isZero());var o=this,c=p.clone();o.negative!==0?o=o.umod(p):o=o.clone();for(var g=new i(1),A=new i(0),D=new i(0),P=new i(1),M=0;o.isEven()&&c.isEven();)o.iushrn(1),c.iushrn(1),++M;for(var u=c.clone(),B=o.clone();!o.isZero();){for(var ae=0,se=1;(o.words[0]&se)===0&&ae<26;++ae,se<<=1);if(ae>0)for(o.iushrn(ae);ae-- >0;)(g.isOdd()||A.isOdd())&&(g.iadd(u),A.isub(B)),g.iushrn(1),A.iushrn(1);for(var J=0,ue=1;(c.words[0]&ue)===0&&J<26;++J,ue<<=1);if(J>0)for(c.iushrn(J);J-- >0;)(D.isOdd()||P.isOdd())&&(D.iadd(u),P.isub(B)),D.iushrn(1),P.iushrn(1);o.cmp(c)>=0?(o.isub(c),g.isub(D),A.isub(P)):(c.isub(o),D.isub(g),P.isub(A))}return{a:D,b:P,gcd:c.iushln(M)}},i.prototype._invmp=function(p){a(p.negative===0),a(!p.isZero());var o=this,c=p.clone();o.negative!==0?o=o.umod(p):o=o.clone();for(var g=new i(1),A=new i(0),D=c.clone();o.cmpn(1)>0&&c.cmpn(1)>0;){for(var P=0,M=1;(o.words[0]&M)===0&&P<26;++P,M<<=1);if(P>0)for(o.iushrn(P);P-- >0;)g.isOdd()&&g.iadd(D),g.iushrn(1);for(var u=0,B=1;(c.words[0]&B)===0&&u<26;++u,B<<=1);if(u>0)for(c.iushrn(u);u-- >0;)A.isOdd()&&A.iadd(D),A.iushrn(1);o.cmp(c)>=0?(o.isub(c),g.isub(A)):(c.isub(o),A.isub(g))}var ae;return o.cmpn(1)===0?ae=g:ae=A,ae.cmpn(0)<0&&ae.iadd(p),ae},i.prototype.gcd=function(p){if(this.isZero())return p.abs();if(p.isZero())return this.abs();var o=this.clone(),c=p.clone();o.negative=0,c.negative=0;for(var g=0;o.isEven()&&c.isEven();g++)o.iushrn(1),c.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;c.isEven();)c.iushrn(1);var A=o.cmp(c);if(A<0){var D=o;o=c,c=D}else if(A===0||c.cmpn(1)===0)break;o.isub(c)}while(!0);return c.iushln(g)},i.prototype.invm=function(p){return this.egcd(p).a.umod(p)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(p){return this.words[0]&p},i.prototype.bincn=function(p){a(typeof p=="number");var o=p%26,c=(p-o)/26,g=1<>>26,P&=67108863,this.words[D]=P}return A!==0&&(this.words[D]=A,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(p){var o=p<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var c;if(this.length>1)c=1;else{o&&(p=-p),a(p<=67108863,"Number is too big");var g=this.words[0]|0;c=g===p?0:gp.length)return 1;if(this.length=0;c--){var g=this.words[c]|0,A=p.words[c]|0;if(g!==A){gA&&(o=1);break}}return o},i.prototype.gtn=function(p){return this.cmpn(p)===1},i.prototype.gt=function(p){return this.cmp(p)===1},i.prototype.gten=function(p){return this.cmpn(p)>=0},i.prototype.gte=function(p){return this.cmp(p)>=0},i.prototype.ltn=function(p){return this.cmpn(p)===-1},i.prototype.lt=function(p){return this.cmp(p)===-1},i.prototype.lten=function(p){return this.cmpn(p)<=0},i.prototype.lte=function(p){return this.cmp(p)<=0},i.prototype.eqn=function(p){return this.cmpn(p)===0},i.prototype.eq=function(p){return this.cmp(p)===0},i.red=function(p){return new ce(p)},i.prototype.toRed=function(p){return a(!this.red,"Already a number in reduction context"),a(this.negative===0,"red works only with positives"),p.convertTo(this)._forceRed(p)},i.prototype.fromRed=function(){return a(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(p){return this.red=p,this},i.prototype.forceRed=function(p){return a(!this.red,"Already a number in reduction context"),this._forceRed(p)},i.prototype.redAdd=function(p){return a(this.red,"redAdd works only with red numbers"),this.red.add(this,p)},i.prototype.redIAdd=function(p){return a(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,p)},i.prototype.redSub=function(p){return a(this.red,"redSub works only with red numbers"),this.red.sub(this,p)},i.prototype.redISub=function(p){return a(this.red,"redISub works only with red numbers"),this.red.isub(this,p)},i.prototype.redShl=function(p){return a(this.red,"redShl works only with red numbers"),this.red.shl(this,p)},i.prototype.redMul=function(p){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.mul(this,p)},i.prototype.redIMul=function(p){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.imul(this,p)},i.prototype.redSqr=function(){return a(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return a(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return a(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return a(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return a(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(p){return a(this.red&&!p.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,p)};var X={k256:null,p224:null,p192:null,p25519:null};function ie(C,p){this.name=C,this.p=new i(p,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ie.prototype._tmp=function(){var p=new i(null);return p.words=new Array(Math.ceil(this.n/13)),p},ie.prototype.ireduce=function(p){var o=p,c;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),c=o.bitLength();while(c>this.n);var g=c0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ie.prototype.split=function(p,o){p.iushrn(this.n,0,o)},ie.prototype.imulK=function(p){return p.imul(this.k)};function oe(){ie.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}r(oe,ie),oe.prototype.split=function(p,o){for(var c=4194303,g=Math.min(p.length,9),A=0;A>>22,D=P}D>>>=22,p.words[A-10]=D,D===0&&p.length>10?p.length-=10:p.length-=9},oe.prototype.imulK=function(p){p.words[p.length]=0,p.words[p.length+1]=0,p.length+=2;for(var o=0,c=0;c>>=26,p.words[c]=A,o=g}return o!==0&&(p.words[p.length++]=o),p},i._prime=function(p){if(X[p])return X[p];var o;if(p==="k256")o=new oe;else if(p==="p224")o=new we;else if(p==="p192")o=new Ie;else if(p==="p25519")o=new ye;else throw new Error("Unknown prime "+p);return X[p]=o,o};function ce(C){if(typeof C=="string"){var p=i._prime(C);this.m=p.p,this.prime=p}else a(C.gtn(1),"modulus must be greater than 1"),this.m=C,this.prime=null}ce.prototype._verify1=function(p){a(p.negative===0,"red works only with positives"),a(p.red,"red works only with red numbers")},ce.prototype._verify2=function(p,o){a((p.negative|o.negative)===0,"red works only with positives"),a(p.red&&p.red===o.red,"red works only with red numbers")},ce.prototype.imod=function(p){return this.prime?this.prime.ireduce(p)._forceRed(this):p.umod(this.m)._forceRed(this)},ce.prototype.neg=function(p){return p.isZero()?p.clone():this.m.sub(p)._forceRed(this)},ce.prototype.add=function(p,o){this._verify2(p,o);var c=p.add(o);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},ce.prototype.iadd=function(p,o){this._verify2(p,o);var c=p.iadd(o);return c.cmp(this.m)>=0&&c.isub(this.m),c},ce.prototype.sub=function(p,o){this._verify2(p,o);var c=p.sub(o);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},ce.prototype.isub=function(p,o){this._verify2(p,o);var c=p.isub(o);return c.cmpn(0)<0&&c.iadd(this.m),c},ce.prototype.shl=function(p,o){return this._verify1(p),this.imod(p.ushln(o))},ce.prototype.imul=function(p,o){return this._verify2(p,o),this.imod(p.imul(o))},ce.prototype.mul=function(p,o){return this._verify2(p,o),this.imod(p.mul(o))},ce.prototype.isqr=function(p){return this.imul(p,p.clone())},ce.prototype.sqr=function(p){return this.mul(p,p)},ce.prototype.sqrt=function(p){if(p.isZero())return p.clone();var o=this.m.andln(3);if(a(o%2===1),o===3){var c=this.m.add(new i(1)).iushrn(2);return this.pow(p,c)}for(var g=this.m.subn(1),A=0;!g.isZero()&&g.andln(1)===0;)A++,g.iushrn(1);a(!g.isZero());var D=new i(1).toRed(this),P=D.redNeg(),M=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);this.pow(u,M).cmp(P)!==0;)u.redIAdd(P);for(var B=this.pow(u,g),ae=this.pow(p,g.addn(1).iushrn(1)),se=this.pow(p,g),J=A;se.cmp(D)!==0;){for(var ue=se,Z=0;ue.cmp(D)!==0;Z++)ue=ue.redSqr();a(Z=0;A--){for(var B=o.words[A],ae=u-1;ae>=0;ae--){var se=B>>ae&1;if(D!==g[0]&&(D=this.sqr(D)),se===0&&P===0){M=0;continue}P<<=1,P|=se,M++,!(M!==c&&(A!==0||ae!==0))&&(D=this.mul(D,g[P]),M=0,P=0)}u=26}return D},ce.prototype.convertTo=function(p){var o=p.umod(this.m);return o===p?o.clone():o},ce.prototype.convertFrom=function(p){var o=p.clone();return o.red=null,o},i.mont=function(p){return new Ne(p)};function Ne(C){ce.call(this,C),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}r(Ne,ce),Ne.prototype.convertTo=function(p){return this.imod(p.ushln(this.shift))},Ne.prototype.convertFrom=function(p){var o=this.imod(p.mul(this.rinv));return o.red=null,o},Ne.prototype.imul=function(p,o){if(p.isZero()||o.isZero())return p.words[0]=0,p.length=1,p;var c=p.imul(o),g=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),A=c.isub(g).iushrn(this.shift),D=A;return A.cmp(this.m)>=0?D=A.isub(this.m):A.cmpn(0)<0&&(D=A.iadd(this.m)),D._forceRed(this)},Ne.prototype.mul=function(p,o){if(p.isZero()||o.isZero())return new i(0)._forceRed(this);var c=p.mul(o),g=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),A=c.isub(g).iushrn(this.shift),D=A;return A.cmp(this.m)>=0?D=A.isub(this.m):A.cmpn(0)<0&&(D=A.iadd(this.m)),D._forceRed(this)},Ne.prototype.invm=function(p){var o=this.imod(p._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof v4>"u"||v4,Ec)});var Ar=T((IF,Nc)=>{l();Nc.exports=Cc;function Cc(t,e){if(!t)throw new Error(e||"Assertion failed")}Cc.equal=function(e,a,r){if(e!=a)throw new Error(r||"Assertion failed: "+e+" != "+a)}});var b4=T(Tc=>{"use strict";l();var C2=Tc;function gC(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var a=[];if(typeof t!="string"){for(var r=0;r>8,n=i&255;d?a.push(d,n):a.push(n)}return a}C2.toArray=gC;function Dc(t){return t.length===1?"0"+t:t}C2.zero2=Dc;function Mc(t){for(var e="",a=0;a{"use strict";l();var ea=Bc,yC=xa(),xC=Ar(),N2=b4();ea.assert=xC;ea.toArray=N2.toArray;ea.zero2=N2.zero2;ea.toHex=N2.toHex;ea.encode=N2.encode;function AC(t,e,a){var r=new Array(Math.max(t.bitLength(),a)+1);r.fill(0);for(var i=1<(i>>1)-1?f=(i>>1)-h:f=h,d.isubn(f)):f=0,r[n]=f,d.iushrn(1)}return r}ea.getNAF=AC;function wC(t,e){var a=[[],[]];t=t.clone(),e=e.clone();for(var r=0,i=0,d;t.cmpn(-r)>0||e.cmpn(-i)>0;){var n=t.andln(3)+r&3,f=e.andln(3)+i&3;n===3&&(n=-1),f===3&&(f=-1);var h;(n&1)===0?h=0:(d=t.andln(7)+r&7,(d===3||d===5)&&f===2?h=-n:h=n),a[0].push(h);var v;(f&1)===0?v=0:(d=e.andln(7)+i&7,(d===3||d===5)&&n===2?v=-f:v=f),a[1].push(v),2*r===h+1&&(r=1-r),2*i===v+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return a}ea.getJSF=wC;function _C(t,e,a){var r="_"+e;t.prototype[e]=function(){return this[r]!==void 0?this[r]:this[r]=a.call(this)}}ea.cachedProperty=_C;function IC(t){return typeof t=="string"?ea.toArray(t,"hex"):t}ea.parseBytes=IC;function SC(t){return new yC(t,"hex","le")}ea.intFromLE=SC});var A4=T((MF,x4)=>{l();var g4;x4.exports=function(e){return g4||(g4=new wr(null)),g4.generate(e)};function wr(t){this.rand=t}x4.exports.Rand=wr;wr.prototype.generate=function(e){return this._rand(e)};wr.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var a=new Uint8Array(e),r=0;r{"use strict";l();var ei=xa(),z0=Nt(),D2=z0.getNAF,EC=z0.getJSF,M2=z0.assert;function _r(t,e){this.type=t,this.p=new ei(e.p,16),this.red=e.prime?ei.red(e.prime):ei.mont(this.p),this.zero=new ei(0).toRed(this.red),this.one=new ei(1).toRed(this.red),this.two=new ei(2).toRed(this.red),this.n=e.n&&new ei(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var a=this.n&&this.p.div(this.n);!a||a.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}qc.exports=_r;_r.prototype.point=function(){throw new Error("Not implemented")};_r.prototype.validate=function(){throw new Error("Not implemented")};_r.prototype._fixedNafMul=function(e,a){M2(e.precomputed);var r=e._getDoubles(),i=D2(a,1,this._bitLength),d=(1<=f;v--)h=(h<<1)+i[v];n.push(h)}for(var I=this.jpoint(null,null,null),S=this.jpoint(null,null,null),O=d;O>0;O--){for(f=0;f=0;h--){for(var v=0;h>=0&&n[h]===0;h--)v++;if(h>=0&&v++,f=f.dblp(v),h<0)break;var I=n[h];M2(I!==0),e.type==="affine"?I>0?f=f.mixedAdd(d[I-1>>1]):f=f.mixedAdd(d[-I-1>>1].neg()):I>0?f=f.add(d[I-1>>1]):f=f.add(d[-I-1>>1].neg())}return e.type==="affine"?f.toP():f};_r.prototype._wnafMulAdd=function(e,a,r,i,d){var n=this._wnafT1,f=this._wnafT2,h=this._wnafT3,v=0,I,S,O;for(I=0;I=1;I-=2){var V=I-1,L=I;if(n[V]!==1||n[L]!==1){h[V]=D2(r[V],n[V],this._bitLength),h[L]=D2(r[L],n[L],this._bitLength),v=Math.max(h[V].length,v),v=Math.max(h[L].length,v);continue}var $=[a[V],null,null,a[L]];a[V].y.cmp(a[L].y)===0?($[1]=a[V].add(a[L]),$[2]=a[V].toJ().mixedAdd(a[L].neg())):a[V].y.cmp(a[L].y.redNeg())===0?($[1]=a[V].toJ().mixedAdd(a[L]),$[2]=a[V].add(a[L].neg())):($[1]=a[V].toJ().mixedAdd(a[L]),$[2]=a[V].toJ().mixedAdd(a[L].neg()));var X=[-3,-1,-5,-7,0,7,5,1,3],ie=EC(r[V],r[L]);for(v=Math.max(ie[0].length,v),h[V]=new Array(v),h[L]=new Array(v),S=0;S=0;I--){for(var ce=0;I>=0;){var Ne=!0;for(S=0;S=0&&ce++,Ie=Ie.dblp(ce),I<0)break;for(S=0;S0?O=f[S][C-1>>1]:C<0&&(O=f[S][-C-1>>1].neg()),O.type==="affine"?Ie=Ie.mixedAdd(O):Ie=Ie.add(O))}}for(I=0;I=Math.ceil((e.bitLength()+1)/a.step):!1};Vt.prototype._getDoubles=function(e,a){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,d=0;d{l();typeof Object.create=="function"?w4.exports=function(e,a){a&&(e.super_=a,e.prototype=Object.create(a.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:w4.exports=function(e,a){if(a){e.super_=a;var r=function(){};r.prototype=a.prototype,e.prototype=new r,e.prototype.constructor=e}}});var G0=T((VF,I4)=>{l();try{if(_4=Ge("util"),typeof _4.inherits!="function")throw"";I4.exports=_4.inherits}catch{I4.exports=Oc()}var _4});var Vc=T((RF,Pc)=>{"use strict";l();var CC=Nt(),L1=xa(),S4=G0(),Ci=$0(),NC=CC.assert;function Ut(t){Ci.call(this,"short",t),this.a=new L1(t.a,16).toRed(this.red),this.b=new L1(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}S4(Ut,Ci);Pc.exports=Ut;Ut.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var a,r;if(e.beta)a=new L1(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);a=i[0].cmp(i[1])<0?i[0]:i[1],a=a.toRed(this.red)}if(e.lambda)r=new L1(e.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(a))===0?r=d[0]:(r=d[1],NC(this.g.mul(r).x.cmp(this.g.x.redMul(a))===0))}var n;return e.basis?n=e.basis.map(function(f){return{a:new L1(f.a,16),b:new L1(f.b,16)}}):n=this._getEndoBasis(r),{beta:a,lambda:r,basis:n}}};Ut.prototype._getEndoRoots=function(e){var a=e===this.p?this.red:L1.mont(e),r=new L1(2).toRed(a).redInvm(),i=r.redNeg(),d=new L1(3).toRed(a).redNeg().redSqrt().redMul(r),n=i.redAdd(d).fromRed(),f=i.redSub(d).fromRed();return[n,f]};Ut.prototype._getEndoBasis=function(e){for(var a=this.n.ushrn(Math.floor(this.n.bitLength()/2)),r=e,i=this.n.clone(),d=new L1(1),n=new L1(0),f=new L1(0),h=new L1(1),v,I,S,O,R,V,L,$=0,X,ie;r.cmpn(0)!==0;){var oe=i.div(r);X=i.sub(oe.mul(r)),ie=f.sub(oe.mul(d));var we=h.sub(oe.mul(n));if(!S&&X.cmp(a)<0)v=L.neg(),I=d,S=X.neg(),O=ie;else if(S&&++$===2)break;L=X,i=r,r=X,f=d,d=ie,h=n,n=we}R=X.neg(),V=ie;var Ie=S.sqr().add(O.sqr()),ye=R.sqr().add(V.sqr());return ye.cmp(Ie)>=0&&(R=v,V=I),S.negative&&(S=S.neg(),O=O.neg()),R.negative&&(R=R.neg(),V=V.neg()),[{a:S,b:O},{a:R,b:V}]};Ut.prototype._endoSplit=function(e){var a=this.endo.basis,r=a[0],i=a[1],d=i.b.mul(e).divRound(this.n),n=r.b.neg().mul(e).divRound(this.n),f=d.mul(r.a),h=n.mul(i.a),v=d.mul(r.b),I=n.mul(i.b),S=e.sub(f).sub(h),O=v.add(I).neg();return{k1:S,k2:O}};Ut.prototype.pointFromX=function(e,a){e=new L1(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(i.redSqr().redSub(r).cmp(this.zero)!==0)throw new Error("invalid point");var d=i.fromRed().isOdd();return(a&&!d||!a&&d)&&(i=i.redNeg()),this.point(e,i)};Ut.prototype.validate=function(e){if(e.inf)return!0;var a=e.x,r=e.y,i=this.a.redMul(a),d=a.redSqr().redMul(a).redIAdd(i).redIAdd(this.b);return r.redSqr().redISub(d).cmpn(0)===0};Ut.prototype._endoWnafMulAdd=function(e,a,r){for(var i=this._endoWnafT1,d=this._endoWnafT2,n=0;n":""};J1.prototype.isInfinity=function(){return this.inf};J1.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var a=this.y.redSub(e.y);a.cmpn(0)!==0&&(a=a.redMul(this.x.redSub(e.x).redInvm()));var r=a.redSqr().redISub(this.x).redISub(e.x),i=a.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)};J1.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var a=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),d=r.redAdd(r).redIAdd(r).redIAdd(a).redMul(i),n=d.redSqr().redISub(this.x.redAdd(this.x)),f=d.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,f)};J1.prototype.getX=function(){return this.x.fromRed()};J1.prototype.getY=function(){return this.y.fromRed()};J1.prototype.mul=function(e){return e=new L1(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};J1.prototype.mulAdd=function(e,a,r){var i=[this,a],d=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,d):this.curve._wnafMulAdd(1,i,d,2)};J1.prototype.jmulAdd=function(e,a,r){var i=[this,a],d=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,d,!0):this.curve._wnafMulAdd(1,i,d,2,!0)};J1.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};J1.prototype.neg=function(e){if(this.inf)return this;var a=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(d){return d.neg()};a.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return a};J1.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function at(t,e,a,r){Ci.BasePoint.call(this,t,"jacobian"),e===null&&a===null&&r===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new L1(0)):(this.x=new L1(e,16),this.y=new L1(a,16),this.z=new L1(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}S4(at,Ci.BasePoint);Ut.prototype.jpoint=function(e,a,r){return new at(this,e,a,r)};at.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),a=e.redSqr(),r=this.x.redMul(a),i=this.y.redMul(a).redMul(e);return this.curve.point(r,i)};at.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};at.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var a=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(a),d=e.x.redMul(r),n=this.y.redMul(a.redMul(e.z)),f=e.y.redMul(r.redMul(this.z)),h=i.redSub(d),v=n.redSub(f);if(h.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var I=h.redSqr(),S=I.redMul(h),O=i.redMul(I),R=v.redSqr().redIAdd(S).redISub(O).redISub(O),V=v.redMul(O.redISub(R)).redISub(n.redMul(S)),L=this.z.redMul(e.z).redMul(h);return this.curve.jpoint(R,V,L)};at.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var a=this.z.redSqr(),r=this.x,i=e.x.redMul(a),d=this.y,n=e.y.redMul(a).redMul(this.z),f=r.redSub(i),h=d.redSub(n);if(f.cmpn(0)===0)return h.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=f.redSqr(),I=v.redMul(f),S=r.redMul(v),O=h.redSqr().redIAdd(I).redISub(S).redISub(S),R=h.redMul(S.redISub(O)).redISub(d.redMul(I)),V=this.z.redMul(f);return this.curve.jpoint(O,R,V)};at.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var a;if(this.curve.zeroA||this.curve.threeA){var r=this;for(a=0;a=0)return!1;if(r.redIAdd(d),this.x.cmp(r)===0)return!0}};at.prototype.inspect=function(){return this.isInfinity()?"":""};at.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var Fc=T((LF,Rc)=>{"use strict";l();var Ni=xa(),Uc=G0(),T2=$0(),DC=Nt();function Di(t){T2.call(this,"mont",t),this.a=new Ni(t.a,16).toRed(this.red),this.b=new Ni(t.b,16).toRed(this.red),this.i4=new Ni(4).toRed(this.red).redInvm(),this.two=new Ni(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Uc(Di,T2);Rc.exports=Di;Di.prototype.validate=function(e){var a=e.normalize().x,r=a.redSqr(),i=r.redMul(a).redAdd(r.redMul(this.a)).redAdd(a),d=i.redSqrt();return d.redSqr().cmp(i)===0};function X1(t,e,a){T2.BasePoint.call(this,t,"projective"),e===null&&a===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Ni(e,16),this.z=new Ni(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Uc(X1,T2.BasePoint);Di.prototype.decodePoint=function(e,a){return this.point(DC.toArray(e,a),1)};Di.prototype.point=function(e,a){return new X1(this,e,a)};Di.prototype.pointFromJSON=function(e){return X1.fromJSON(this,e)};X1.prototype.precompute=function(){};X1.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};X1.fromJSON=function(e,a){return new X1(e,a[0],a[1]||e.one)};X1.prototype.inspect=function(){return this.isInfinity()?"":""};X1.prototype.isInfinity=function(){return this.z.cmpn(0)===0};X1.prototype.dbl=function(){var e=this.x.redAdd(this.z),a=e.redSqr(),r=this.x.redSub(this.z),i=r.redSqr(),d=a.redSub(i),n=a.redMul(i),f=d.redMul(i.redAdd(this.curve.a24.redMul(d)));return this.curve.point(n,f)};X1.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.diffAdd=function(e,a){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),d=e.x.redAdd(e.z),n=e.x.redSub(e.z),f=n.redMul(r),h=d.redMul(i),v=a.z.redMul(f.redAdd(h).redSqr()),I=a.x.redMul(f.redISub(h).redSqr());return this.curve.point(v,I)};X1.prototype.mul=function(e){for(var a=e.clone(),r=this,i=this.curve.point(null,null),d=this,n=[];a.cmpn(0)!==0;a.iushrn(1))n.push(a.andln(1));for(var f=n.length-1;f>=0;f--)n[f]===0?(r=r.diffAdd(i,d),i=i.dbl()):(i=r.diffAdd(i,d),r=r.dbl());return i};X1.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};X1.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};X1.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var kc=T((kF,Qc)=>{"use strict";l();var MC=Nt(),Ga=xa(),Lc=G0(),B2=$0(),TC=MC.assert;function Aa(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,B2.call(this,"edwards",t),this.a=new Ga(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Ga(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Ga(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),TC(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Lc(Aa,B2);Qc.exports=Aa;Aa.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};Aa.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};Aa.prototype.jpoint=function(e,a,r,i){return this.point(e,a,r,i)};Aa.prototype.pointFromX=function(e,a){e=new Ga(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),d=this.one.redSub(this.c2.redMul(this.d).redMul(r)),n=i.redMul(d.redInvm()),f=n.redSqrt();if(f.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var h=f.fromRed().isOdd();return(a&&!h||!a&&h)&&(f=f.redNeg()),this.point(e,f)};Aa.prototype.pointFromY=function(e,a){e=new Ga(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),d=r.redMul(this.d).redMul(this.c2).redSub(this.a),n=i.redMul(d.redInvm());if(n.cmp(this.zero)===0){if(a)throw new Error("invalid point");return this.point(this.zero,e)}var f=n.redSqrt();if(f.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");return f.fromRed().isOdd()!==a&&(f=f.redNeg()),this.point(f,e)};Aa.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var a=e.x.redSqr(),r=e.y.redSqr(),i=a.redMul(this.a).redAdd(r),d=this.c2.redMul(this.one.redAdd(this.d.redMul(a).redMul(r)));return i.cmp(d)===0};function T1(t,e,a,r,i){B2.BasePoint.call(this,t,"projective"),e===null&&a===null&&r===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Ga(e,16),this.y=new Ga(a,16),this.z=r?new Ga(r,16):this.curve.one,this.t=i&&new Ga(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Lc(T1,B2.BasePoint);Aa.prototype.pointFromJSON=function(e){return T1.fromJSON(this,e)};Aa.prototype.point=function(e,a,r,i){return new T1(this,e,a,r,i)};T1.fromJSON=function(e,a){return new T1(e,a[0],a[1],a[2])};T1.prototype.inspect=function(){return this.isInfinity()?"":""};T1.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};T1.prototype._extDbl=function(){var e=this.x.redSqr(),a=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),d=this.x.redAdd(this.y).redSqr().redISub(e).redISub(a),n=i.redAdd(a),f=n.redSub(r),h=i.redSub(a),v=d.redMul(f),I=n.redMul(h),S=d.redMul(h),O=f.redMul(n);return this.curve.point(v,I,O,S)};T1.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),r=this.y.redSqr(),i,d,n,f,h,v;if(this.curve.twisted){f=this.curve._mulA(a);var I=f.redAdd(r);this.zOne?(i=e.redSub(a).redSub(r).redMul(I.redSub(this.curve.two)),d=I.redMul(f.redSub(r)),n=I.redSqr().redSub(I).redSub(I)):(h=this.z.redSqr(),v=I.redSub(h).redISub(h),i=e.redSub(a).redISub(r).redMul(v),d=I.redMul(f.redSub(r)),n=I.redMul(v))}else f=a.redAdd(r),h=this.curve._mulC(this.z).redSqr(),v=f.redSub(h).redSub(h),i=this.curve._mulC(e.redISub(f)).redMul(v),d=this.curve._mulC(f).redMul(a.redISub(r)),n=f.redMul(v);return this.curve.point(i,d,n)};T1.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};T1.prototype._extAdd=function(e){var a=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),d=this.z.redMul(e.z.redAdd(e.z)),n=r.redSub(a),f=d.redSub(i),h=d.redAdd(i),v=r.redAdd(a),I=n.redMul(f),S=h.redMul(v),O=n.redMul(v),R=f.redMul(h);return this.curve.point(I,S,R,O)};T1.prototype._projAdd=function(e){var a=this.z.redMul(e.z),r=a.redSqr(),i=this.x.redMul(e.x),d=this.y.redMul(e.y),n=this.curve.d.redMul(i).redMul(d),f=r.redSub(n),h=r.redAdd(n),v=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(d),I=a.redMul(f).redMul(v),S,O;return this.curve.twisted?(S=a.redMul(h).redMul(d.redSub(this.curve._mulA(i))),O=f.redMul(h)):(S=a.redMul(h).redMul(d.redSub(i)),O=this.curve._mulC(f).redMul(h)),this.curve.point(I,S,O)};T1.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};T1.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};T1.prototype.mulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!1)};T1.prototype.jmulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!0)};T1.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};T1.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};T1.prototype.getX=function(){return this.normalize(),this.x.fromRed()};T1.prototype.getY=function(){return this.normalize(),this.y.fromRed()};T1.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};T1.prototype.eqXToP=function(e){var a=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(a)===0)return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(a.redIAdd(i),this.x.cmp(a)===0)return!0}};T1.prototype.toP=T1.prototype.normalize;T1.prototype.mixedAdd=T1.prototype.add});var E4=T(jc=>{"use strict";l();var q2=jc;q2.base=$0();q2.short=Vc();q2.mont=Fc();q2.edwards=kc()});var ta=T(M1=>{"use strict";l();var BC=Ar(),qC=G0();M1.inherits=qC;function OC(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function PC(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var a=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),i=0;i>6|192,a[r++]=d&63|128):OC(t,i)?(d=65536+((d&1023)<<10)+(t.charCodeAt(++i)&1023),a[r++]=d>>18|240,a[r++]=d>>12&63|128,a[r++]=d>>6&63|128,a[r++]=d&63|128):(a[r++]=d>>12|224,a[r++]=d>>6&63|128,a[r++]=d&63|128)}else for(i=0;i>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}M1.htonl=Hc;function UC(t,e){for(var a="",r=0;r>>0}return d}M1.join32=RC;function FC(t,e){for(var a=new Array(t.length*4),r=0,i=0;r>>24,a[i+1]=d>>>16&255,a[i+2]=d>>>8&255,a[i+3]=d&255):(a[i+3]=d>>>24,a[i+2]=d>>>16&255,a[i+1]=d>>>8&255,a[i]=d&255)}return a}M1.split32=FC;function LC(t,e){return t>>>e|t<<32-e}M1.rotr32=LC;function QC(t,e){return t<>>32-e}M1.rotl32=QC;function kC(t,e){return t+e>>>0}M1.sum32=kC;function jC(t,e,a){return t+e+a>>>0}M1.sum32_3=jC;function HC(t,e,a,r){return t+e+a+r>>>0}M1.sum32_4=HC;function KC(t,e,a,r,i){return t+e+a+r+i>>>0}M1.sum32_5=KC;function zC(t,e,a,r){var i=t[e],d=t[e+1],n=r+d>>>0,f=(n>>0,t[e+1]=n}M1.sum64=zC;function $C(t,e,a,r){var i=e+r>>>0,d=(i>>0}M1.sum64_hi=$C;function GC(t,e,a,r){var i=e+r;return i>>>0}M1.sum64_lo=GC;function YC(t,e,a,r,i,d,n,f){var h=0,v=e;v=v+r>>>0,h+=v>>0,h+=v>>0,h+=v>>0}M1.sum64_4_hi=YC;function WC(t,e,a,r,i,d,n,f){var h=e+r+d+f;return h>>>0}M1.sum64_4_lo=WC;function JC(t,e,a,r,i,d,n,f,h,v){var I=0,S=e;S=S+r>>>0,I+=S>>0,I+=S>>0,I+=S>>0,I+=S>>0}M1.sum64_5_hi=JC;function XC(t,e,a,r,i,d,n,f,h,v){var I=e+r+d+f+v;return I>>>0}M1.sum64_5_lo=XC;function ZC(t,e,a){var r=e<<32-a|t>>>a;return r>>>0}M1.rotr64_hi=ZC;function eN(t,e,a){var r=t<<32-a|e>>>a;return r>>>0}M1.rotr64_lo=eN;function tN(t,e,a){return t>>>a}M1.shr64_hi=tN;function aN(t,e,a){var r=t<<32-a|e>>>a;return r>>>0}M1.shr64_lo=aN});var Mi=T(Gc=>{"use strict";l();var $c=ta(),rN=Ar();function O2(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}Gc.BlockHash=O2;O2.prototype.update=function(e,a){if(e=$c.toArray(e,a),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var r=e.length%this._delta8;this.pending=e.slice(e.length-r,e.length),this.pending.length===0&&(this.pending=null),e=$c.join32(e,0,e.length-r,this.endian);for(var i=0;i>>24&255,i[d++]=e>>>16&255,i[d++]=e>>>8&255,i[d++]=e&255}else for(i[d++]=e&255,i[d++]=e>>>8&255,i[d++]=e>>>16&255,i[d++]=e>>>24&255,i[d++]=0,i[d++]=0,i[d++]=0,i[d++]=0,n=8;n{"use strict";l();var iN=ta(),wa=iN.rotr32;function dN(t,e,a,r){if(t===0)return Yc(e,a,r);if(t===1||t===3)return Jc(e,a,r);if(t===2)return Wc(e,a,r)}Ya.ft_1=dN;function Yc(t,e,a){return t&e^~t&a}Ya.ch32=Yc;function Wc(t,e,a){return t&e^t&a^e&a}Ya.maj32=Wc;function Jc(t,e,a){return t^e^a}Ya.p32=Jc;function pN(t){return wa(t,2)^wa(t,13)^wa(t,22)}Ya.s0_256=pN;function nN(t){return wa(t,6)^wa(t,11)^wa(t,25)}Ya.s1_256=nN;function sN(t){return wa(t,7)^wa(t,18)^t>>>3}Ya.g0_256=sN;function fN(t){return wa(t,17)^wa(t,19)^t>>>10}Ya.g1_256=fN});var eh=T((XF,Zc)=>{"use strict";l();var Ti=ta(),oN=Mi(),lN=C4(),N4=Ti.rotl32,Y0=Ti.sum32,uN=Ti.sum32_5,cN=lN.ft_1,Xc=oN.BlockHash,hN=[1518500249,1859775393,2400959708,3395469782];function _a(){if(!(this instanceof _a))return new _a;Xc.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Ti.inherits(_a,Xc);Zc.exports=_a;_a.blockSize=512;_a.outSize=160;_a.hmacStrength=80;_a.padLength=64;_a.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i{"use strict";l();var Bi=ta(),mN=Mi(),qi=C4(),vN=Ar(),aa=Bi.sum32,bN=Bi.sum32_4,gN=Bi.sum32_5,yN=qi.ch32,xN=qi.maj32,AN=qi.s0_256,wN=qi.s1_256,_N=qi.g0_256,IN=qi.g1_256,th=mN.BlockHash,SN=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Ia(){if(!(this instanceof Ia))return new Ia;th.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=SN,this.W=new Array(64)}Bi.inherits(Ia,th);ah.exports=Ia;Ia.blockSize=512;Ia.outSize=256;Ia.hmacStrength=192;Ia.padLength=64;Ia.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i{"use strict";l();var M4=ta(),rh=D4();function Wa(){if(!(this instanceof Wa))return new Wa;rh.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}M4.inherits(Wa,rh);ih.exports=Wa;Wa.blockSize=512;Wa.outSize=224;Wa.hmacStrength=192;Wa.padLength=64;Wa.prototype._digest=function(e){return e==="hex"?M4.toHex32(this.h.slice(0,7),"big"):M4.split32(this.h.slice(0,7),"big")}});var q4=T((iL,fh)=>{"use strict";l();var yt=ta(),EN=Mi(),CN=Ar(),Sa=yt.rotr64_hi,Ea=yt.rotr64_lo,ph=yt.shr64_hi,nh=yt.shr64_lo,Ir=yt.sum64,T4=yt.sum64_hi,B4=yt.sum64_lo,NN=yt.sum64_4_hi,DN=yt.sum64_4_lo,MN=yt.sum64_5_hi,TN=yt.sum64_5_lo,sh=EN.BlockHash,BN=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function ra(){if(!(this instanceof ra))return new ra;sh.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=BN,this.W=new Array(160)}yt.inherits(ra,sh);fh.exports=ra;ra.blockSize=1024;ra.outSize=512;ra.hmacStrength=192;ra.padLength=128;ra.prototype._prepareBlock=function(e,a){for(var r=this.W,i=0;i<32;i++)r[i]=e[a+i];for(;i{"use strict";l();var O4=ta(),oh=q4();function Ja(){if(!(this instanceof Ja))return new Ja;oh.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}O4.inherits(Ja,oh);lh.exports=Ja;Ja.blockSize=1024;Ja.outSize=384;Ja.hmacStrength=192;Ja.padLength=128;Ja.prototype._digest=function(e){return e==="hex"?O4.toHex32(this.h.slice(0,12),"big"):O4.split32(this.h.slice(0,12),"big")}});var ch=T(Oi=>{"use strict";l();Oi.sha1=eh();Oi.sha224=dh();Oi.sha256=D4();Oi.sha384=uh();Oi.sha512=q4()});var yh=T(gh=>{"use strict";l();var ti=ta(),KN=Mi(),P2=ti.rotl32,hh=ti.sum32,W0=ti.sum32_3,mh=ti.sum32_4,bh=KN.BlockHash;function Ca(){if(!(this instanceof Ca))return new Ca;bh.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}ti.inherits(Ca,bh);gh.ripemd160=Ca;Ca.blockSize=512;Ca.outSize=160;Ca.hmacStrength=192;Ca.padLength=64;Ca.prototype._update=function(e,a){for(var r=this.h[0],i=this.h[1],d=this.h[2],n=this.h[3],f=this.h[4],h=r,v=i,I=d,S=n,O=f,R=0;R<80;R++){var V=hh(P2(mh(r,vh(R,i,d,n),e[GN[R]+a],zN(R)),WN[R]),f);r=f,f=n,n=P2(d,10),d=i,i=V,V=hh(P2(mh(h,vh(79-R,v,I,S),e[YN[R]+a],$N(R)),JN[R]),O),h=O,O=S,S=P2(I,10),I=v,v=V}V=W0(this.h[1],d,S),this.h[1]=W0(this.h[2],n,O),this.h[2]=W0(this.h[3],f,h),this.h[3]=W0(this.h[4],r,v),this.h[4]=W0(this.h[0],i,I),this.h[0]=V};Ca.prototype._digest=function(e){return e==="hex"?ti.toHex32(this.h,"little"):ti.split32(this.h,"little")};function vh(t,e,a,r){return t<=15?e^a^r:t<=31?e&a|~e&r:t<=47?(e|~a)^r:t<=63?e&r|a&~r:e^(a|~r)}function zN(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function $N(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var GN=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],YN=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],WN=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],JN=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var Ah=T((uL,xh)=>{"use strict";l();var XN=ta(),ZN=Ar();function Pi(t,e,a){if(!(this instanceof Pi))return new Pi(t,e,a);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(XN.toArray(e,a))}xh.exports=Pi;Pi.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),ZN(e.length<=this.blockSize);for(var a=e.length;a{l();var rt=wh;rt.utils=ta();rt.common=Mi();rt.sha=ch();rt.ripemd=yh();rt.hmac=Ah();rt.sha1=rt.sha.sha1;rt.sha256=rt.sha.sha256;rt.sha224=rt.sha.sha224;rt.sha384=rt.sha.sha384;rt.sha512=rt.sha.sha512;rt.ripemd160=rt.ripemd.ripemd160});var Ih=T((vL,_h)=>{l();_h.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var U2=T(Ch=>{"use strict";l();var V4=Ch,Sr=V2(),P4=E4(),eD=Nt(),Sh=eD.assert;function Eh(t){t.type==="short"?this.curve=new P4.short(t):t.type==="edwards"?this.curve=new P4.edwards(t):this.curve=new P4.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,Sh(this.g.validate(),"Invalid curve"),Sh(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}V4.PresetCurve=Eh;function Er(t,e){Object.defineProperty(V4,t,{configurable:!0,enumerable:!0,get:function(){var a=new Eh(e);return Object.defineProperty(V4,t,{configurable:!0,enumerable:!0,value:a}),a}})}Er("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:Sr.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});Er("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:Sr.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});Er("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:Sr.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});Er("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:Sr.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});Er("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:Sr.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});Er("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Sr.sha256,gRed:!1,g:["9"]});Er("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Sr.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var U4;try{U4=Ih()}catch{U4=void 0}Er("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:Sr.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",U4]})});var Mh=T((xL,Dh)=>{"use strict";l();var tD=V2(),ai=b4(),Nh=Ar();function Cr(t){if(!(this instanceof Cr))return new Cr(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=ai.toArray(t.entropy,t.entropyEnc||"hex"),a=ai.toArray(t.nonce,t.nonceEnc||"hex"),r=ai.toArray(t.pers,t.persEnc||"hex");Nh(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,a,r)}Dh.exports=Cr;Cr.prototype._init=function(e,a,r){var i=e.concat(a).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var d=0;d=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1};Cr.prototype.generate=function(e,a,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof a!="string"&&(i=r,r=a,a=null),r&&(r=ai.toArray(r,i||"hex"),this._update(r));for(var d=[];d.length{"use strict";l();var aD=xa(),rD=Nt(),R4=rD.assert;function ft(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}Th.exports=ft;ft.fromPublic=function(e,a,r){return a instanceof ft?a:new ft(e,{pub:a,pubEnc:r})};ft.fromPrivate=function(e,a,r){return a instanceof ft?a:new ft(e,{priv:a,privEnc:r})};ft.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};ft.prototype.getPublic=function(e,a){return typeof e=="string"&&(a=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),a?this.pub.encode(a,e):this.pub};ft.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};ft.prototype._importPrivate=function(e,a){this.priv=new aD(e,a||16),this.priv=this.priv.umod(this.ec.curve.n)};ft.prototype._importPublic=function(e,a){if(e.x||e.y){this.ec.curve.type==="mont"?R4(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&R4(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,a)};ft.prototype.derive=function(e){return e.validate()||R4(e.validate(),"public point not validated"),e.mul(this.priv).getX()};ft.prototype.sign=function(e,a,r){return this.ec.sign(e,this,a,r)};ft.prototype.verify=function(e,a){return this.ec.verify(e,a,this)};ft.prototype.inspect=function(){return""}});var Ph=T((IL,Oh)=>{"use strict";l();var R2=xa(),Q4=Nt(),iD=Q4.assert;function F2(t,e){if(t instanceof F2)return t;this._importDER(t,e)||(iD(t.r&&t.s,"Signature without r or s"),this.r=new R2(t.r,16),this.s=new R2(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}Oh.exports=F2;function dD(){this.place=0}function F4(t,e){var a=t[e.place++];if(!(a&128))return a;var r=a&15;if(r===0||r>4)return!1;for(var i=0,d=0,n=e.place;d>>=0;return i<=127?!1:(e.place=n,i)}function qh(t){for(var e=0,a=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(a|128);--a;)t.push(e>>>(a<<3)&255);t.push(e)}F2.prototype.toDER=function(e){var a=this.r.toArray(),r=this.s.toArray();for(a[0]&128&&(a=[0].concat(a)),r[0]&128&&(r=[0].concat(r)),a=qh(a),r=qh(r);!r[0]&&!(r[1]&128);)r=r.slice(1);var i=[2];L4(i,a.length),i=i.concat(a),i.push(2),L4(i,r.length);var d=i.concat(r),n=[48];return L4(n,d.length),n=n.concat(d),Q4.encode(n,e)}});var Fh=T((EL,Rh)=>{"use strict";l();var ri=xa(),Vh=Mh(),pD=Nt(),k4=U2(),nD=A4(),Uh=pD.assert,j4=Bh(),L2=Ph();function Rt(t){if(!(this instanceof Rt))return new Rt(t);typeof t=="string"&&(Uh(Object.prototype.hasOwnProperty.call(k4,t),"Unknown curve "+t),t=k4[t]),t instanceof k4.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}Rh.exports=Rt;Rt.prototype.keyPair=function(e){return new j4(this,e)};Rt.prototype.keyFromPrivate=function(e,a){return j4.fromPrivate(this,e,a)};Rt.prototype.keyFromPublic=function(e,a){return j4.fromPublic(this,e,a)};Rt.prototype.genKeyPair=function(e){e||(e={});for(var a=new Vh({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||nD(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),i=this.n.sub(new ri(2));;){var d=new ri(a.generate(r));if(!(d.cmp(i)>0))return d.iaddn(1),this.keyFromPrivate(d)}};Rt.prototype._truncateToN=function(e,a){var r=e.byteLength()*8-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!a&&e.cmp(this.n)>=0?e.sub(this.n):e};Rt.prototype.sign=function(e,a,r,i){typeof r=="object"&&(i=r,r=null),i||(i={}),a=this.keyFromPrivate(a,r),e=this._truncateToN(new ri(e,16));for(var d=this.n.byteLength(),n=a.getPrivate().toArray("be",d),f=e.toArray("be",d),h=new Vh({hash:this.hash,entropy:n,nonce:f,pers:i.pers,persEnc:i.persEnc||"utf8"}),v=this.n.sub(new ri(1)),I=0;;I++){var S=i.k?i.k(I):new ri(h.generate(this.n.byteLength()));if(S=this._truncateToN(S,!0),!(S.cmpn(1)<=0||S.cmp(v)>=0)){var O=this.g.mul(S);if(!O.isInfinity()){var R=O.getX(),V=R.umod(this.n);if(V.cmpn(0)!==0){var L=S.invm(this.n).mul(V.mul(a.getPrivate()).iadd(e));if(L=L.umod(this.n),L.cmpn(0)!==0){var $=(O.getY().isOdd()?1:0)|(R.cmp(V)!==0?2:0);return i.canonical&&L.cmp(this.nh)>0&&(L=this.n.sub(L),$^=1),new L2({r:V,s:L,recoveryParam:$})}}}}}};Rt.prototype.verify=function(e,a,r,i){e=this._truncateToN(new ri(e,16)),r=this.keyFromPublic(r,i),a=new L2(a,"hex");var d=a.r,n=a.s;if(d.cmpn(1)<0||d.cmp(this.n)>=0||n.cmpn(1)<0||n.cmp(this.n)>=0)return!1;var f=n.invm(this.n),h=f.mul(e).umod(this.n),v=f.mul(d).umod(this.n),I;return this.curve._maxwellTrick?(I=this.g.jmulAdd(h,r.getPublic(),v),I.isInfinity()?!1:I.eqXToP(d)):(I=this.g.mulAdd(h,r.getPublic(),v),I.isInfinity()?!1:I.getX().umod(this.n).cmp(d)===0)};Rt.prototype.recoverPubKey=function(t,e,a,r){Uh((3&a)===a,"The recovery param is more than two bits"),e=new L2(e,r);var i=this.n,d=new ri(t),n=e.r,f=e.s,h=a&1,v=a>>1;if(n.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?n=this.curve.pointFromX(n.add(this.curve.n),h):n=this.curve.pointFromX(n,h);var I=e.r.invm(i),S=i.sub(d).mul(I).umod(i),O=f.mul(I).umod(i);return this.g.mulAdd(S,n,O)};Rt.prototype.getKeyRecoveryParam=function(t,e,a,r){if(e=new L2(e,r),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var d;try{d=this.recoverPubKey(t,e,i)}catch{continue}if(d.eq(a))return i}throw new Error("Unable to find valid recovery factor")}});var jh=T((NL,kh)=>{"use strict";l();var J0=Nt(),Qh=J0.assert,Lh=J0.parseBytes,Vi=J0.cachedProperty;function Z1(t,e){this.eddsa=t,this._secret=Lh(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=Lh(e.pub)}Z1.fromPublic=function(e,a){return a instanceof Z1?a:new Z1(e,{pub:a})};Z1.fromSecret=function(e,a){return a instanceof Z1?a:new Z1(e,{secret:a})};Z1.prototype.secret=function(){return this._secret};Vi(Z1,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});Vi(Z1,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});Vi(Z1,"privBytes",function(){var e=this.eddsa,a=this.hash(),r=e.encodingLength-1,i=a.slice(0,e.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i});Vi(Z1,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});Vi(Z1,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});Vi(Z1,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});Z1.prototype.sign=function(e){return Qh(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};Z1.prototype.verify=function(e,a){return this.eddsa.verify(e,a,this)};Z1.prototype.getSecret=function(e){return Qh(this._secret,"KeyPair is public only"),J0.encode(this.secret(),e)};Z1.prototype.getPublic=function(e){return J0.encode(this.pubBytes(),e)};kh.exports=Z1});var Kh=T((ML,Hh)=>{"use strict";l();var sD=xa(),Q2=Nt(),fD=Q2.assert,k2=Q2.cachedProperty,oD=Q2.parseBytes;function ii(t,e){this.eddsa=t,typeof e!="object"&&(e=oD(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),fD(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof sD&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}k2(ii,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});k2(ii,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});k2(ii,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});k2(ii,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});ii.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};ii.prototype.toHex=function(){return Q2.encode(this.toBytes(),"hex").toUpperCase()};Hh.exports=ii});var Wh=T((BL,Yh)=>{"use strict";l();var lD=V2(),uD=U2(),Ui=Nt(),cD=Ui.assert,$h=Ui.parseBytes,Gh=jh(),zh=Kh();function xt(t){if(cD(t==="ed25519","only tested with ed25519 so far"),!(this instanceof xt))return new xt(t);t=uD[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=lD.sha512}Yh.exports=xt;xt.prototype.sign=function(e,a){e=$h(e);var r=this.keyFromSecret(a),i=this.hashInt(r.messagePrefix(),e),d=this.g.mul(i),n=this.encodePoint(d),f=this.hashInt(n,r.pubBytes(),e).mul(r.priv()),h=i.add(f).umod(this.curve.n);return this.makeSignature({R:d,S:h,Rencoded:n})};xt.prototype.verify=function(e,a,r){e=$h(e),a=this.makeSignature(a);var i=this.keyFromPublic(r),d=this.hashInt(a.Rencoded(),i.pubBytes(),e),n=this.g.mul(a.S()),f=a.R().add(i.pub().mul(d));return f.eq(n)};xt.prototype.hashInt=function(){for(var e=this.hash(),a=0;a{"use strict";l();var di=Jh;di.version=Sc().version;di.utils=Nt();di.rand=A4();di.curve=E4();di.curves=U2();di.ec=Fh();di.eddsa=Wh()});var Zh=T((VL,j2)=>{l();(function(){"use strict";var t="input is invalid type",e="finalize already called",a=typeof window=="object",r=a?window:{};r.JS_SHA3_NO_WINDOW&&(a=!1);var i=!a&&typeof self=="object",d=!r.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?r=global:i&&(r=self);var n=!r.JS_SHA3_NO_COMMON_JS&&typeof j2=="object"&&j2.exports,f=typeof define=="function"&&define.amd,h=!r.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),I=[31,7936,2031616,520093696],S=[4,1024,262144,67108864],O=[1,256,65536,16777216],R=[6,1536,393216,100663296],V=[0,8,16,24],L=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],$=[224,256,384,512],X=[128,256],ie=["hex","buffer","arrayBuffer","array","digest"],oe={128:168,256:136};(r.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(b){return Object.prototype.toString.call(b)==="[object Array]"}),h&&(r.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(b){return typeof b=="object"&&b.buffer&&b.buffer.constructor===ArrayBuffer});for(var we=function(b,z,k){return function(j){return new J(b,z,b).update(j)[k]()}},Ie=function(b,z,k){return function(j,ne){return new J(b,z,ne).update(j)[k]()}},ye=function(b,z,k){return function(j,ne,re,de){return A["cshake"+b].update(j,ne,re,de)[k]()}},ce=function(b,z,k){return function(j,ne,re,de){return A["kmac"+b].update(j,ne,re,de)[k]()}},Ne=function(b,z,k,j){for(var ne=0;ne>5,this.byteCount=this.blockCount<<2,this.outputBlocks=k>>5,this.extraBytes=(k&31)>>3;for(var j=0;j<50;++j)this.s[j]=0}J.prototype.update=function(b){if(this.finalized)throw new Error(e);var z,k=typeof b;if(k!=="string"){if(k==="object"){if(b===null)throw new Error(t);if(h&&b.constructor===ArrayBuffer)b=new Uint8Array(b);else if(!Array.isArray(b)&&(!h||!ArrayBuffer.isView(b)))throw new Error(t)}else throw new Error(t);z=!0}for(var j=this.blocks,ne=this.byteCount,re=b.length,de=this.blockCount,he=0,Ce=this.s,fe,Ue;he>2]|=b[he]<>2]|=Ue<>2]|=(192|Ue>>6)<>2]|=(128|Ue&63)<=57344?(j[fe>>2]|=(224|Ue>>12)<>2]|=(128|Ue>>6&63)<>2]|=(128|Ue&63)<>2]|=(240|Ue>>18)<>2]|=(128|Ue>>12&63)<>2]|=(128|Ue>>6&63)<>2]|=(128|Ue&63)<=ne){for(this.start=fe-ne,this.block=j[de],fe=0;fe>8,k=b&255;k>0;)ne.unshift(k),b=b>>8,k=b&255,++j;return z?ne.push(j):ne.unshift(j),this.update(ne),ne.length},J.prototype.encodeString=function(b){var z,k=typeof b;if(k!=="string"){if(k==="object"){if(b===null)throw new Error(t);if(h&&b.constructor===ArrayBuffer)b=new Uint8Array(b);else if(!Array.isArray(b)&&(!h||!ArrayBuffer.isView(b)))throw new Error(t)}else throw new Error(t);z=!0}var j=0,ne=b.length;if(z)j=ne;else for(var re=0;re=57344?j+=3:(de=65536+((de&1023)<<10|b.charCodeAt(++re)&1023),j+=4)}return j+=this.encode(j*8),this.update(b),j},J.prototype.bytepad=function(b,z){for(var k=this.encode(z),j=0;j>2]|=this.padding[z&3],this.lastByteIndex===this.byteCount)for(b[0]=b[k],z=1;z>4&15]+v[he&15]+v[he>>12&15]+v[he>>8&15]+v[he>>20&15]+v[he>>16&15]+v[he>>28&15]+v[he>>24&15];re%b===0&&(Z(z),ne=0)}return j&&(he=z[ne],de+=v[he>>4&15]+v[he&15],j>1&&(de+=v[he>>12&15]+v[he>>8&15]),j>2&&(de+=v[he>>20&15]+v[he>>16&15])),de},J.prototype.arrayBuffer=function(){this.finalize();var b=this.blockCount,z=this.s,k=this.outputBlocks,j=this.extraBytes,ne=0,re=0,de=this.outputBits>>3,he;j?he=new ArrayBuffer(k+1<<2):he=new ArrayBuffer(de);for(var Ce=new Uint32Array(he);re>8&255,de[he+2]=Ce>>16&255,de[he+3]=Ce>>24&255;re%b===0&&Z(z)}return j&&(he=re<<2,Ce=z[ne],de[he]=Ce&255,j>1&&(de[he+1]=Ce>>8&255),j>2&&(de[he+2]=Ce>>16&255)),de};function ue(b,z,k){J.call(this,b,z,k)}ue.prototype=new J,ue.prototype.finalize=function(){return this.encode(this.outputBits,!0),J.prototype.finalize.call(this)};var Z=function(b){var z,k,j,ne,re,de,he,Ce,fe,Ue,x1,A1,lt,f1,w1,Lt,c1,o1,Qt,l1,h1,kt,_1,E1,jt,m1,u1,wt,i1,p1,Dt,n1,s1,Ht,I1,C1,Ma,Je,t1,ht,v1,b1,na,N1,Ke,sa,m,w,_,s,E,F,U,K,te,ge,le,Fe,ve,De,Me,qe,Te;for(j=0;j<48;j+=2)ne=b[0]^b[10]^b[20]^b[30]^b[40],re=b[1]^b[11]^b[21]^b[31]^b[41],de=b[2]^b[12]^b[22]^b[32]^b[42],he=b[3]^b[13]^b[23]^b[33]^b[43],Ce=b[4]^b[14]^b[24]^b[34]^b[44],fe=b[5]^b[15]^b[25]^b[35]^b[45],Ue=b[6]^b[16]^b[26]^b[36]^b[46],x1=b[7]^b[17]^b[27]^b[37]^b[47],A1=b[8]^b[18]^b[28]^b[38]^b[48],lt=b[9]^b[19]^b[29]^b[39]^b[49],z=A1^(de<<1|he>>>31),k=lt^(he<<1|de>>>31),b[0]^=z,b[1]^=k,b[10]^=z,b[11]^=k,b[20]^=z,b[21]^=k,b[30]^=z,b[31]^=k,b[40]^=z,b[41]^=k,z=ne^(Ce<<1|fe>>>31),k=re^(fe<<1|Ce>>>31),b[2]^=z,b[3]^=k,b[12]^=z,b[13]^=k,b[22]^=z,b[23]^=k,b[32]^=z,b[33]^=k,b[42]^=z,b[43]^=k,z=de^(Ue<<1|x1>>>31),k=he^(x1<<1|Ue>>>31),b[4]^=z,b[5]^=k,b[14]^=z,b[15]^=k,b[24]^=z,b[25]^=k,b[34]^=z,b[35]^=k,b[44]^=z,b[45]^=k,z=Ce^(A1<<1|lt>>>31),k=fe^(lt<<1|A1>>>31),b[6]^=z,b[7]^=k,b[16]^=z,b[17]^=k,b[26]^=z,b[27]^=k,b[36]^=z,b[37]^=k,b[46]^=z,b[47]^=k,z=Ue^(ne<<1|re>>>31),k=x1^(re<<1|ne>>>31),b[8]^=z,b[9]^=k,b[18]^=z,b[19]^=k,b[28]^=z,b[29]^=k,b[38]^=z,b[39]^=k,b[48]^=z,b[49]^=k,f1=b[0],w1=b[1],sa=b[11]<<4|b[10]>>>28,m=b[10]<<4|b[11]>>>28,wt=b[20]<<3|b[21]>>>29,i1=b[21]<<3|b[20]>>>29,De=b[31]<<9|b[30]>>>23,Me=b[30]<<9|b[31]>>>23,b1=b[40]<<18|b[41]>>>14,na=b[41]<<18|b[40]>>>14,Ht=b[2]<<1|b[3]>>>31,I1=b[3]<<1|b[2]>>>31,Lt=b[13]<<12|b[12]>>>20,c1=b[12]<<12|b[13]>>>20,w=b[22]<<10|b[23]>>>22,_=b[23]<<10|b[22]>>>22,p1=b[33]<<13|b[32]>>>19,Dt=b[32]<<13|b[33]>>>19,qe=b[42]<<2|b[43]>>>30,Te=b[43]<<2|b[42]>>>30,K=b[5]<<30|b[4]>>>2,te=b[4]<<30|b[5]>>>2,C1=b[14]<<6|b[15]>>>26,Ma=b[15]<<6|b[14]>>>26,o1=b[25]<<11|b[24]>>>21,Qt=b[24]<<11|b[25]>>>21,s=b[34]<<15|b[35]>>>17,E=b[35]<<15|b[34]>>>17,n1=b[45]<<29|b[44]>>>3,s1=b[44]<<29|b[45]>>>3,E1=b[6]<<28|b[7]>>>4,jt=b[7]<<28|b[6]>>>4,ge=b[17]<<23|b[16]>>>9,le=b[16]<<23|b[17]>>>9,Je=b[26]<<25|b[27]>>>7,t1=b[27]<<25|b[26]>>>7,l1=b[36]<<21|b[37]>>>11,h1=b[37]<<21|b[36]>>>11,F=b[47]<<24|b[46]>>>8,U=b[46]<<24|b[47]>>>8,N1=b[8]<<27|b[9]>>>5,Ke=b[9]<<27|b[8]>>>5,m1=b[18]<<20|b[19]>>>12,u1=b[19]<<20|b[18]>>>12,Fe=b[29]<<7|b[28]>>>25,ve=b[28]<<7|b[29]>>>25,ht=b[38]<<8|b[39]>>>24,v1=b[39]<<8|b[38]>>>24,kt=b[48]<<14|b[49]>>>18,_1=b[49]<<14|b[48]>>>18,b[0]=f1^~Lt&o1,b[1]=w1^~c1&Qt,b[10]=E1^~m1&wt,b[11]=jt^~u1&i1,b[20]=Ht^~C1&Je,b[21]=I1^~Ma&t1,b[30]=N1^~sa&w,b[31]=Ke^~m&_,b[40]=K^~ge&Fe,b[41]=te^~le&ve,b[2]=Lt^~o1&l1,b[3]=c1^~Qt&h1,b[12]=m1^~wt&p1,b[13]=u1^~i1&Dt,b[22]=C1^~Je&ht,b[23]=Ma^~t1&v1,b[32]=sa^~w&s,b[33]=m^~_&E,b[42]=ge^~Fe&De,b[43]=le^~ve&Me,b[4]=o1^~l1&kt,b[5]=Qt^~h1&_1,b[14]=wt^~p1&n1,b[15]=i1^~Dt&s1,b[24]=Je^~ht&b1,b[25]=t1^~v1&na,b[34]=w^~s&F,b[35]=_^~E&U,b[44]=Fe^~De&qe,b[45]=ve^~Me&Te,b[6]=l1^~kt&f1,b[7]=h1^~_1&w1,b[16]=p1^~n1&E1,b[17]=Dt^~s1&jt,b[26]=ht^~b1&Ht,b[27]=v1^~na&I1,b[36]=s^~F&N1,b[37]=E^~U&Ke,b[46]=De^~qe&K,b[47]=Me^~Te&te,b[8]=kt^~f1&Lt,b[9]=_1^~w1&c1,b[18]=n1^~E1&m1,b[19]=s1^~jt&u1,b[28]=b1^~Ht&C1,b[29]=na^~I1&Ma,b[38]=F^~N1&sa,b[39]=U^~Ke&m,b[48]=qe^~K&ge,b[49]=Te^~te&le,b[0]^=L[j],b[1]^=L[j+1]};if(n)j2.exports=A;else{for(P=0;P{l();Xa.notEqual=mD;Xa.notOk=vD;Xa.equal=hD;Xa.ok=Xa;em.exports=Xa;function hD(t,e,a){Xa(t==e,a)}function mD(t,e,a){Xa(t!=e,a)}function vD(t,e){Xa(!t,e)}function Xa(t,e){if(!t)throw new Error(e||"AssertionError")}});var am=T((LL,tm)=>{l();tm.exports=K4;K4.supported=typeof WebAssembly<"u";function K4(t){if(!K4.supported)return null;var e=t&&t.imports,a=bD("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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"),r=null,i={buffer:a,memory:null,exports:null,realloc:d,onload:n};return n(function(){}),i;function d(h){i.exports.memory.grow(Math.ceil(Math.abs(h-i.memory.length)/65536)),i.memory=new Uint8Array(i.exports.memory.buffer)}function n(h){if(i.exports)return h();if(r){r.then(h.bind(null,null)).catch(h);return}try{if(t&&t.async)throw new Error("async");f({instance:new WebAssembly.Instance(new WebAssembly.Module(a),e)})}catch{r=WebAssembly.instantiate(a,e).then(f)}n(h)}function f(h){i.exports=h.instance.exports,i.memory=i.exports.memory&&i.exports.memory.buffer&&new Uint8Array(i.exports.memory.buffer)}}function bD(t){return typeof atob=="function"?new Uint8Array(atob(t).split("").map(gD)):new(Ge("buffer")).Buffer(t,"base64")}function gD(t){return t.charCodeAt(0)}});var fm=T((HL,Da)=>{l();var Na=H4(),B1=am()(),Za=64,H2=[];Da.exports=Ft;var rm=Da.exports.BYTES_MIN=16,im=Da.exports.BYTES_MAX=64,kL=Da.exports.BYTES=32,dm=Da.exports.KEYBYTES_MIN=16,pm=Da.exports.KEYBYTES_MAX=64,jL=Da.exports.KEYBYTES=32,nm=Da.exports.SALTBYTES=16,sm=Da.exports.PERSONALBYTES=16;function Ft(t,e,a,r,i){if(!(this instanceof Ft))return new Ft(t,e,a,r,i);if(!(B1&&B1.exports))throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),i!==!0&&(Na(t>=rm,"digestLength must be at least "+rm+", was given "+t),Na(t<=im,"digestLength must be at most "+im+", was given "+t),e!=null&&Na(e.length>=dm,"key must be at least "+dm+", was given "+e.length),e!=null&&Na(e.length<=pm,"key must be at least "+pm+", was given "+e.length),a!=null&&Na(a.length===nm,"salt must be exactly "+nm+", was given "+a.length),r!=null&&Na(r.length===sm,"personal must be exactly "+sm+", was given "+r.length)),H2.length||(H2.push(Za),Za+=216),this.digestLength=t,this.finalized=!1,this.pointer=H2.pop(),B1.memory.fill(0,0,64),B1.memory[0]=this.digestLength,B1.memory[1]=e?e.length:0,B1.memory[2]=1,B1.memory[3]=1,a&&B1.memory.set(a,32),r&&B1.memory.set(r,48),this.pointer+216>B1.memory.length&&B1.realloc(this.pointer+216),B1.exports.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),B1.memory.fill(0,Za,Za+e.length),B1.memory[this.pointer+200]=128)}Ft.prototype.update=function(t){return Na(this.finalized===!1,"Hash instance finalized"),Na(t,"input must be TypedArray or Buffer"),Za+t.length>B1.memory.length&&B1.realloc(Za+t.length),B1.memory.set(t,Za),B1.exports.blake2b_update(this.pointer,Za,Za+t.length),this};Ft.prototype.digest=function(t){if(Na(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,H2.push(this.pointer),B1.exports.blake2b_final(this.pointer),!t||t==="binary")return B1.memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(t==="hex")return xD(B1.memory,this.pointer+128,this.digestLength);Na(t.length>=this.digestLength,"input must be TypedArray or Buffer");for(var e=0;e{l();var Mr=H4(),Z0=fm();function K2(t,e,a){var r=t[e]+t[a],i=t[e+1]+t[a+1];r>=4294967296&&i++,t[e]=r,t[e+1]=i}function om(t,e,a,r){var i=t[e]+a;a<0&&(i+=4294967296);var d=t[e+1]+r;i>=4294967296&&d++,t[e]=i,t[e+1]=d}function bm(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function Nr(t,e,a,r,i,d){var n=X0[i],f=X0[i+1],h=X0[d],v=X0[d+1];K2(ke,t,e),om(ke,t,n,f);var I=ke[r]^ke[t],S=ke[r+1]^ke[t+1];ke[r]=S,ke[r+1]=I,K2(ke,a,r),I=ke[e]^ke[a],S=ke[e+1]^ke[a+1],ke[e]=I>>>24^S<<8,ke[e+1]=S>>>24^I<<8,K2(ke,t,e),om(ke,t,h,v),I=ke[r]^ke[t],S=ke[r+1]^ke[t+1],ke[r]=I>>>16^S<<16,ke[r+1]=S>>>16^I<<16,K2(ke,a,r),I=ke[e]^ke[a],S=ke[e+1]^ke[a+1],ke[e]=S>>>31^I<<1,ke[e+1]=I>>>31^S<<1}var gm=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),wD=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],ot=new Uint8Array(wD.map(function(t){return t*2})),ke=new Uint32Array(32),X0=new Uint32Array(32);function ym(t,e){var a=0;for(a=0;a<16;a++)ke[a]=t.h[a],ke[a+16]=gm[a];for(ke[24]=ke[24]^t.t,ke[25]=ke[25]^t.t/4294967296,e&&(ke[28]=~ke[28],ke[29]=~ke[29]),a=0;a<32;a++)X0[a]=bm(t.b,4*a);for(a=0;a<12;a++)Nr(0,8,16,24,ot[a*16+0],ot[a*16+1]),Nr(2,10,18,26,ot[a*16+2],ot[a*16+3]),Nr(4,12,20,28,ot[a*16+4],ot[a*16+5]),Nr(6,14,22,30,ot[a*16+6],ot[a*16+7]),Nr(0,10,20,30,ot[a*16+8],ot[a*16+9]),Nr(2,12,22,24,ot[a*16+10],ot[a*16+11]),Nr(4,14,16,26,ot[a*16+12],ot[a*16+13]),Nr(6,8,18,28,ot[a*16+14],ot[a*16+15]);for(a=0;a<16;a++)t.h[a]=t.h[a]^ke[a]^ke[a+16]}var Dr=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Ri(t,e,a,r){Dr.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=t,Dr[0]=t,e&&(Dr[1]=e.length),Dr[2]=1,Dr[3]=1,a&&Dr.set(a,32),r&&Dr.set(r,48);for(var i=0;i<16;i++)this.h[i]=gm[i]^bm(Dr,i*4);e&&(xm(this,e),this.c=128)}Ri.prototype.update=function(t){return Mr(t!=null,"input must be Uint8Array or Buffer"),xm(this,t),this};Ri.prototype.digest=function(t){var e=!t||t==="binary"||t==="hex"?new Uint8Array(this.outlen):t;return Mr(e.length>=this.outlen,"out must have at least outlen bytes of space"),_D(this,e),t==="hex"?ID(e):e};Ri.prototype.final=Ri.prototype.digest;Ri.ready=function(t){Z0.ready(function(){t()})};function xm(t,e){for(var a=0;a>2]>>8*(a&3);return e}function ID(t){for(var e="",a=0;a=lm,"outlen must be at least "+lm+", was given "+e),Mr(e<=um,"outlen must be at most "+um+", was given "+e),a!=null&&Mr(a.length>=cm,"key must be at least "+cm+", was given "+a.length),a!=null&&Mr(a.length<=hm,"key must be at most "+hm+", was given "+a.length),r!=null&&Mr(r.length===mm,"salt must be exactly "+mm+", was given "+r.length),i!=null&&Mr(i.length===vm,"personal must be exactly "+vm+", was given "+i.length)),new Am(e,a,r,i)};At.exports.ready=function(t){Z0.ready(function(){t()})};At.exports.WASM_SUPPORTED=Z0.SUPPORTED;At.exports.WASM_LOADED=!1;var lm=At.exports.BYTES_MIN=16,um=At.exports.BYTES_MAX=64,zL=At.exports.BYTES=32,cm=At.exports.KEYBYTES_MIN=16,hm=At.exports.KEYBYTES_MAX=64,$L=At.exports.KEYBYTES=32,mm=At.exports.SALTBYTES=16,vm=At.exports.PERSONALBYTES=16;Z0.ready(function(t){t||(At.exports.WASM_LOADED=!0,Am=Z0)})});var Vm=T(er=>{"use strict";l();Object.defineProperty(er,"__esModule",{value:!0});var WL=new Uint8Array(16),Mm=new Uint8Array(32);Mm[0]=9;function Se(t){var e,a=new Float64Array(16);if(t)for(e=0;e>24&255,t[e+1]=a>>16&255,t[e+2]=a>>8&255,t[e+3]=a&255,t[e+4]=r>>24&255,t[e+5]=r>>16&255,t[e+6]=r>>8&255,t[e+7]=r&255}function MD(t,e,a,r,i){var d,n=0;for(d=0;d>>8)-1}function Tm(t,e,a,r){return MD(t,e,a,r,32)}function Tr(t,e){var a;for(a=0;a<16;a++)t[a]=e[a]|0}function z4(t){var e,a,r=1;for(e=0;e<16;e++)a=t[e]+r+65535,r=Math.floor(a/65536),t[e]=a-r*65536;t[0]+=r-1+37*(r-1)}function Fi(t,e,a){for(var r,i=~(a-1),d=0;d<16;d++)r=i&(t[d]^e[d]),t[d]^=r,e[d]^=r}function Qi(t,e){var a,r,i,d=Se(),n=Se();for(a=0;a<16;a++)n[a]=e[a];for(z4(n),z4(n),z4(n),r=0;r<2;r++){for(d[0]=n[0]-65517,a=1;a<15;a++)d[a]=n[a]-65535-(d[a-1]>>16&1),d[a-1]&=65535;d[15]=n[15]-32767-(d[14]>>16&1),i=d[15]>>16&1,d[14]&=65535,Fi(n,d,1-i)}for(a=0;a<16;a++)t[2*a]=n[a]&255,t[2*a+1]=n[a]>>8}function Em(t,e){var a=new Uint8Array(32),r=new Uint8Array(32);return Qi(a,t),Qi(r,e),Tm(a,0,r,0)}function Bm(t){var e=new Uint8Array(32);return Qi(e,t),e[0]&1}function J4(t,e){var a;for(a=0;a<16;a++)t[a]=e[2*a]+(e[2*a+1]<<8);t[15]&=32767}function ia(t,e,a){for(var r=0;r<16;r++)t[r]=e[r]+a[r]}function pa(t,e,a){for(var r=0;r<16;r++)t[r]=e[r]-a[r]}function Xe(t,e,a){var r,i,d=0,n=0,f=0,h=0,v=0,I=0,S=0,O=0,R=0,V=0,L=0,$=0,X=0,ie=0,oe=0,we=0,Ie=0,ye=0,ce=0,Ne=0,C=0,p=0,o=0,c=0,g=0,A=0,D=0,P=0,M=0,u=0,B=0,ae=a[0],se=a[1],J=a[2],ue=a[3],Z=a[4],b=a[5],z=a[6],k=a[7],j=a[8],ne=a[9],re=a[10],de=a[11],he=a[12],Ce=a[13],fe=a[14],Ue=a[15];r=e[0],d+=r*ae,n+=r*se,f+=r*J,h+=r*ue,v+=r*Z,I+=r*b,S+=r*z,O+=r*k,R+=r*j,V+=r*ne,L+=r*re,$+=r*de,X+=r*he,ie+=r*Ce,oe+=r*fe,we+=r*Ue,r=e[1],n+=r*ae,f+=r*se,h+=r*J,v+=r*ue,I+=r*Z,S+=r*b,O+=r*z,R+=r*k,V+=r*j,L+=r*ne,$+=r*re,X+=r*de,ie+=r*he,oe+=r*Ce,we+=r*fe,Ie+=r*Ue,r=e[2],f+=r*ae,h+=r*se,v+=r*J,I+=r*ue,S+=r*Z,O+=r*b,R+=r*z,V+=r*k,L+=r*j,$+=r*ne,X+=r*re,ie+=r*de,oe+=r*he,we+=r*Ce,Ie+=r*fe,ye+=r*Ue,r=e[3],h+=r*ae,v+=r*se,I+=r*J,S+=r*ue,O+=r*Z,R+=r*b,V+=r*z,L+=r*k,$+=r*j,X+=r*ne,ie+=r*re,oe+=r*de,we+=r*he,Ie+=r*Ce,ye+=r*fe,ce+=r*Ue,r=e[4],v+=r*ae,I+=r*se,S+=r*J,O+=r*ue,R+=r*Z,V+=r*b,L+=r*z,$+=r*k,X+=r*j,ie+=r*ne,oe+=r*re,we+=r*de,Ie+=r*he,ye+=r*Ce,ce+=r*fe,Ne+=r*Ue,r=e[5],I+=r*ae,S+=r*se,O+=r*J,R+=r*ue,V+=r*Z,L+=r*b,$+=r*z,X+=r*k,ie+=r*j,oe+=r*ne,we+=r*re,Ie+=r*de,ye+=r*he,ce+=r*Ce,Ne+=r*fe,C+=r*Ue,r=e[6],S+=r*ae,O+=r*se,R+=r*J,V+=r*ue,L+=r*Z,$+=r*b,X+=r*z,ie+=r*k,oe+=r*j,we+=r*ne,Ie+=r*re,ye+=r*de,ce+=r*he,Ne+=r*Ce,C+=r*fe,p+=r*Ue,r=e[7],O+=r*ae,R+=r*se,V+=r*J,L+=r*ue,$+=r*Z,X+=r*b,ie+=r*z,oe+=r*k,we+=r*j,Ie+=r*ne,ye+=r*re,ce+=r*de,Ne+=r*he,C+=r*Ce,p+=r*fe,o+=r*Ue,r=e[8],R+=r*ae,V+=r*se,L+=r*J,$+=r*ue,X+=r*Z,ie+=r*b,oe+=r*z,we+=r*k,Ie+=r*j,ye+=r*ne,ce+=r*re,Ne+=r*de,C+=r*he,p+=r*Ce,o+=r*fe,c+=r*Ue,r=e[9],V+=r*ae,L+=r*se,$+=r*J,X+=r*ue,ie+=r*Z,oe+=r*b,we+=r*z,Ie+=r*k,ye+=r*j,ce+=r*ne,Ne+=r*re,C+=r*de,p+=r*he,o+=r*Ce,c+=r*fe,g+=r*Ue,r=e[10],L+=r*ae,$+=r*se,X+=r*J,ie+=r*ue,oe+=r*Z,we+=r*b,Ie+=r*z,ye+=r*k,ce+=r*j,Ne+=r*ne,C+=r*re,p+=r*de,o+=r*he,c+=r*Ce,g+=r*fe,A+=r*Ue,r=e[11],$+=r*ae,X+=r*se,ie+=r*J,oe+=r*ue,we+=r*Z,Ie+=r*b,ye+=r*z,ce+=r*k,Ne+=r*j,C+=r*ne,p+=r*re,o+=r*de,c+=r*he,g+=r*Ce,A+=r*fe,D+=r*Ue,r=e[12],X+=r*ae,ie+=r*se,oe+=r*J,we+=r*ue,Ie+=r*Z,ye+=r*b,ce+=r*z,Ne+=r*k,C+=r*j,p+=r*ne,o+=r*re,c+=r*de,g+=r*he,A+=r*Ce,D+=r*fe,P+=r*Ue,r=e[13],ie+=r*ae,oe+=r*se,we+=r*J,Ie+=r*ue,ye+=r*Z,ce+=r*b,Ne+=r*z,C+=r*k,p+=r*j,o+=r*ne,c+=r*re,g+=r*de,A+=r*he,D+=r*Ce,P+=r*fe,M+=r*Ue,r=e[14],oe+=r*ae,we+=r*se,Ie+=r*J,ye+=r*ue,ce+=r*Z,Ne+=r*b,C+=r*z,p+=r*k,o+=r*j,c+=r*ne,g+=r*re,A+=r*de,D+=r*he,P+=r*Ce,M+=r*fe,u+=r*Ue,r=e[15],we+=r*ae,Ie+=r*se,ye+=r*J,ce+=r*ue,Ne+=r*Z,C+=r*b,p+=r*z,o+=r*k,c+=r*j,g+=r*ne,A+=r*re,D+=r*de,P+=r*he,M+=r*Ce,u+=r*fe,B+=r*Ue,d+=38*Ie,n+=38*ye,f+=38*ce,h+=38*Ne,v+=38*C,I+=38*p,S+=38*o,O+=38*c,R+=38*g,V+=38*A,L+=38*D,$+=38*P,X+=38*M,ie+=38*u,oe+=38*B,i=1,r=d+i+65535,i=Math.floor(r/65536),d=r-i*65536,r=n+i+65535,i=Math.floor(r/65536),n=r-i*65536,r=f+i+65535,i=Math.floor(r/65536),f=r-i*65536,r=h+i+65535,i=Math.floor(r/65536),h=r-i*65536,r=v+i+65535,i=Math.floor(r/65536),v=r-i*65536,r=I+i+65535,i=Math.floor(r/65536),I=r-i*65536,r=S+i+65535,i=Math.floor(r/65536),S=r-i*65536,r=O+i+65535,i=Math.floor(r/65536),O=r-i*65536,r=R+i+65535,i=Math.floor(r/65536),R=r-i*65536,r=V+i+65535,i=Math.floor(r/65536),V=r-i*65536,r=L+i+65535,i=Math.floor(r/65536),L=r-i*65536,r=$+i+65535,i=Math.floor(r/65536),$=r-i*65536,r=X+i+65535,i=Math.floor(r/65536),X=r-i*65536,r=ie+i+65535,i=Math.floor(r/65536),ie=r-i*65536,r=oe+i+65535,i=Math.floor(r/65536),oe=r-i*65536,r=we+i+65535,i=Math.floor(r/65536),we=r-i*65536,d+=i-1+37*(i-1),i=1,r=d+i+65535,i=Math.floor(r/65536),d=r-i*65536,r=n+i+65535,i=Math.floor(r/65536),n=r-i*65536,r=f+i+65535,i=Math.floor(r/65536),f=r-i*65536,r=h+i+65535,i=Math.floor(r/65536),h=r-i*65536,r=v+i+65535,i=Math.floor(r/65536),v=r-i*65536,r=I+i+65535,i=Math.floor(r/65536),I=r-i*65536,r=S+i+65535,i=Math.floor(r/65536),S=r-i*65536,r=O+i+65535,i=Math.floor(r/65536),O=r-i*65536,r=R+i+65535,i=Math.floor(r/65536),R=r-i*65536,r=V+i+65535,i=Math.floor(r/65536),V=r-i*65536,r=L+i+65535,i=Math.floor(r/65536),L=r-i*65536,r=$+i+65535,i=Math.floor(r/65536),$=r-i*65536,r=X+i+65535,i=Math.floor(r/65536),X=r-i*65536,r=ie+i+65535,i=Math.floor(r/65536),ie=r-i*65536,r=oe+i+65535,i=Math.floor(r/65536),oe=r-i*65536,r=we+i+65535,i=Math.floor(r/65536),we=r-i*65536,d+=i-1+37*(i-1),t[0]=d,t[1]=n,t[2]=f,t[3]=h,t[4]=v,t[5]=I,t[6]=S,t[7]=O,t[8]=R,t[9]=V,t[10]=L,t[11]=$,t[12]=X,t[13]=ie,t[14]=oe,t[15]=we}function da(t,e){Xe(t,e,e)}function X4(t,e){var a=Se(),r;for(r=0;r<16;r++)a[r]=e[r];for(r=253;r>=0;r--)da(a,a),r!==2&&r!==4&&Xe(a,a,e);for(r=0;r<16;r++)t[r]=a[r]}function TD(t,e){var a=Se(),r;for(r=0;r<16;r++)a[r]=e[r];for(r=250;r>=0;r--)da(a,a),r!==1&&Xe(a,a,e);for(r=0;r<16;r++)t[r]=a[r]}function qm(t,e,a){var r=new Uint8Array(32),i=new Float64Array(80),d,n,f=Se(),h=Se(),v=Se(),I=Se(),S=Se(),O=Se();for(n=0;n<31;n++)r[n]=e[n];for(r[31]=e[31]&127|64,r[0]&=248,J4(i,a),n=0;n<16;n++)h[n]=i[n],I[n]=f[n]=v[n]=0;for(f[0]=I[0]=1,n=254;n>=0;--n)d=r[n>>>3]>>>(n&7)&1,Fi(f,h,d),Fi(v,I,d),ia(S,f,v),pa(f,f,v),ia(v,h,I),pa(h,h,I),da(I,S),da(O,f),Xe(f,v,f),Xe(v,h,S),ia(S,f,v),pa(f,f,v),da(h,f),pa(v,I,O),Xe(f,v,ED),ia(f,f,I),Xe(v,v,f),Xe(f,I,O),Xe(I,h,i),da(h,S),Fi(f,h,d),Fi(v,I,d);for(n=0;n<16;n++)i[n+16]=f[n],i[n+32]=v[n],i[n+48]=h[n],i[n+64]=I[n];var R=i.subarray(32),V=i.subarray(16);return X4(R,R),Xe(V,V,R),Qi(t,V),0}function BD(t,e){return qm(t,e,Mm)}var Cm=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Nm(t,e,a,r){for(var i=new Int32Array(16),d=new Int32Array(16),n,f,h,v,I,S,O,R,V,L,$,X,ie,oe,we,Ie,ye,ce,Ne,C,p,o,c,g,A,D,P=t[0],M=t[1],u=t[2],B=t[3],ae=t[4],se=t[5],J=t[6],ue=t[7],Z=e[0],b=e[1],z=e[2],k=e[3],j=e[4],ne=e[5],re=e[6],de=e[7],he=0;r>=128;){for(Ne=0;Ne<16;Ne++)C=8*Ne+he,i[Ne]=a[C+0]<<24|a[C+1]<<16|a[C+2]<<8|a[C+3],d[Ne]=a[C+4]<<24|a[C+5]<<16|a[C+6]<<8|a[C+7];for(Ne=0;Ne<80;Ne++)if(n=P,f=M,h=u,v=B,I=ae,S=se,O=J,R=ue,V=Z,L=b,$=z,X=k,ie=j,oe=ne,we=re,Ie=de,p=ue,o=de,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=(ae>>>14|j<<32-14)^(ae>>>18|j<<32-18)^(j>>>41-32|ae<<32-(41-32)),o=(j>>>14|ae<<32-14)^(j>>>18|ae<<32-18)^(ae>>>41-32|j<<32-(41-32)),c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,p=ae&se^~ae&J,o=j&ne^~j&re,c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,p=Cm[Ne*2],o=Cm[Ne*2+1],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,p=i[Ne%16],o=d[Ne%16],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,ye=A&65535|D<<16,ce=c&65535|g<<16,p=ye,o=ce,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=(P>>>28|Z<<32-28)^(Z>>>34-32|P<<32-(34-32))^(Z>>>39-32|P<<32-(39-32)),o=(Z>>>28|P<<32-28)^(P>>>34-32|Z<<32-(34-32))^(P>>>39-32|Z<<32-(39-32)),c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,p=P&M^P&u^M&u,o=Z&b^Z&z^b&z,c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,R=A&65535|D<<16,Ie=c&65535|g<<16,p=v,o=X,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=ye,o=ce,c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,v=A&65535|D<<16,X=c&65535|g<<16,M=n,u=f,B=h,ae=v,se=I,J=S,ue=O,P=R,b=V,z=L,k=$,j=X,ne=ie,re=oe,de=we,Z=Ie,Ne%16===15)for(C=0;C<16;C++)p=i[C],o=d[C],c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=i[(C+9)%16],o=d[(C+9)%16],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,ye=i[(C+1)%16],ce=d[(C+1)%16],p=(ye>>>1|ce<<32-1)^(ye>>>8|ce<<32-8)^ye>>>7,o=(ce>>>1|ye<<32-1)^(ce>>>8|ye<<32-8)^(ce>>>7|ye<<32-7),c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,ye=i[(C+14)%16],ce=d[(C+14)%16],p=(ye>>>19|ce<<32-19)^(ce>>>61-32|ye<<32-(61-32))^ye>>>6,o=(ce>>>19|ye<<32-19)^(ye>>>61-32|ce<<32-(61-32))^(ce>>>6|ye<<32-6),c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,i[C]=A&65535|D<<16,d[C]=c&65535|g<<16;p=P,o=Z,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[0],o=e[0],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[0]=P=A&65535|D<<16,e[0]=Z=c&65535|g<<16,p=M,o=b,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[1],o=e[1],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[1]=M=A&65535|D<<16,e[1]=b=c&65535|g<<16,p=u,o=z,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[2],o=e[2],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[2]=u=A&65535|D<<16,e[2]=z=c&65535|g<<16,p=B,o=k,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[3],o=e[3],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[3]=B=A&65535|D<<16,e[3]=k=c&65535|g<<16,p=ae,o=j,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[4],o=e[4],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[4]=ae=A&65535|D<<16,e[4]=j=c&65535|g<<16,p=se,o=ne,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[5],o=e[5],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[5]=se=A&65535|D<<16,e[5]=ne=c&65535|g<<16,p=J,o=re,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[6],o=e[6],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[6]=J=A&65535|D<<16,e[6]=re=c&65535|g<<16,p=ue,o=de,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[7],o=e[7],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[7]=ue=A&65535|D<<16,e[7]=de=c&65535|g<<16,he+=128,r-=128}return r}function ed(t,e,a){var r=new Int32Array(8),i=new Int32Array(8),d=new Uint8Array(256),n,f=a;for(r[0]=1779033703,r[1]=3144134277,r[2]=1013904242,r[3]=2773480762,r[4]=1359893119,r[5]=2600822924,r[6]=528734635,r[7]=1541459225,i[0]=4089235720,i[1]=2227873595,i[2]=4271175723,i[3]=1595750129,i[4]=2917565137,i[5]=725511199,i[6]=4215389547,i[7]=327033209,Nm(r,i,e,a),a%=128,n=0;n=0;--i)r=a[i/8|0]>>(i&7)&1,Dm(t,e,r),Y4(e,t),Y4(t,t),Dm(t,e,r)}function $2(t,e){var a=[Se(),Se(),Se(),Se()];Tr(a[0],_m),Tr(a[1],Im),Tr(a[2],Li),Xe(a[3],_m,Im),Om(t,a,e)}var $4=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Z4(t,e){var a,r,i,d;for(r=63;r>=32;--r){for(a=0,i=r-32,d=r-12;i>8,e[i]-=a*256;e[i]+=a,e[r]=0}for(a=0,i=0;i<32;i++)e[i]+=a-(e[31]>>4)*$4[i],a=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=a*$4[i];for(r=0;r<32;r++)e[r+1]+=e[r]>>8,t[r]=e[r]&255}function td(t){var e=new Float64Array(64),a;for(a=0;a<64;a++)e[a]=t[a];for(a=0;a<64;a++)t[a]=0;Z4(t,e)}function qD(t,e,a,r){var i=new Uint8Array(64),d=new Uint8Array(64),n,f,h=new Float64Array(64),v=[Se(),Se(),Se(),Se()];for(n=0;n>7&&pa(t[0],G4,t[0]),Xe(t[3],t[0],t[1]),0)}function VD(t,e,a,r){var i,d,n=new Uint8Array(32),f=new Uint8Array(64),h=[Se(),Se(),Se(),Se()],v=[Se(),Se(),Se(),Se()];if(d=-1,a<64||PD(v,r))return-1;for(i=0;i=0}er.verify=kD;function jD(t){if(Br(t),t.length!==32)throw new Error("wrong seed length");for(var e=new Uint8Array(32),a=new Uint8Array(32),r=0;r<32;r++)e[r]=t[r];return BD(a,e),e[0]&=248,e[31]&=127,e[31]|=64,a[31]&=127,{public:a,private:e}}er.generateKeyPair=jD;er.default={}});var Um=T((ZL,G2)=>{l();(function(t){"use strict";var e=function(m){var w,_=new Float64Array(16);if(m)for(w=0;w>24&255,m[w+1]=_>>16&255,m[w+2]=_>>8&255,m[w+3]=_&255,m[w+4]=s>>24&255,m[w+5]=s>>16&255,m[w+6]=s>>8&255,m[w+7]=s&255}function V(m,w,_,s,E){var F,U=0;for(F=0;F>>8)-1}function L(m,w,_,s){return V(m,w,_,s,16)}function $(m,w,_,s){return V(m,w,_,s,32)}function X(m,w,_,s){for(var E=s[0]&255|(s[1]&255)<<8|(s[2]&255)<<16|(s[3]&255)<<24,F=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,U=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,K=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,te=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,ge=s[4]&255|(s[5]&255)<<8|(s[6]&255)<<16|(s[7]&255)<<24,le=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,Fe=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ve=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,De=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Me=s[8]&255|(s[9]&255)<<8|(s[10]&255)<<16|(s[11]&255)<<24,qe=_[16]&255|(_[17]&255)<<8|(_[18]&255)<<16|(_[19]&255)<<24,Te=_[20]&255|(_[21]&255)<<8|(_[22]&255)<<16|(_[23]&255)<<24,Oe=_[24]&255|(_[25]&255)<<8|(_[26]&255)<<16|(_[27]&255)<<24,Ve=_[28]&255|(_[29]&255)<<8|(_[30]&255)<<16|(_[31]&255)<<24,Pe=s[12]&255|(s[13]&255)<<8|(s[14]&255)<<16|(s[15]&255)<<24,xe=E,Ee=F,be=U,Ae=K,_e=te,me=ge,Q=le,H=Fe,ee=ve,Y=De,W=Me,pe=qe,Be=Te,Le=Oe,je=Ve,Qe=Pe,q,ze=0;ze<20;ze+=2)q=xe+Be|0,_e^=q<<7|q>>>32-7,q=_e+xe|0,ee^=q<<9|q>>>32-9,q=ee+_e|0,Be^=q<<13|q>>>32-13,q=Be+ee|0,xe^=q<<18|q>>>32-18,q=me+Ee|0,Y^=q<<7|q>>>32-7,q=Y+me|0,Le^=q<<9|q>>>32-9,q=Le+Y|0,Ee^=q<<13|q>>>32-13,q=Ee+Le|0,me^=q<<18|q>>>32-18,q=W+Q|0,je^=q<<7|q>>>32-7,q=je+W|0,be^=q<<9|q>>>32-9,q=be+je|0,Q^=q<<13|q>>>32-13,q=Q+be|0,W^=q<<18|q>>>32-18,q=Qe+pe|0,Ae^=q<<7|q>>>32-7,q=Ae+Qe|0,H^=q<<9|q>>>32-9,q=H+Ae|0,pe^=q<<13|q>>>32-13,q=pe+H|0,Qe^=q<<18|q>>>32-18,q=xe+Ae|0,Ee^=q<<7|q>>>32-7,q=Ee+xe|0,be^=q<<9|q>>>32-9,q=be+Ee|0,Ae^=q<<13|q>>>32-13,q=Ae+be|0,xe^=q<<18|q>>>32-18,q=me+_e|0,Q^=q<<7|q>>>32-7,q=Q+me|0,H^=q<<9|q>>>32-9,q=H+Q|0,_e^=q<<13|q>>>32-13,q=_e+H|0,me^=q<<18|q>>>32-18,q=W+Y|0,pe^=q<<7|q>>>32-7,q=pe+W|0,ee^=q<<9|q>>>32-9,q=ee+pe|0,Y^=q<<13|q>>>32-13,q=Y+ee|0,W^=q<<18|q>>>32-18,q=Qe+je|0,Be^=q<<7|q>>>32-7,q=Be+Qe|0,Le^=q<<9|q>>>32-9,q=Le+Be|0,je^=q<<13|q>>>32-13,q=je+Le|0,Qe^=q<<18|q>>>32-18;xe=xe+E|0,Ee=Ee+F|0,be=be+U|0,Ae=Ae+K|0,_e=_e+te|0,me=me+ge|0,Q=Q+le|0,H=H+Fe|0,ee=ee+ve|0,Y=Y+De|0,W=W+Me|0,pe=pe+qe|0,Be=Be+Te|0,Le=Le+Oe|0,je=je+Ve|0,Qe=Qe+Pe|0,m[0]=xe>>>0&255,m[1]=xe>>>8&255,m[2]=xe>>>16&255,m[3]=xe>>>24&255,m[4]=Ee>>>0&255,m[5]=Ee>>>8&255,m[6]=Ee>>>16&255,m[7]=Ee>>>24&255,m[8]=be>>>0&255,m[9]=be>>>8&255,m[10]=be>>>16&255,m[11]=be>>>24&255,m[12]=Ae>>>0&255,m[13]=Ae>>>8&255,m[14]=Ae>>>16&255,m[15]=Ae>>>24&255,m[16]=_e>>>0&255,m[17]=_e>>>8&255,m[18]=_e>>>16&255,m[19]=_e>>>24&255,m[20]=me>>>0&255,m[21]=me>>>8&255,m[22]=me>>>16&255,m[23]=me>>>24&255,m[24]=Q>>>0&255,m[25]=Q>>>8&255,m[26]=Q>>>16&255,m[27]=Q>>>24&255,m[28]=H>>>0&255,m[29]=H>>>8&255,m[30]=H>>>16&255,m[31]=H>>>24&255,m[32]=ee>>>0&255,m[33]=ee>>>8&255,m[34]=ee>>>16&255,m[35]=ee>>>24&255,m[36]=Y>>>0&255,m[37]=Y>>>8&255,m[38]=Y>>>16&255,m[39]=Y>>>24&255,m[40]=W>>>0&255,m[41]=W>>>8&255,m[42]=W>>>16&255,m[43]=W>>>24&255,m[44]=pe>>>0&255,m[45]=pe>>>8&255,m[46]=pe>>>16&255,m[47]=pe>>>24&255,m[48]=Be>>>0&255,m[49]=Be>>>8&255,m[50]=Be>>>16&255,m[51]=Be>>>24&255,m[52]=Le>>>0&255,m[53]=Le>>>8&255,m[54]=Le>>>16&255,m[55]=Le>>>24&255,m[56]=je>>>0&255,m[57]=je>>>8&255,m[58]=je>>>16&255,m[59]=je>>>24&255,m[60]=Qe>>>0&255,m[61]=Qe>>>8&255,m[62]=Qe>>>16&255,m[63]=Qe>>>24&255}function ie(m,w,_,s){for(var E=s[0]&255|(s[1]&255)<<8|(s[2]&255)<<16|(s[3]&255)<<24,F=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,U=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,K=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,te=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,ge=s[4]&255|(s[5]&255)<<8|(s[6]&255)<<16|(s[7]&255)<<24,le=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,Fe=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ve=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,De=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Me=s[8]&255|(s[9]&255)<<8|(s[10]&255)<<16|(s[11]&255)<<24,qe=_[16]&255|(_[17]&255)<<8|(_[18]&255)<<16|(_[19]&255)<<24,Te=_[20]&255|(_[21]&255)<<8|(_[22]&255)<<16|(_[23]&255)<<24,Oe=_[24]&255|(_[25]&255)<<8|(_[26]&255)<<16|(_[27]&255)<<24,Ve=_[28]&255|(_[29]&255)<<8|(_[30]&255)<<16|(_[31]&255)<<24,Pe=s[12]&255|(s[13]&255)<<8|(s[14]&255)<<16|(s[15]&255)<<24,xe=E,Ee=F,be=U,Ae=K,_e=te,me=ge,Q=le,H=Fe,ee=ve,Y=De,W=Me,pe=qe,Be=Te,Le=Oe,je=Ve,Qe=Pe,q,ze=0;ze<20;ze+=2)q=xe+Be|0,_e^=q<<7|q>>>32-7,q=_e+xe|0,ee^=q<<9|q>>>32-9,q=ee+_e|0,Be^=q<<13|q>>>32-13,q=Be+ee|0,xe^=q<<18|q>>>32-18,q=me+Ee|0,Y^=q<<7|q>>>32-7,q=Y+me|0,Le^=q<<9|q>>>32-9,q=Le+Y|0,Ee^=q<<13|q>>>32-13,q=Ee+Le|0,me^=q<<18|q>>>32-18,q=W+Q|0,je^=q<<7|q>>>32-7,q=je+W|0,be^=q<<9|q>>>32-9,q=be+je|0,Q^=q<<13|q>>>32-13,q=Q+be|0,W^=q<<18|q>>>32-18,q=Qe+pe|0,Ae^=q<<7|q>>>32-7,q=Ae+Qe|0,H^=q<<9|q>>>32-9,q=H+Ae|0,pe^=q<<13|q>>>32-13,q=pe+H|0,Qe^=q<<18|q>>>32-18,q=xe+Ae|0,Ee^=q<<7|q>>>32-7,q=Ee+xe|0,be^=q<<9|q>>>32-9,q=be+Ee|0,Ae^=q<<13|q>>>32-13,q=Ae+be|0,xe^=q<<18|q>>>32-18,q=me+_e|0,Q^=q<<7|q>>>32-7,q=Q+me|0,H^=q<<9|q>>>32-9,q=H+Q|0,_e^=q<<13|q>>>32-13,q=_e+H|0,me^=q<<18|q>>>32-18,q=W+Y|0,pe^=q<<7|q>>>32-7,q=pe+W|0,ee^=q<<9|q>>>32-9,q=ee+pe|0,Y^=q<<13|q>>>32-13,q=Y+ee|0,W^=q<<18|q>>>32-18,q=Qe+je|0,Be^=q<<7|q>>>32-7,q=Be+Qe|0,Le^=q<<9|q>>>32-9,q=Le+Be|0,je^=q<<13|q>>>32-13,q=je+Le|0,Qe^=q<<18|q>>>32-18;m[0]=xe>>>0&255,m[1]=xe>>>8&255,m[2]=xe>>>16&255,m[3]=xe>>>24&255,m[4]=me>>>0&255,m[5]=me>>>8&255,m[6]=me>>>16&255,m[7]=me>>>24&255,m[8]=W>>>0&255,m[9]=W>>>8&255,m[10]=W>>>16&255,m[11]=W>>>24&255,m[12]=Qe>>>0&255,m[13]=Qe>>>8&255,m[14]=Qe>>>16&255,m[15]=Qe>>>24&255,m[16]=Q>>>0&255,m[17]=Q>>>8&255,m[18]=Q>>>16&255,m[19]=Q>>>24&255,m[20]=H>>>0&255,m[21]=H>>>8&255,m[22]=H>>>16&255,m[23]=H>>>24&255,m[24]=ee>>>0&255,m[25]=ee>>>8&255,m[26]=ee>>>16&255,m[27]=ee>>>24&255,m[28]=Y>>>0&255,m[29]=Y>>>8&255,m[30]=Y>>>16&255,m[31]=Y>>>24&255}function oe(m,w,_,s){X(m,w,_,s)}function we(m,w,_,s){ie(m,w,_,s)}var Ie=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function ye(m,w,_,s,E,F,U){var K=new Uint8Array(16),te=new Uint8Array(64),ge,le;for(le=0;le<16;le++)K[le]=0;for(le=0;le<8;le++)K[le]=F[le];for(;E>=64;){for(oe(te,K,U,Ie),le=0;le<64;le++)m[w+le]=_[s+le]^te[le];for(ge=1,le=8;le<16;le++)ge=ge+(K[le]&255)|0,K[le]=ge&255,ge>>>=8;E-=64,w+=64,s+=64}if(E>0)for(oe(te,K,U,Ie),le=0;le=64;){for(oe(U,F,E,Ie),te=0;te<64;te++)m[w+te]=U[te];for(K=1,te=8;te<16;te++)K=K+(F[te]&255)|0,F[te]=K&255,K>>>=8;_-=64,w+=64}if(_>0)for(oe(U,F,E,Ie),te=0;te<_;te++)m[w+te]=U[te];return 0}function Ne(m,w,_,s,E){var F=new Uint8Array(32);we(F,s,E,Ie);for(var U=new Uint8Array(8),K=0;K<8;K++)U[K]=s[K+16];return ce(m,w,_,U,F)}function C(m,w,_,s,E,F,U){var K=new Uint8Array(32);we(K,F,U,Ie);for(var te=new Uint8Array(8),ge=0;ge<8;ge++)te[ge]=F[ge+16];return ye(m,w,_,s,E,te,K)}var p=function(m){this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.leftover=0,this.fin=0;var w,_,s,E,F,U,K,te;w=m[0]&255|(m[1]&255)<<8,this.r[0]=w&8191,_=m[2]&255|(m[3]&255)<<8,this.r[1]=(w>>>13|_<<3)&8191,s=m[4]&255|(m[5]&255)<<8,this.r[2]=(_>>>10|s<<6)&7939,E=m[6]&255|(m[7]&255)<<8,this.r[3]=(s>>>7|E<<9)&8191,F=m[8]&255|(m[9]&255)<<8,this.r[4]=(E>>>4|F<<12)&255,this.r[5]=F>>>1&8190,U=m[10]&255|(m[11]&255)<<8,this.r[6]=(F>>>14|U<<2)&8191,K=m[12]&255|(m[13]&255)<<8,this.r[7]=(U>>>11|K<<5)&8065,te=m[14]&255|(m[15]&255)<<8,this.r[8]=(K>>>8|te<<8)&8191,this.r[9]=te>>>5&127,this.pad[0]=m[16]&255|(m[17]&255)<<8,this.pad[1]=m[18]&255|(m[19]&255)<<8,this.pad[2]=m[20]&255|(m[21]&255)<<8,this.pad[3]=m[22]&255|(m[23]&255)<<8,this.pad[4]=m[24]&255|(m[25]&255)<<8,this.pad[5]=m[26]&255|(m[27]&255)<<8,this.pad[6]=m[28]&255|(m[29]&255)<<8,this.pad[7]=m[30]&255|(m[31]&255)<<8};p.prototype.blocks=function(m,w,_){for(var s=this.fin?0:2048,E,F,U,K,te,ge,le,Fe,ve,De,Me,qe,Te,Oe,Ve,Pe,xe,Ee,be,Ae=this.h[0],_e=this.h[1],me=this.h[2],Q=this.h[3],H=this.h[4],ee=this.h[5],Y=this.h[6],W=this.h[7],pe=this.h[8],Be=this.h[9],Le=this.r[0],je=this.r[1],Qe=this.r[2],q=this.r[3],ze=this.r[4],a1=this.r[5],r1=this.r[6],He=this.r[7],Ze=this.r[8],e1=this.r[9];_>=16;)E=m[w+0]&255|(m[w+1]&255)<<8,Ae+=E&8191,F=m[w+2]&255|(m[w+3]&255)<<8,_e+=(E>>>13|F<<3)&8191,U=m[w+4]&255|(m[w+5]&255)<<8,me+=(F>>>10|U<<6)&8191,K=m[w+6]&255|(m[w+7]&255)<<8,Q+=(U>>>7|K<<9)&8191,te=m[w+8]&255|(m[w+9]&255)<<8,H+=(K>>>4|te<<12)&8191,ee+=te>>>1&8191,ge=m[w+10]&255|(m[w+11]&255)<<8,Y+=(te>>>14|ge<<2)&8191,le=m[w+12]&255|(m[w+13]&255)<<8,W+=(ge>>>11|le<<5)&8191,Fe=m[w+14]&255|(m[w+15]&255)<<8,pe+=(le>>>8|Fe<<8)&8191,Be+=Fe>>>5|s,ve=0,De=ve,De+=Ae*Le,De+=_e*(5*e1),De+=me*(5*Ze),De+=Q*(5*He),De+=H*(5*r1),ve=De>>>13,De&=8191,De+=ee*(5*a1),De+=Y*(5*ze),De+=W*(5*q),De+=pe*(5*Qe),De+=Be*(5*je),ve+=De>>>13,De&=8191,Me=ve,Me+=Ae*je,Me+=_e*Le,Me+=me*(5*e1),Me+=Q*(5*Ze),Me+=H*(5*He),ve=Me>>>13,Me&=8191,Me+=ee*(5*r1),Me+=Y*(5*a1),Me+=W*(5*ze),Me+=pe*(5*q),Me+=Be*(5*Qe),ve+=Me>>>13,Me&=8191,qe=ve,qe+=Ae*Qe,qe+=_e*je,qe+=me*Le,qe+=Q*(5*e1),qe+=H*(5*Ze),ve=qe>>>13,qe&=8191,qe+=ee*(5*He),qe+=Y*(5*r1),qe+=W*(5*a1),qe+=pe*(5*ze),qe+=Be*(5*q),ve+=qe>>>13,qe&=8191,Te=ve,Te+=Ae*q,Te+=_e*Qe,Te+=me*je,Te+=Q*Le,Te+=H*(5*e1),ve=Te>>>13,Te&=8191,Te+=ee*(5*Ze),Te+=Y*(5*He),Te+=W*(5*r1),Te+=pe*(5*a1),Te+=Be*(5*ze),ve+=Te>>>13,Te&=8191,Oe=ve,Oe+=Ae*ze,Oe+=_e*q,Oe+=me*Qe,Oe+=Q*je,Oe+=H*Le,ve=Oe>>>13,Oe&=8191,Oe+=ee*(5*e1),Oe+=Y*(5*Ze),Oe+=W*(5*He),Oe+=pe*(5*r1),Oe+=Be*(5*a1),ve+=Oe>>>13,Oe&=8191,Ve=ve,Ve+=Ae*a1,Ve+=_e*ze,Ve+=me*q,Ve+=Q*Qe,Ve+=H*je,ve=Ve>>>13,Ve&=8191,Ve+=ee*Le,Ve+=Y*(5*e1),Ve+=W*(5*Ze),Ve+=pe*(5*He),Ve+=Be*(5*r1),ve+=Ve>>>13,Ve&=8191,Pe=ve,Pe+=Ae*r1,Pe+=_e*a1,Pe+=me*ze,Pe+=Q*q,Pe+=H*Qe,ve=Pe>>>13,Pe&=8191,Pe+=ee*je,Pe+=Y*Le,Pe+=W*(5*e1),Pe+=pe*(5*Ze),Pe+=Be*(5*He),ve+=Pe>>>13,Pe&=8191,xe=ve,xe+=Ae*He,xe+=_e*r1,xe+=me*a1,xe+=Q*ze,xe+=H*q,ve=xe>>>13,xe&=8191,xe+=ee*Qe,xe+=Y*je,xe+=W*Le,xe+=pe*(5*e1),xe+=Be*(5*Ze),ve+=xe>>>13,xe&=8191,Ee=ve,Ee+=Ae*Ze,Ee+=_e*He,Ee+=me*r1,Ee+=Q*a1,Ee+=H*ze,ve=Ee>>>13,Ee&=8191,Ee+=ee*q,Ee+=Y*Qe,Ee+=W*je,Ee+=pe*Le,Ee+=Be*(5*e1),ve+=Ee>>>13,Ee&=8191,be=ve,be+=Ae*e1,be+=_e*Ze,be+=me*He,be+=Q*r1,be+=H*a1,ve=be>>>13,be&=8191,be+=ee*ze,be+=Y*q,be+=W*Qe,be+=pe*je,be+=Be*Le,ve+=be>>>13,be&=8191,ve=(ve<<2)+ve|0,ve=ve+De|0,De=ve&8191,ve=ve>>>13,Me+=ve,Ae=De,_e=Me,me=qe,Q=Te,H=Oe,ee=Ve,Y=Pe,W=xe,pe=Ee,Be=be,w+=16,_-=16;this.h[0]=Ae,this.h[1]=_e,this.h[2]=me,this.h[3]=Q,this.h[4]=H,this.h[5]=ee,this.h[6]=Y,this.h[7]=W,this.h[8]=pe,this.h[9]=Be},p.prototype.finish=function(m,w){var _=new Uint16Array(10),s,E,F,U;if(this.leftover){for(U=this.leftover,this.buffer[U++]=1;U<16;U++)this.buffer[U]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(s=this.h[1]>>>13,this.h[1]&=8191,U=2;U<10;U++)this.h[U]+=s,s=this.h[U]>>>13,this.h[U]&=8191;for(this.h[0]+=s*5,s=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=s,s=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=s,_[0]=this.h[0]+5,s=_[0]>>>13,_[0]&=8191,U=1;U<10;U++)_[U]=this.h[U]+s,s=_[U]>>>13,_[U]&=8191;for(_[9]-=1<<13,E=(s^1)-1,U=0;U<10;U++)_[U]&=E;for(E=~E,U=0;U<10;U++)this.h[U]=this.h[U]&E|_[U];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,F=this.h[0]+this.pad[0],this.h[0]=F&65535,U=1;U<8;U++)F=(this.h[U]+this.pad[U]|0)+(F>>>16)|0,this.h[U]=F&65535;m[w+0]=this.h[0]>>>0&255,m[w+1]=this.h[0]>>>8&255,m[w+2]=this.h[1]>>>0&255,m[w+3]=this.h[1]>>>8&255,m[w+4]=this.h[2]>>>0&255,m[w+5]=this.h[2]>>>8&255,m[w+6]=this.h[3]>>>0&255,m[w+7]=this.h[3]>>>8&255,m[w+8]=this.h[4]>>>0&255,m[w+9]=this.h[4]>>>8&255,m[w+10]=this.h[5]>>>0&255,m[w+11]=this.h[5]>>>8&255,m[w+12]=this.h[6]>>>0&255,m[w+13]=this.h[6]>>>8&255,m[w+14]=this.h[7]>>>0&255,m[w+15]=this.h[7]>>>8&255},p.prototype.update=function(m,w,_){var s,E;if(this.leftover){for(E=16-this.leftover,E>_&&(E=_),s=0;s=16&&(E=_-_%16,this.blocks(m,w,E),w+=E,_-=E),_){for(s=0;s<_;s++)this.buffer[this.leftover+s]=m[w+s];this.leftover+=_}};function o(m,w,_,s,E,F){var U=new p(F);return U.update(_,s,E),U.finish(m,w),0}function c(m,w,_,s,E,F){var U=new Uint8Array(16);return o(U,0,_,s,E,F),L(m,w,U,0)}function g(m,w,_,s,E){var F;if(_<32)return-1;for(C(m,0,w,0,_,s,E),o(m,16,m,32,_-32,m),F=0;F<16;F++)m[F]=0;return 0}function A(m,w,_,s,E){var F,U=new Uint8Array(32);if(_<32||(Ne(U,0,32,s,E),c(w,16,w,32,_-32,U)!==0))return-1;for(C(m,0,w,0,_,s,E),F=0;F<32;F++)m[F]=0;return 0}function D(m,w){var _;for(_=0;_<16;_++)m[_]=w[_]|0}function P(m){var w,_,s=1;for(w=0;w<16;w++)_=m[w]+s+65535,s=Math.floor(_/65536),m[w]=_-s*65536;m[0]+=s-1+37*(s-1)}function M(m,w,_){for(var s,E=~(_-1),F=0;F<16;F++)s=E&(m[F]^w[F]),m[F]^=s,w[F]^=s}function u(m,w){var _,s,E,F=e(),U=e();for(_=0;_<16;_++)U[_]=w[_];for(P(U),P(U),P(U),s=0;s<2;s++){for(F[0]=U[0]-65517,_=1;_<15;_++)F[_]=U[_]-65535-(F[_-1]>>16&1),F[_-1]&=65535;F[15]=U[15]-32767-(F[14]>>16&1),E=F[15]>>16&1,F[14]&=65535,M(U,F,1-E)}for(_=0;_<16;_++)m[2*_]=U[_]&255,m[2*_+1]=U[_]>>8}function B(m,w){var _=new Uint8Array(32),s=new Uint8Array(32);return u(_,m),u(s,w),$(_,0,s,0)}function ae(m){var w=new Uint8Array(32);return u(w,m),w[0]&1}function se(m,w){var _;for(_=0;_<16;_++)m[_]=w[2*_]+(w[2*_+1]<<8);m[15]&=32767}function J(m,w,_){for(var s=0;s<16;s++)m[s]=w[s]+_[s]}function ue(m,w,_){for(var s=0;s<16;s++)m[s]=w[s]-_[s]}function Z(m,w,_){var s,E,F=0,U=0,K=0,te=0,ge=0,le=0,Fe=0,ve=0,De=0,Me=0,qe=0,Te=0,Oe=0,Ve=0,Pe=0,xe=0,Ee=0,be=0,Ae=0,_e=0,me=0,Q=0,H=0,ee=0,Y=0,W=0,pe=0,Be=0,Le=0,je=0,Qe=0,q=_[0],ze=_[1],a1=_[2],r1=_[3],He=_[4],Ze=_[5],e1=_[6],Q1=_[7],g1=_[8],O1=_[9],P1=_[10],V1=_[11],H1=_[12],it=_[13],dt=_[14],pt=_[15];s=w[0],F+=s*q,U+=s*ze,K+=s*a1,te+=s*r1,ge+=s*He,le+=s*Ze,Fe+=s*e1,ve+=s*Q1,De+=s*g1,Me+=s*O1,qe+=s*P1,Te+=s*V1,Oe+=s*H1,Ve+=s*it,Pe+=s*dt,xe+=s*pt,s=w[1],U+=s*q,K+=s*ze,te+=s*a1,ge+=s*r1,le+=s*He,Fe+=s*Ze,ve+=s*e1,De+=s*Q1,Me+=s*g1,qe+=s*O1,Te+=s*P1,Oe+=s*V1,Ve+=s*H1,Pe+=s*it,xe+=s*dt,Ee+=s*pt,s=w[2],K+=s*q,te+=s*ze,ge+=s*a1,le+=s*r1,Fe+=s*He,ve+=s*Ze,De+=s*e1,Me+=s*Q1,qe+=s*g1,Te+=s*O1,Oe+=s*P1,Ve+=s*V1,Pe+=s*H1,xe+=s*it,Ee+=s*dt,be+=s*pt,s=w[3],te+=s*q,ge+=s*ze,le+=s*a1,Fe+=s*r1,ve+=s*He,De+=s*Ze,Me+=s*e1,qe+=s*Q1,Te+=s*g1,Oe+=s*O1,Ve+=s*P1,Pe+=s*V1,xe+=s*H1,Ee+=s*it,be+=s*dt,Ae+=s*pt,s=w[4],ge+=s*q,le+=s*ze,Fe+=s*a1,ve+=s*r1,De+=s*He,Me+=s*Ze,qe+=s*e1,Te+=s*Q1,Oe+=s*g1,Ve+=s*O1,Pe+=s*P1,xe+=s*V1,Ee+=s*H1,be+=s*it,Ae+=s*dt,_e+=s*pt,s=w[5],le+=s*q,Fe+=s*ze,ve+=s*a1,De+=s*r1,Me+=s*He,qe+=s*Ze,Te+=s*e1,Oe+=s*Q1,Ve+=s*g1,Pe+=s*O1,xe+=s*P1,Ee+=s*V1,be+=s*H1,Ae+=s*it,_e+=s*dt,me+=s*pt,s=w[6],Fe+=s*q,ve+=s*ze,De+=s*a1,Me+=s*r1,qe+=s*He,Te+=s*Ze,Oe+=s*e1,Ve+=s*Q1,Pe+=s*g1,xe+=s*O1,Ee+=s*P1,be+=s*V1,Ae+=s*H1,_e+=s*it,me+=s*dt,Q+=s*pt,s=w[7],ve+=s*q,De+=s*ze,Me+=s*a1,qe+=s*r1,Te+=s*He,Oe+=s*Ze,Ve+=s*e1,Pe+=s*Q1,xe+=s*g1,Ee+=s*O1,be+=s*P1,Ae+=s*V1,_e+=s*H1,me+=s*it,Q+=s*dt,H+=s*pt,s=w[8],De+=s*q,Me+=s*ze,qe+=s*a1,Te+=s*r1,Oe+=s*He,Ve+=s*Ze,Pe+=s*e1,xe+=s*Q1,Ee+=s*g1,be+=s*O1,Ae+=s*P1,_e+=s*V1,me+=s*H1,Q+=s*it,H+=s*dt,ee+=s*pt,s=w[9],Me+=s*q,qe+=s*ze,Te+=s*a1,Oe+=s*r1,Ve+=s*He,Pe+=s*Ze,xe+=s*e1,Ee+=s*Q1,be+=s*g1,Ae+=s*O1,_e+=s*P1,me+=s*V1,Q+=s*H1,H+=s*it,ee+=s*dt,Y+=s*pt,s=w[10],qe+=s*q,Te+=s*ze,Oe+=s*a1,Ve+=s*r1,Pe+=s*He,xe+=s*Ze,Ee+=s*e1,be+=s*Q1,Ae+=s*g1,_e+=s*O1,me+=s*P1,Q+=s*V1,H+=s*H1,ee+=s*it,Y+=s*dt,W+=s*pt,s=w[11],Te+=s*q,Oe+=s*ze,Ve+=s*a1,Pe+=s*r1,xe+=s*He,Ee+=s*Ze,be+=s*e1,Ae+=s*Q1,_e+=s*g1,me+=s*O1,Q+=s*P1,H+=s*V1,ee+=s*H1,Y+=s*it,W+=s*dt,pe+=s*pt,s=w[12],Oe+=s*q,Ve+=s*ze,Pe+=s*a1,xe+=s*r1,Ee+=s*He,be+=s*Ze,Ae+=s*e1,_e+=s*Q1,me+=s*g1,Q+=s*O1,H+=s*P1,ee+=s*V1,Y+=s*H1,W+=s*it,pe+=s*dt,Be+=s*pt,s=w[13],Ve+=s*q,Pe+=s*ze,xe+=s*a1,Ee+=s*r1,be+=s*He,Ae+=s*Ze,_e+=s*e1,me+=s*Q1,Q+=s*g1,H+=s*O1,ee+=s*P1,Y+=s*V1,W+=s*H1,pe+=s*it,Be+=s*dt,Le+=s*pt,s=w[14],Pe+=s*q,xe+=s*ze,Ee+=s*a1,be+=s*r1,Ae+=s*He,_e+=s*Ze,me+=s*e1,Q+=s*Q1,H+=s*g1,ee+=s*O1,Y+=s*P1,W+=s*V1,pe+=s*H1,Be+=s*it,Le+=s*dt,je+=s*pt,s=w[15],xe+=s*q,Ee+=s*ze,be+=s*a1,Ae+=s*r1,_e+=s*He,me+=s*Ze,Q+=s*e1,H+=s*Q1,ee+=s*g1,Y+=s*O1,W+=s*P1,pe+=s*V1,Be+=s*H1,Le+=s*it,je+=s*dt,Qe+=s*pt,F+=38*Ee,U+=38*be,K+=38*Ae,te+=38*_e,ge+=38*me,le+=38*Q,Fe+=38*H,ve+=38*ee,De+=38*Y,Me+=38*W,qe+=38*pe,Te+=38*Be,Oe+=38*Le,Ve+=38*je,Pe+=38*Qe,E=1,s=F+E+65535,E=Math.floor(s/65536),F=s-E*65536,s=U+E+65535,E=Math.floor(s/65536),U=s-E*65536,s=K+E+65535,E=Math.floor(s/65536),K=s-E*65536,s=te+E+65535,E=Math.floor(s/65536),te=s-E*65536,s=ge+E+65535,E=Math.floor(s/65536),ge=s-E*65536,s=le+E+65535,E=Math.floor(s/65536),le=s-E*65536,s=Fe+E+65535,E=Math.floor(s/65536),Fe=s-E*65536,s=ve+E+65535,E=Math.floor(s/65536),ve=s-E*65536,s=De+E+65535,E=Math.floor(s/65536),De=s-E*65536,s=Me+E+65535,E=Math.floor(s/65536),Me=s-E*65536,s=qe+E+65535,E=Math.floor(s/65536),qe=s-E*65536,s=Te+E+65535,E=Math.floor(s/65536),Te=s-E*65536,s=Oe+E+65535,E=Math.floor(s/65536),Oe=s-E*65536,s=Ve+E+65535,E=Math.floor(s/65536),Ve=s-E*65536,s=Pe+E+65535,E=Math.floor(s/65536),Pe=s-E*65536,s=xe+E+65535,E=Math.floor(s/65536),xe=s-E*65536,F+=E-1+37*(E-1),E=1,s=F+E+65535,E=Math.floor(s/65536),F=s-E*65536,s=U+E+65535,E=Math.floor(s/65536),U=s-E*65536,s=K+E+65535,E=Math.floor(s/65536),K=s-E*65536,s=te+E+65535,E=Math.floor(s/65536),te=s-E*65536,s=ge+E+65535,E=Math.floor(s/65536),ge=s-E*65536,s=le+E+65535,E=Math.floor(s/65536),le=s-E*65536,s=Fe+E+65535,E=Math.floor(s/65536),Fe=s-E*65536,s=ve+E+65535,E=Math.floor(s/65536),ve=s-E*65536,s=De+E+65535,E=Math.floor(s/65536),De=s-E*65536,s=Me+E+65535,E=Math.floor(s/65536),Me=s-E*65536,s=qe+E+65535,E=Math.floor(s/65536),qe=s-E*65536,s=Te+E+65535,E=Math.floor(s/65536),Te=s-E*65536,s=Oe+E+65535,E=Math.floor(s/65536),Oe=s-E*65536,s=Ve+E+65535,E=Math.floor(s/65536),Ve=s-E*65536,s=Pe+E+65535,E=Math.floor(s/65536),Pe=s-E*65536,s=xe+E+65535,E=Math.floor(s/65536),xe=s-E*65536,F+=E-1+37*(E-1),m[0]=F,m[1]=U,m[2]=K,m[3]=te,m[4]=ge,m[5]=le,m[6]=Fe,m[7]=ve,m[8]=De,m[9]=Me,m[10]=qe,m[11]=Te,m[12]=Oe,m[13]=Ve,m[14]=Pe,m[15]=xe}function b(m,w){Z(m,w,w)}function z(m,w){var _=e(),s;for(s=0;s<16;s++)_[s]=w[s];for(s=253;s>=0;s--)b(_,_),s!==2&&s!==4&&Z(_,_,w);for(s=0;s<16;s++)m[s]=_[s]}function k(m,w){var _=e(),s;for(s=0;s<16;s++)_[s]=w[s];for(s=250;s>=0;s--)b(_,_),s!==1&&Z(_,_,w);for(s=0;s<16;s++)m[s]=_[s]}function j(m,w,_){var s=new Uint8Array(32),E=new Float64Array(80),F,U,K=e(),te=e(),ge=e(),le=e(),Fe=e(),ve=e();for(U=0;U<31;U++)s[U]=w[U];for(s[31]=w[31]&127|64,s[0]&=248,se(E,_),U=0;U<16;U++)te[U]=E[U],le[U]=K[U]=ge[U]=0;for(K[0]=le[0]=1,U=254;U>=0;--U)F=s[U>>>3]>>>(U&7)&1,M(K,te,F),M(ge,le,F),J(Fe,K,ge),ue(K,K,ge),J(ge,te,le),ue(te,te,le),b(le,Fe),b(ve,K),Z(K,ge,K),Z(ge,te,Fe),J(Fe,K,ge),ue(K,K,ge),b(te,K),ue(ge,le,ve),Z(K,ge,f),J(K,K,le),Z(ge,ge,K),Z(K,le,ve),Z(le,te,E),b(te,Fe),M(K,te,F),M(ge,le,F);for(U=0;U<16;U++)E[U+16]=K[U],E[U+32]=ge[U],E[U+48]=te[U],E[U+64]=le[U];var De=E.subarray(32),Me=E.subarray(16);return z(De,De),Z(Me,Me,De),u(m,Me),0}function ne(m,w){return j(m,w,i)}function re(m,w){return a(w,32),ne(m,w)}function de(m,w,_){var s=new Uint8Array(32);return j(s,_,w),we(m,r,s,Ie)}var he=g,Ce=A;function fe(m,w,_,s,E,F){var U=new Uint8Array(32);return de(U,E,F),he(m,w,_,s,U)}function Ue(m,w,_,s,E,F){var U=new Uint8Array(32);return de(U,E,F),Ce(m,w,_,s,U)}var x1=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function A1(m,w,_,s){for(var E=new Int32Array(16),F=new Int32Array(16),U,K,te,ge,le,Fe,ve,De,Me,qe,Te,Oe,Ve,Pe,xe,Ee,be,Ae,_e,me,Q,H,ee,Y,W,pe,Be=m[0],Le=m[1],je=m[2],Qe=m[3],q=m[4],ze=m[5],a1=m[6],r1=m[7],He=w[0],Ze=w[1],e1=w[2],Q1=w[3],g1=w[4],O1=w[5],P1=w[6],V1=w[7],H1=0;s>=128;){for(_e=0;_e<16;_e++)me=8*_e+H1,E[_e]=_[me+0]<<24|_[me+1]<<16|_[me+2]<<8|_[me+3],F[_e]=_[me+4]<<24|_[me+5]<<16|_[me+6]<<8|_[me+7];for(_e=0;_e<80;_e++)if(U=Be,K=Le,te=je,ge=Qe,le=q,Fe=ze,ve=a1,De=r1,Me=He,qe=Ze,Te=e1,Oe=Q1,Ve=g1,Pe=O1,xe=P1,Ee=V1,Q=r1,H=V1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=(q>>>14|g1<<32-14)^(q>>>18|g1<<32-18)^(g1>>>41-32|q<<32-(41-32)),H=(g1>>>14|q<<32-14)^(g1>>>18|q<<32-18)^(q>>>41-32|g1<<32-(41-32)),ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Q=q&ze^~q&a1,H=g1&O1^~g1&P1,ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Q=x1[_e*2],H=x1[_e*2+1],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Q=E[_e%16],H=F[_e%16],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,be=W&65535|pe<<16,Ae=ee&65535|Y<<16,Q=be,H=Ae,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=(Be>>>28|He<<32-28)^(He>>>34-32|Be<<32-(34-32))^(He>>>39-32|Be<<32-(39-32)),H=(He>>>28|Be<<32-28)^(Be>>>34-32|He<<32-(34-32))^(Be>>>39-32|He<<32-(39-32)),ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Q=Be&Le^Be&je^Le&je,H=He&Ze^He&e1^Ze&e1,ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,De=W&65535|pe<<16,Ee=ee&65535|Y<<16,Q=ge,H=Oe,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=be,H=Ae,ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,ge=W&65535|pe<<16,Oe=ee&65535|Y<<16,Le=U,je=K,Qe=te,q=ge,ze=le,a1=Fe,r1=ve,Be=De,Ze=Me,e1=qe,Q1=Te,g1=Oe,O1=Ve,P1=Pe,V1=xe,He=Ee,_e%16===15)for(me=0;me<16;me++)Q=E[me],H=F[me],ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=E[(me+9)%16],H=F[(me+9)%16],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,be=E[(me+1)%16],Ae=F[(me+1)%16],Q=(be>>>1|Ae<<32-1)^(be>>>8|Ae<<32-8)^be>>>7,H=(Ae>>>1|be<<32-1)^(Ae>>>8|be<<32-8)^(Ae>>>7|be<<32-7),ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,be=E[(me+14)%16],Ae=F[(me+14)%16],Q=(be>>>19|Ae<<32-19)^(Ae>>>61-32|be<<32-(61-32))^be>>>6,H=(Ae>>>19|be<<32-19)^(be>>>61-32|Ae<<32-(61-32))^(Ae>>>6|be<<32-6),ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,E[me]=W&65535|pe<<16,F[me]=ee&65535|Y<<16;Q=Be,H=He,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[0],H=w[0],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[0]=Be=W&65535|pe<<16,w[0]=He=ee&65535|Y<<16,Q=Le,H=Ze,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[1],H=w[1],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[1]=Le=W&65535|pe<<16,w[1]=Ze=ee&65535|Y<<16,Q=je,H=e1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[2],H=w[2],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[2]=je=W&65535|pe<<16,w[2]=e1=ee&65535|Y<<16,Q=Qe,H=Q1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[3],H=w[3],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[3]=Qe=W&65535|pe<<16,w[3]=Q1=ee&65535|Y<<16,Q=q,H=g1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[4],H=w[4],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[4]=q=W&65535|pe<<16,w[4]=g1=ee&65535|Y<<16,Q=ze,H=O1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[5],H=w[5],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[5]=ze=W&65535|pe<<16,w[5]=O1=ee&65535|Y<<16,Q=a1,H=P1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[6],H=w[6],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[6]=a1=W&65535|pe<<16,w[6]=P1=ee&65535|Y<<16,Q=r1,H=V1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[7],H=w[7],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[7]=r1=W&65535|pe<<16,w[7]=V1=ee&65535|Y<<16,H1+=128,s-=128}return s}function lt(m,w,_){var s=new Int32Array(8),E=new Int32Array(8),F=new Uint8Array(256),U,K=_;for(s[0]=1779033703,s[1]=3144134277,s[2]=1013904242,s[3]=2773480762,s[4]=1359893119,s[5]=2600822924,s[6]=528734635,s[7]=1541459225,E[0]=4089235720,E[1]=2227873595,E[2]=4271175723,E[3]=1595750129,E[4]=2917565137,E[5]=725511199,E[6]=4215389547,E[7]=327033209,A1(s,E,w,_),_%=128,U=0;U<_;U++)F[U]=w[K-_+U];for(F[_]=128,_=256-128*(_<112?1:0),F[_-9]=0,R(F,_-8,K/536870912|0,K<<3),A1(s,E,F,_),U=0;U<8;U++)R(m,8*U,s[U],E[U]);return 0}function f1(m,w){var _=e(),s=e(),E=e(),F=e(),U=e(),K=e(),te=e(),ge=e(),le=e();ue(_,m[1],m[0]),ue(le,w[1],w[0]),Z(_,_,le),J(s,m[0],m[1]),J(le,w[0],w[1]),Z(s,s,le),Z(E,m[3],w[3]),Z(E,E,v),Z(F,m[2],w[2]),J(F,F,F),ue(U,s,_),ue(K,F,E),J(te,F,E),J(ge,s,_),Z(m[0],U,K),Z(m[1],ge,te),Z(m[2],te,K),Z(m[3],U,ge)}function w1(m,w,_){var s;for(s=0;s<4;s++)M(m[s],w[s],_)}function Lt(m,w){var _=e(),s=e(),E=e();z(E,w[2]),Z(_,w[0],E),Z(s,w[1],E),u(m,s),m[31]^=ae(_)<<7}function c1(m,w,_){var s,E;for(D(m[0],d),D(m[1],n),D(m[2],n),D(m[3],d),E=255;E>=0;--E)s=_[E/8|0]>>(E&7)&1,w1(m,w,s),f1(w,m),f1(m,m),w1(m,w,s)}function o1(m,w){var _=[e(),e(),e(),e()];D(_[0],I),D(_[1],S),D(_[2],n),Z(_[3],I,S),c1(m,_,w)}function Qt(m,w,_){var s=new Uint8Array(64),E=[e(),e(),e(),e()],F;for(_||a(w,32),lt(s,w,32),s[0]&=248,s[31]&=127,s[31]|=64,o1(E,s),Lt(m,E),F=0;F<32;F++)w[F+32]=m[F];return 0}var l1=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function h1(m,w){var _,s,E,F;for(s=63;s>=32;--s){for(_=0,E=s-32,F=s-12;E>4)*l1[E],_=w[E]>>8,w[E]&=255;for(E=0;E<32;E++)w[E]-=_*l1[E];for(s=0;s<32;s++)w[s+1]+=w[s]>>8,m[s]=w[s]&255}function kt(m){var w=new Float64Array(64),_;for(_=0;_<64;_++)w[_]=m[_];for(_=0;_<64;_++)m[_]=0;h1(m,w)}function _1(m,w,_,s){var E=new Uint8Array(64),F=new Uint8Array(64),U=new Uint8Array(64),K,te,ge=new Float64Array(64),le=[e(),e(),e(),e()];lt(E,s,32),E[0]&=248,E[31]&=127,E[31]|=64;var Fe=_+64;for(K=0;K<_;K++)m[64+K]=w[K];for(K=0;K<32;K++)m[32+K]=E[32+K];for(lt(U,m.subarray(32),_+32),kt(U),o1(le,U),Lt(m,le),K=32;K<64;K++)m[K]=s[K];for(lt(F,m,_+64),kt(F),K=0;K<64;K++)ge[K]=0;for(K=0;K<32;K++)ge[K]=U[K];for(K=0;K<32;K++)for(te=0;te<32;te++)ge[K+te]+=F[K]*E[te];return h1(m.subarray(32),ge),Fe}function E1(m,w){var _=e(),s=e(),E=e(),F=e(),U=e(),K=e(),te=e();return D(m[2],n),se(m[1],w),b(E,m[1]),Z(F,E,h),ue(E,E,m[2]),J(F,m[2],F),b(U,F),b(K,U),Z(te,K,U),Z(_,te,E),Z(_,_,F),k(_,_),Z(_,_,E),Z(_,_,F),Z(_,_,F),Z(m[0],_,F),b(s,m[0]),Z(s,s,F),B(s,E)&&Z(m[0],m[0],O),b(s,m[0]),Z(s,s,F),B(s,E)?-1:(ae(m[0])===w[31]>>7&&ue(m[0],d,m[0]),Z(m[3],m[0],m[1]),0)}function jt(m,w,_,s){var E,F=new Uint8Array(32),U=new Uint8Array(64),K=[e(),e(),e(),e()],te=[e(),e(),e(),e()];if(_<64||E1(te,s))return-1;for(E=0;E<_;E++)m[E]=w[E];for(E=0;E<32;E++)m[E+32]=s[E];if(lt(U,m,_),kt(U),c1(K,te,U),o1(te,w.subarray(32)),f1(K,te),Lt(F,K),_-=64,$(w,0,F,0)){for(E=0;E<_;E++)m[E]=0;return-1}for(E=0;E<_;E++)m[E]=w[E+64];return _}var m1=32,u1=24,wt=32,i1=16,p1=32,Dt=32,n1=32,s1=32,Ht=32,I1=u1,C1=wt,Ma=i1,Je=64,t1=32,ht=64,v1=32,b1=64;t.lowlevel={crypto_core_hsalsa20:we,crypto_stream_xor:C,crypto_stream:Ne,crypto_stream_salsa20_xor:ye,crypto_stream_salsa20:ce,crypto_onetimeauth:o,crypto_onetimeauth_verify:c,crypto_verify_16:L,crypto_verify_32:$,crypto_secretbox:g,crypto_secretbox_open:A,crypto_scalarmult:j,crypto_scalarmult_base:ne,crypto_box_beforenm:de,crypto_box_afternm:he,crypto_box:fe,crypto_box_open:Ue,crypto_box_keypair:re,crypto_hash:lt,crypto_sign:_1,crypto_sign_keypair:Qt,crypto_sign_open:jt,crypto_secretbox_KEYBYTES:m1,crypto_secretbox_NONCEBYTES:u1,crypto_secretbox_ZEROBYTES:wt,crypto_secretbox_BOXZEROBYTES:i1,crypto_scalarmult_BYTES:p1,crypto_scalarmult_SCALARBYTES:Dt,crypto_box_PUBLICKEYBYTES:n1,crypto_box_SECRETKEYBYTES:s1,crypto_box_BEFORENMBYTES:Ht,crypto_box_NONCEBYTES:I1,crypto_box_ZEROBYTES:C1,crypto_box_BOXZEROBYTES:Ma,crypto_sign_BYTES:Je,crypto_sign_PUBLICKEYBYTES:t1,crypto_sign_SECRETKEYBYTES:ht,crypto_sign_SEEDBYTES:v1,crypto_hash_BYTES:b1,gf:e,D:h,L:l1,pack25519:u,unpack25519:se,M:Z,A:J,S:b,Z:ue,pow2523:k,add:f1,set25519:D,modL:h1,scalarmult:c1,scalarbase:o1};function na(m,w){if(m.length!==m1)throw new Error("bad key size");if(w.length!==u1)throw new Error("bad nonce size")}function N1(m,w){if(m.length!==n1)throw new Error("bad public key size");if(w.length!==s1)throw new Error("bad secret key size")}function Ke(){for(var m=0;m=0},t.sign.keyPair=function(){var m=new Uint8Array(t1),w=new Uint8Array(ht);return Qt(m,w),{publicKey:m,secretKey:w}},t.sign.keyPair.fromSecretKey=function(m){if(Ke(m),m.length!==ht)throw new Error("bad secret key size");for(var w=new Uint8Array(t1),_=0;_{l();(function(t,e){"use strict";typeof Y2<"u"&&Y2.exports?Y2.exports=e(Um()):t.ed2curve=e(t.nacl)})(Rm,function(t){"use strict";if(!t)throw new Error("tweetnacl not loaded");var e=function(C){var p,o=new Float64Array(16);if(C)for(p=0;p=0;c--)O(o,o),c!==2&&c!==4&&S(o,o,p);for(c=0;c<16;c++)C[c]=o[c]}function V(C,p){var o,c,g,A=e(),D=e();for(o=0;o<16;o++)D[o]=p[o];for(n(D),n(D),n(D),c=0;c<2;c++){for(A[0]=D[0]-65517,o=1;o<15;o++)A[o]=D[o]-65535-(A[o-1]>>16&1),A[o-1]&=65535;A[15]=D[15]-32767-(A[14]>>16&1),g=A[15]>>16&1,A[14]&=65535,f(D,A,1-g)}for(o=0;o<16;o++)C[2*o]=D[o]&255,C[2*o+1]=D[o]>>8}function L(C){var p=new Uint8Array(32);return V(p,C),p[0]&1}function $(C,p,o,c,g){var A,D=0;for(A=0;A>>8)-1}function X(C,p,o,c){return $(C,p,o,c,32)}function ie(C,p){var o=new Uint8Array(32),c=new Uint8Array(32);return V(o,C),V(c,p),X(o,0,c,0)}function oe(C,p){var o=e(),c;for(c=0;c<16;c++)o[c]=p[c];for(c=250;c>=0;c--)O(o,o),c!==1&&S(o,o,p);for(c=0;c<16;c++)C[c]=o[c]}function we(C,p){var o;for(o=0;o<16;o++)C[o]=p[o]|0}function Ie(C,p){var o=e(),c=e(),g=e(),A=e(),D=e(),P=e(),M=e();return we(C[2],r),h(C[1],p),O(g,C[1]),S(A,g,i),I(g,g,C[2]),v(A,C[2],A),O(D,A),O(P,D),S(M,P,D),S(o,M,g),S(o,o,A),oe(o,o),S(o,o,g),S(o,o,A),S(o,o,A),S(C[0],o,A),O(c,C[0]),S(c,c,A),ie(c,g)&&S(C[0],C[0],d),O(c,C[0]),S(c,c,A),ie(c,g)?-1:(L(C[0])===p[31]>>7&&I(C[0],a,C[0]),S(C[3],C[0],C[1]),0)}function ye(C){var p=new Uint8Array(32),o=[e(),e(),e(),e()],c=e(),g=e();if(Ie(o,C))return null;var A=o[1];return v(c,r,A),I(g,r,A),R(g,g),S(c,c,g),V(p,c),p}function ce(C){var p=new Uint8Array(64),o=new Uint8Array(32),c;for(t.lowlevel.crypto_hash(p,C,32),p[0]&=248,p[31]&=127,p[31]|=64,c=0;c<32;c++)o[c]=p[c];for(c=0;c<64;c++)p[c]=0;return o}function Ne(C){var p=ye(C.publicKey);return p?{publicKey:p,secretKey:ce(C.secretKey)}:null}return{convertPublicKey:ye,convertSecretKey:ce,convertKeyPair:Ne}})});var zm=T(ss=>{"use strict";l();Object.defineProperty(ss,"__esModule",{value:!0});function ZD(t){var e=4,a=t.length,r=a%e;if(!r)return t;var i=a,d=e-r,n=a+d,f=N.alloc(n);for(f.write(t);d--;)f.write("=",i++);return f.toString()}ss.default=ZD});var Gm=T(ls=>{"use strict";l();Object.defineProperty(ls,"__esModule",{value:!0});var eM=zm();function $m(t,e){return e===void 0&&(e="utf8"),N.isBuffer(t)?fs(t.toString("base64")):fs(N.from(t,e).toString("base64"))}function tM(t,e){return e===void 0&&(e="utf8"),N.from(os(t),"base64").toString(e)}function os(t){return t=t.toString(),eM.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function fs(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function aM(t){return N.from(os(t),"base64")}var Ki=$m;Ki.encode=$m;Ki.decode=tM;Ki.toBase64=os;Ki.fromBase64=fs;Ki.toBuffer=aM;ls.default=Ki});var Ym=T((oQ,np)=>{l();np.exports=Gm().default;np.exports.default=np.exports});l();l();var $a=fa(_p(),1),Ei=fa(h4(),1);var hc={};vs(hc,{concatUint8Arrays:()=>y1,decodeInt32:()=>m4,encodeInt32:()=>ya,encodeInt64:()=>E2,fromBigInt:()=>vC,hexToUint8Array:()=>d1,isHex:()=>We,originPrivateKey:()=>hC,toBigInt:()=>mC,toByteArray:()=>yr,uint8ArrayToHex:()=>S1});l();var cc=[];for(let t=0;t<=255;++t){let e=t.toString(16).padStart(2,"0");cc.push(e)}var hC="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function We(t){return/^([0-9A-Fa-f])*$/.test(t)}function d1(t){return new Uint8Array(t.match(/.{1,2}/g).map(e=>parseInt(e,16)))}function S1(t){let e=new Uint8Array(t),a=new Array(e.length);for(let r=0;rr+i.byteLength,0),{buffer:a}=t.reduce(({buffer:r,pos:i},d)=>(r.set(new Uint8Array(d),i),{buffer:r,pos:i+d.byteLength}),{buffer:new Uint8Array(e),pos:0});return a}function ya(t){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,t,!0),new Uint8Array(e).reverse()}function E2(t){let e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,BigInt(t),!0),new Uint8Array(e).reverse()}function m4(t){let e=0;for(let a=0;a=256;)t=t>>>8,e.unshift(t&255);return e}async function mc(t){let e=new URL("/api",t);return(0,$a.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { +`+a)}function Lr(t,e,a,r,i){if(t.listenerCount("wsClientError")){let d=new Error(i);Error.captureStackTrace(d,Lr),t.emit("wsClientError",d,a,e)}else v0(a,r,i)}});var ho=T((dB,co)=>{"use strict";l();var Fa=Yp();Fa.createWebSocketStream=ao();Fa.Server=uo();Fa.Receiver=Qp();Fa.Sender=kp();Fa.WebSocket=Fa;Fa.WebSocketServer=Fa.Server;co.exports=Fa});var vo=T((nB,mo)=>{"use strict";l();mo.exports=ho()});var fr=T((oB,bo)=>{l();var Ag=bo.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=Ag)});var Nd=T((lB,go)=>{l();var _g=go.exports={version:"2.6.0"};typeof __e=="number"&&(__e=_g)});var Qr=T((cB,yo)=>{l();yo.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var bi=T((mB,xo)=>{l();var Ig=Qr();xo.exports=function(t){if(!Ig(t))throw TypeError(t+" is not an object!");return t}});var b0=T((bB,wo)=>{l();wo.exports=function(t){try{return!!t()}catch{return!0}}});var gi=T((yB,Ao)=>{l();Ao.exports=!b0()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Xp=T((wB,Io)=>{l();var _o=Qr(),Jp=fr().document,Sg=_o(Jp)&&_o(Jp.createElement);Io.exports=function(t){return Sg?Jp.createElement(t):{}}});var Eo=T((_B,So)=>{l();So.exports=!gi()&&!b0()(function(){return Object.defineProperty(Xp()("div"),"a",{get:function(){return 7}}).a!=7})});var No=T((SB,Co)=>{l();var Dd=Qr();Co.exports=function(t,e){if(!Dd(t))return t;var a,r;if(e&&typeof(a=t.toString)=="function"&&!Dd(r=a.call(t))||typeof(a=t.valueOf)=="function"&&!Dd(r=a.call(t))||!e&&typeof(a=t.toString)=="function"&&!Dd(r=a.call(t)))return r;throw TypeError("Can't convert object to primitive value")}});var g0=T(Mo=>{l();var Do=bi(),Eg=Eo(),Cg=No(),Ng=Object.defineProperty;Mo.f=gi()?Object.defineProperty:function(e,a,r){if(Do(e),a=Cg(a,!0),Do(r),Eg)try{return Ng(e,a,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[a]=r.value),e}});var Zp=T((DB,To)=>{l();To.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var lr=T((TB,Bo)=>{l();var Dg=g0(),Mg=Zp();Bo.exports=gi()?function(t,e,a){return Dg.f(t,e,Mg(1,a))}:function(t,e,a){return t[e]=a,t}});var y0=T((qB,qo)=>{l();var Tg={}.hasOwnProperty;qo.exports=function(t,e){return Tg.call(t,e)}});var Md=T((PB,Oo)=>{l();var Bg=0,qg=Math.random();Oo.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++Bg+qg).toString(36))}});var x0=T((VB,Uo)=>{l();var Og=fr(),Td=lr(),Po=y0(),en=Md()("src"),tn="toString",an=Function[tn],Pg=(""+an).split(tn);Nd().inspectSource=function(t){return an.call(t)};(Uo.exports=function(t,e,a,r){var i=typeof a=="function";i&&(Po(a,"name")||Td(a,"name",e)),t[e]!==a&&(i&&(Po(a,en)||Td(a,en,t[e]?""+t[e]:Pg.join(String(e)))),t===Og?t[e]=a:r?t[e]?t[e]=a:Td(t,e,a):(delete t[e],Td(t,e,a)))})(Function.prototype,tn,function(){return typeof this=="function"&&this[en]||an.call(this)})});var rn=T((FB,Vo)=>{l();Vo.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var dn=T((QB,Ro)=>{l();var Ug=rn();Ro.exports=function(t,e,a){if(Ug(t),e===void 0)return t;switch(a){case 1:return function(r){return t.call(e,r)};case 2:return function(r,i){return t.call(e,r,i)};case 3:return function(r,i,d){return t.call(e,r,i,d)}}return function(){return t.apply(e,arguments)}}});var Pt=T((jB,Lo)=>{l();var yi=fr(),Bd=Nd(),Vg=lr(),Rg=x0(),Fo=dn(),pn="prototype",ut=function(t,e,a){var r=t&ut.F,i=t&ut.G,d=t&ut.S,n=t&ut.P,s=t&ut.B,c=i?yi:d?yi[e]||(yi[e]={}):(yi[e]||{})[pn],v=i?Bd:Bd[e]||(Bd[e]={}),I=v[pn]||(v[pn]={}),S,O,R,V;i&&(a=e);for(S in a)O=!r&&c&&c[S]!==void 0,R=(O?c:a)[S],V=s&&O?Fo(R,yi):n&&typeof R=="function"?Fo(Function.call,R):R,c&&Rg(c,S,R,t&ut.U),v[S]!=R&&Vg(v,S,V),n&&I[S]!=R&&(I[S]=R)};yi.core=Bd;ut.F=1;ut.G=2;ut.S=4;ut.P=8;ut.B=16;ut.W=32;ut.U=64;ut.R=128;Lo.exports=ut});var w0=T((KB,Qo)=>{l();var Fg={}.toString;Qo.exports=function(t){return Fg.call(t).slice(8,-1)}});var nn=T(($B,ko)=>{l();var Lg=w0();ko.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return Lg(t)=="String"?t.split(""):Object(t)}});var xi=T((YB,jo)=>{l();jo.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var sn=T((JB,Ho)=>{l();var Qg=xi();Ho.exports=function(t){return Object(Qg(t))}});var qd=T((ZB,Ko)=>{l();var kg=Math.ceil,jg=Math.floor;Ko.exports=function(t){return isNaN(t=+t)?0:(t>0?jg:kg)(t)}});var Od=T((tq,zo)=>{l();var Hg=qd(),Kg=Math.min;zo.exports=function(t){return t>0?Kg(Hg(t),9007199254740991):0}});var Go=T((rq,$o)=>{l();var zg=w0();$o.exports=Array.isArray||function(e){return zg(e)=="Array"}});var on=T((dq,Yo)=>{l();Yo.exports=!1});var fn=T((nq,Zo)=>{l();var $g=Nd(),Wo=fr(),Jo="__core-js_shared__",Xo=Wo[Jo]||(Wo[Jo]={});(Zo.exports=function(t,e){return Xo[t]||(Xo[t]=e!==void 0?e:{})})("versions",[]).push({version:$g.version,mode:on()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var Yt=T((oq,tf)=>{l();var ln=fn()("wks"),Gg=Md(),un=fr().Symbol,ef=typeof un=="function",Yg=tf.exports=function(t){return ln[t]||(ln[t]=ef&&un[t]||(ef?un:Gg)("Symbol."+t))};Yg.store=ln});var df=T((lq,rf)=>{l();var Wg=Qr(),af=Go(),Jg=Yt()("species");rf.exports=function(t){var e;return af(t)&&(e=t.constructor,typeof e=="function"&&(e===Array||af(e.prototype))&&(e=void 0),Wg(e)&&(e=e[Jg],e===null&&(e=void 0))),e===void 0?Array:e}});var nf=T((cq,pf)=>{l();var Xg=df();pf.exports=function(t,e){return new(Xg(t))(e)}});var wi=T((mq,sf)=>{l();var Zg=dn(),ey=nn(),ty=sn(),ay=Od(),ry=nf();sf.exports=function(t,e){var a=t==1,r=t==2,i=t==3,d=t==4,n=t==6,s=t==5||n,c=e||ry;return function(v,I,S){for(var O=ty(v),R=ey(O),V=Zg(I,S,3),L=ay(R.length),G=0,J=a?c(v,L):r?c(v,0):void 0,fe,oe;L>G;G++)if((s||G in R)&&(fe=R[G],oe=V(fe,G,O),t)){if(a)J[G]=oe;else if(oe)switch(t){case 3:return!0;case 5:return fe;case 6:return G;case 2:J.push(fe)}else if(d)return!1}return n?-1:i||d?d:J}}});var A0=T((bq,of)=>{l();var cn=Yt()("unscopables"),hn=Array.prototype;hn[cn]==null&&lr()(hn,cn,{});of.exports=function(t){hn[cn][t]=!0}});var lf=T(()=>{"use strict";l();var mn=Pt(),iy=wi()(6),vn="findIndex",ff=!0;vn in[]&&Array(1)[vn](function(){ff=!1});mn(mn.P+mn.F*ff,"Array",{findIndex:function(e){return iy(this,e,arguments.length>1?arguments[1]:void 0)}});A0()(vn)});var cf=T(()=>{"use strict";l();var bn=Pt(),dy=wi()(5),gn="find",uf=!0;gn in[]&&Array(1)[gn](function(){uf=!1});bn(bn.P+bn.F*uf,"Array",{find:function(e){return dy(this,e,arguments.length>1?arguments[1]:void 0)}});A0()(gn)});var vf=T(()=>{l();var py=g0().f,hf=Function.prototype,ny=/^\s*function ([^ (]*)/,mf="name";mf in hf||gi()&&py(hf,mf,{configurable:!0,get:function(){try{return(""+this).match(ny)[1]}catch{return""}}})});var xn=T(yn=>{"use strict";l();yn.__esModule=!0;yn.default=function(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}});var gf=T(ur=>{"use strict";l();Object.defineProperty(ur,"__esModule",{value:!0});ur.flip=sy;ur.constant=oy;ur.on=fy;ur.compose=ly;ur.pipe=uy;ur.curry=cy;function sy(t){return function(e,a){return t(a,e)}}function oy(t){return function(){return t}}function fy(t,e){return function(a,r){return t(e(a),e(r))}}function ly(){for(var t=this,e=arguments.length,a=Array(e),r=0;r-1;s--)n=a[s].call(t,n);return n}}function uy(){for(var t=this,e=arguments.length,a=Array(e),r=0;r=e?t.apply(this,r):bf(t,e,r)}}function cy(t){return bf(t,t.length,[])}});var Pd=T((Bq,yf)=>{l();var hy=Math.ceil,my=Math.floor;yf.exports=function(t){return isNaN(t=+t)?0:(t>0?my:hy)(t)}});var Ud=T((Oq,xf)=>{l();xf.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var Af=T((Uq,wf)=>{l();var vy=Pd(),by=Ud();wf.exports=function(t){return function(e,a){var r=String(by(e)),i=vy(a),d=r.length,n,s;return i<0||i>=d?t?"":void 0:(n=r.charCodeAt(i),n<55296||n>56319||i+1===d||(s=r.charCodeAt(i+1))<56320||s>57343?t?r.charAt(i):n:t?r.slice(i,i+2):(n-55296<<10)+(s-56320)+65536)}}});var _0=T((Rq,_f)=>{l();_f.exports=!0});var La=T((Lq,If)=>{l();var gy=If.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=gy)});var ct=T((kq,Sf)=>{l();var yy=Sf.exports={version:"2.6.0"};typeof __e=="number"&&(__e=yy)});var Cf=T((Hq,Ef)=>{l();Ef.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var wn=T((zq,Nf)=>{l();var xy=Cf();Nf.exports=function(t,e,a){if(xy(t),e===void 0)return t;switch(a){case 1:return function(r){return t.call(e,r)};case 2:return function(r,i){return t.call(e,r,i)};case 3:return function(r,i,d){return t.call(e,r,i,d)}}return function(){return t.apply(e,arguments)}}});var kr=T((Gq,Df)=>{l();Df.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var jr=T((Wq,Mf)=>{l();var wy=kr();Mf.exports=function(t){if(!wy(t))throw TypeError(t+" is not an object!");return t}});var Hr=T((Xq,Tf)=>{l();Tf.exports=function(t){try{return!!t()}catch{return!0}}});var cr=T((eO,Bf)=>{l();Bf.exports=!Hr()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var _n=T((aO,Of)=>{l();var qf=kr(),An=La().document,Ay=qf(An)&&qf(An.createElement);Of.exports=function(t){return Ay?An.createElement(t):{}}});var In=T((iO,Pf)=>{l();Pf.exports=!cr()&&!Hr()(function(){return Object.defineProperty(_n()("div"),"a",{get:function(){return 7}}).a!=7})});var Rd=T((pO,Uf)=>{l();var Vd=kr();Uf.exports=function(t,e){if(!Vd(t))return t;var a,r;if(e&&typeof(a=t.toString)=="function"&&!Vd(r=a.call(t))||typeof(a=t.valueOf)=="function"&&!Vd(r=a.call(t))||!e&&typeof(a=t.toString)=="function"&&!Vd(r=a.call(t)))return r;throw TypeError("Can't convert object to primitive value")}});var Qa=T(Rf=>{l();var Vf=jr(),_y=In(),Iy=Rd(),Sy=Object.defineProperty;Rf.f=cr()?Object.defineProperty:function(e,a,r){if(Vf(e),a=Iy(a,!0),Vf(r),_y)try{return Sy(e,a,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[a]=r.value),e}});var Ai=T((fO,Ff)=>{l();Ff.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var Kr=T((uO,Lf)=>{l();var Ey=Qa(),Cy=Ai();Lf.exports=cr()?function(t,e,a){return Ey.f(t,e,Cy(1,a))}:function(t,e,a){return t[e]=a,t}});var hr=T((hO,Qf)=>{l();var Ny={}.hasOwnProperty;Qf.exports=function(t,e){return Ny.call(t,e)}});var ka=T((vO,jf)=>{l();var Fd=La(),Sn=ct(),kf=wn(),Dy=Kr(),My=hr(),Ld="prototype",ot=function(t,e,a){var r=t&ot.F,i=t&ot.G,d=t&ot.S,n=t&ot.P,s=t&ot.B,c=t&ot.W,v=i?Sn:Sn[e]||(Sn[e]={}),I=v[Ld],S=i?Fd:d?Fd[e]:(Fd[e]||{})[Ld],O,R,V;i&&(a=e);for(O in a)R=!r&&S&&S[O]!==void 0,!(R&&My(v,O))&&(V=R?S[O]:a[O],v[O]=i&&typeof S[O]!="function"?a[O]:s&&R?kf(V,Fd):c&&S[O]==V?function(L){var G=function(J,fe,oe){if(this instanceof L){switch(arguments.length){case 0:return new L;case 1:return new L(J);case 2:return new L(J,fe)}return new L(J,fe,oe)}return L.apply(this,arguments)};return G[Ld]=L[Ld],G}(V):n&&typeof V=="function"?kf(Function.call,V):V,n&&((v.virtual||(v.virtual={}))[O]=V,t&ot.R&&I&&!I[O]&&Dy(I,O,V)))};ot.F=1;ot.G=2;ot.S=4;ot.P=8;ot.B=16;ot.W=32;ot.U=64;ot.R=128;jf.exports=ot});var En=T((gO,Hf)=>{l();Hf.exports=Kr()});var zr=T((xO,Kf)=>{l();Kf.exports={}});var Qd=T((AO,zf)=>{l();var Ty={}.toString;zf.exports=function(t){return Ty.call(t).slice(8,-1)}});var Cn=T((IO,$f)=>{l();var By=Qd();$f.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return By(t)=="String"?t.split(""):Object(t)}});var mr=T((EO,Gf)=>{l();var qy=Cn(),Oy=Ud();Gf.exports=function(t){return qy(Oy(t))}});var Nn=T((NO,Yf)=>{l();var Py=Pd(),Uy=Math.min;Yf.exports=function(t){return t>0?Uy(Py(t),9007199254740991):0}});var Jf=T((MO,Wf)=>{l();var Vy=Pd(),Ry=Math.max,Fy=Math.min;Wf.exports=function(t,e){return t=Vy(t),t<0?Ry(t+e,0):Fy(t,e)}});var Zf=T((BO,Xf)=>{l();var Ly=mr(),Qy=Nn(),ky=Jf();Xf.exports=function(t){return function(e,a,r){var i=Ly(e),d=Qy(i.length),n=ky(r,d),s;if(t&&a!=a){for(;d>n;)if(s=i[n++],s!=s)return!0}else for(;d>n;n++)if((t||n in i)&&i[n]===a)return t||n||0;return!t&&-1}}});var kd=T((OO,r5)=>{l();var jy=ct(),e5=La(),t5="__core-js_shared__",a5=e5[t5]||(e5[t5]={});(r5.exports=function(t,e){return a5[t]||(a5[t]=e!==void 0?e:{})})("versions",[]).push({version:jy.version,mode:_0()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var I0=T((UO,i5)=>{l();var Hy=0,Ky=Math.random();i5.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++Hy+Ky).toString(36))}});var jd=T((RO,p5)=>{l();var d5=kd()("keys"),zy=I0();p5.exports=function(t){return d5[t]||(d5[t]=zy(t))}});var Dn=T((LO,s5)=>{l();var n5=hr(),$y=mr(),Gy=Zf()(!1),Yy=jd()("IE_PROTO");s5.exports=function(t,e){var a=$y(t),r=0,i=[],d;for(d in a)d!=Yy&&n5(a,d)&&i.push(d);for(;e.length>r;)n5(a,d=e[r++])&&(~Gy(i,d)||i.push(d));return i}});var Hd=T((kO,o5)=>{l();o5.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var $r=T((HO,f5)=>{l();var Wy=Dn(),Jy=Hd();f5.exports=Object.keys||function(e){return Wy(e,Jy)}});var u5=T((zO,l5)=>{l();var Xy=Qa(),Zy=jr(),ex=$r();l5.exports=cr()?Object.defineProperties:function(e,a){Zy(e);for(var r=ex(a),i=r.length,d=0,n;i>d;)Xy.f(e,n=r[d++],a[n]);return e}});var m5=T((GO,h5)=>{l();var c5=La().document;h5.exports=c5&&c5.documentElement});var Bn=T((WO,b5)=>{l();var tx=jr(),ax=u5(),v5=Hd(),rx=jd()("IE_PROTO"),Mn=function(){},Tn="prototype",Kd=function(){var t=_n()("iframe"),e=v5.length,a="<",r=">",i;for(t.style.display="none",m5().appendChild(t),t.src="javascript:",i=t.contentWindow.document,i.open(),i.write(a+"script"+r+"document.F=Object"+a+"/script"+r),i.close(),Kd=i.F;e--;)delete Kd[Tn][v5[e]];return Kd()};b5.exports=Object.create||function(e,a){var r;return e!==null?(Mn[Tn]=tx(e),r=new Mn,Mn[Tn]=null,r[rx]=e):r=Kd(),a===void 0?r:ax(r,a)}});var Ut=T((XO,y5)=>{l();var qn=kd()("wks"),ix=I0(),On=La().Symbol,g5=typeof On=="function",dx=y5.exports=function(t){return qn[t]||(qn[t]=g5&&On[t]||(g5?On:ix)("Symbol."+t))};dx.store=qn});var zd=T((eP,w5)=>{l();var px=Qa().f,nx=hr(),x5=Ut()("toStringTag");w5.exports=function(t,e,a){t&&!nx(t=a?t:t.prototype,x5)&&px(t,x5,{configurable:!0,value:e})}});var I5=T((aP,_5)=>{"use strict";l();var sx=Bn(),ox=Ai(),fx=zd(),A5={};Kr()(A5,Ut()("iterator"),function(){return this});_5.exports=function(t,e,a){t.prototype=sx(A5,{next:ox(1,a)}),fx(t,e+" Iterator")}});var S0=T((iP,S5)=>{l();var lx=Ud();S5.exports=function(t){return Object(lx(t))}});var N5=T((pP,C5)=>{l();var ux=hr(),cx=S0(),E5=jd()("IE_PROTO"),hx=Object.prototype;C5.exports=Object.getPrototypeOf||function(t){return t=cx(t),ux(t,E5)?t[E5]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?hx:null}});var Vn=T((sP,O5)=>{"use strict";l();var D5=_0(),Pn=ka(),mx=En(),M5=Kr(),T5=zr(),vx=I5(),bx=zd(),gx=N5(),E0=Ut()("iterator"),Un=!([].keys&&"next"in[].keys()),yx="@@iterator",B5="keys",$d="values",q5=function(){return this};O5.exports=function(t,e,a,r,i,d,n){vx(a,e,r);var s=function(oe){if(!Un&&oe in S)return S[oe];switch(oe){case B5:return function(){return new a(this,oe)};case $d:return function(){return new a(this,oe)}}return function(){return new a(this,oe)}},c=e+" Iterator",v=i==$d,I=!1,S=t.prototype,O=S[E0]||S[yx]||i&&S[i],R=O||s(i),V=i?v?s("entries"):R:void 0,L=e=="Array"&&S.entries||O,G,J,fe;if(L&&(fe=gx(L.call(new t)),fe!==Object.prototype&&fe.next&&(bx(fe,c,!0),!D5&&typeof fe[E0]!="function"&&M5(fe,E0,q5))),v&&O&&O.name!==$d&&(I=!0,R=function(){return O.call(this)}),(!D5||n)&&(Un||I||!S[E0])&&M5(S,E0,R),T5[e]=R,T5[c]=q5,i)if(G={values:v?R:s($d),keys:d?R:s(B5),entries:V},n)for(J in G)J in S||mx(S,J,G[J]);else Pn(Pn.P+Pn.F*(Un||I),e,G);return G}});var C0=T(()=>{"use strict";l();var xx=Af()(!0);Vn()(String,"String",function(t){this._t=String(t),this._i=0},function(){var t=this._t,e=this._i,a;return e>=t.length?{value:void 0,done:!0}:(a=xx(t,e),this._i+=a.length,{value:a,done:!1})})});var U5=T((cP,P5)=>{l();P5.exports=function(){}});var R5=T((mP,V5)=>{l();V5.exports=function(t,e){return{value:e,done:!!t}}});var Q5=T((bP,L5)=>{"use strict";l();var Rn=U5(),Gd=R5(),F5=zr(),wx=mr();L5.exports=Vn()(Array,"Array",function(t,e){this._t=wx(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,a=this._i++;return!t||a>=t.length?(this._t=void 0,Gd(1)):e=="keys"?Gd(0,a):e=="values"?Gd(0,t[a]):Gd(0,[a,t[a]])},"values");F5.Arguments=F5.Array;Rn("keys");Rn("values");Rn("entries")});var Xd=T(()=>{l();Q5();var Ax=La(),_x=Kr(),k5=zr(),j5=Ut()("toStringTag"),H5="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(Yd=0;Yd{l();K5.f=Ut()});var $5=T((IP,z5)=>{l();C0();Xd();z5.exports=Zd().f("iterator")});var Y5=T((EP,G5)=>{l();G5.exports={default:$5(),__esModule:!0}});var J5=T((NP,W5)=>{l();var Gr=I0()("meta"),Ix=kr(),Ln=hr(),Sx=Qa().f,Ex=0,e2=Object.isExtensible||function(){return!0},Cx=!Hr()(function(){return e2(Object.preventExtensions({}))}),Qn=function(t){Sx(t,Gr,{value:{i:"O"+ ++Ex,w:{}}})},Nx=function(t,e){if(!Ix(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!Ln(t,Gr)){if(!e2(t))return"F";if(!e)return"E";Qn(t)}return t[Gr].i},Dx=function(t,e){if(!Ln(t,Gr)){if(!e2(t))return!0;if(!e)return!1;Qn(t)}return t[Gr].w},Mx=function(t){return Cx&&Tx.NEED&&e2(t)&&!Ln(t,Gr)&&Qn(t),t},Tx=W5.exports={KEY:Gr,NEED:!1,fastKey:Nx,getWeak:Dx,onFreeze:Mx}});var t2=T((MP,Z5)=>{l();var Bx=La(),X5=ct(),qx=_0(),Ox=Zd(),Px=Qa().f;Z5.exports=function(t){var e=X5.Symbol||(X5.Symbol=qx?{}:Bx.Symbol||{});t.charAt(0)!="_"&&!(t in e)&&Px(e,t,{value:Ox.f(t)})}});var a2=T(e8=>{l();e8.f=Object.getOwnPropertySymbols});var _i=T(t8=>{l();t8.f={}.propertyIsEnumerable});var r8=T((UP,a8)=>{l();var Ux=$r(),Vx=a2(),Rx=_i();a8.exports=function(t){var e=Ux(t),a=Vx.f;if(a)for(var r=a(t),i=Rx.f,d=0,n;r.length>d;)i.call(t,n=r[d++])&&e.push(n);return e}});var d8=T((RP,i8)=>{l();var Fx=Qd();i8.exports=Array.isArray||function(e){return Fx(e)=="Array"}});var kn=T(p8=>{l();var Lx=Dn(),Qx=Hd().concat("length","prototype");p8.f=Object.getOwnPropertyNames||function(e){return Lx(e,Qx)}});var f8=T((kP,o8)=>{l();var kx=mr(),n8=kn().f,jx={}.toString,s8=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],Hx=function(t){try{return n8(t)}catch{return s8.slice()}};o8.exports.f=function(e){return s8&&jx.call(e)=="[object Window]"?Hx(e):n8(kx(e))}});var c8=T(u8=>{l();var Kx=_i(),zx=Ai(),$x=mr(),Gx=Rd(),Yx=hr(),Wx=In(),l8=Object.getOwnPropertyDescriptor;u8.f=cr()?l8:function(e,a){if(e=$x(e),a=Gx(a,!0),Wx)try{return l8(e,a)}catch{}if(Yx(e,a))return zx(!Kx.f.call(e,a),e[a])}});var N8=T(()=>{"use strict";l();var d2=La(),W1=hr(),Gn=cr(),Nt=ka(),h8=En(),Jx=J5().KEY,g8=Hr(),e6=kd(),t6=zd(),Xx=I0(),M0=Ut(),Zx=Zd(),ew=t2(),tw=r8(),aw=d8(),Yn=jr(),rw=kr(),p2=mr(),a6=Rd(),Wn=Ai(),D0=Bn(),y8=f8(),x8=c8(),w8=Qa(),iw=$r(),A8=x8.f,Yr=w8.f,_8=y8.f,yt=d2.Symbol,i2=d2.JSON,r2=i2&&i2.stringify,vr="prototype",gt=M0("_hidden"),m8=M0("toPrimitive"),dw={}.propertyIsEnumerable,N0=e6("symbol-registry"),ja=e6("symbols"),T0=e6("op-symbols"),Vt=Object[vr],Ii=typeof yt=="function",jn=d2.QObject,Jn=!jn||!jn[vr]||!jn[vr].findChild,Xn=Gn&&g8(function(){return D0(Yr({},"a",{get:function(){return Yr(this,"a",{value:7}).a}})).a!=7})?function(t,e,a){var r=A8(Vt,e);r&&delete Vt[e],Yr(t,e,a),r&&t!==Vt&&Yr(Vt,e,r)}:Yr,v8=function(t){var e=ja[t]=D0(yt[vr]);return e._k=t,e},Zn=Ii&&typeof yt.iterator=="symbol"?function(t){return typeof t=="symbol"}:function(t){return t instanceof yt},n2=function(e,a,r){return e===Vt&&n2(T0,a,r),Yn(e),a=a6(a,!0),Yn(r),W1(ja,a)?(r.enumerable?(W1(e,gt)&&e[gt][a]&&(e[gt][a]=!1),r=D0(r,{enumerable:Wn(0,!1)})):(W1(e,gt)||Yr(e,gt,Wn(1,{})),e[gt][a]=!0),Xn(e,a,r)):Yr(e,a,r)},I8=function(e,a){Yn(e);for(var r=tw(a=p2(a)),i=0,d=r.length,n;d>i;)n2(e,n=r[i++],a[n]);return e},pw=function(e,a){return a===void 0?D0(e):I8(D0(e),a)},b8=function(e){var a=dw.call(this,e=a6(e,!0));return this===Vt&&W1(ja,e)&&!W1(T0,e)?!1:a||!W1(this,e)||!W1(ja,e)||W1(this,gt)&&this[gt][e]?a:!0},S8=function(e,a){if(e=p2(e),a=a6(a,!0),!(e===Vt&&W1(ja,a)&&!W1(T0,a))){var r=A8(e,a);return r&&W1(ja,a)&&!(W1(e,gt)&&e[gt][a])&&(r.enumerable=!0),r}},E8=function(e){for(var a=_8(p2(e)),r=[],i=0,d;a.length>i;)!W1(ja,d=a[i++])&&d!=gt&&d!=Jx&&r.push(d);return r},C8=function(e){for(var a=e===Vt,r=_8(a?T0:p2(e)),i=[],d=0,n;r.length>d;)W1(ja,n=r[d++])&&(a?W1(Vt,n):!0)&&i.push(ja[n]);return i};Ii||(yt=function(){if(this instanceof yt)throw TypeError("Symbol is not a constructor!");var e=Xx(arguments.length>0?arguments[0]:void 0),a=function(r){this===Vt&&a.call(T0,r),W1(this,gt)&&W1(this[gt],e)&&(this[gt][e]=!1),Xn(this,e,Wn(1,r))};return Gn&&Jn&&Xn(Vt,e,{configurable:!0,set:a}),v8(e)},h8(yt[vr],"toString",function(){return this._k}),x8.f=S8,w8.f=n2,kn().f=y8.f=E8,_i().f=b8,a2().f=C8,Gn&&!_0()&&h8(Vt,"propertyIsEnumerable",b8,!0),Zx.f=function(t){return v8(M0(t))});Nt(Nt.G+Nt.W+Nt.F*!Ii,{Symbol:yt});for(Hn="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Kn=0;Hn.length>Kn;)M0(Hn[Kn++]);var Hn,Kn;for(zn=iw(M0.store),$n=0;zn.length>$n;)ew(zn[$n++]);var zn,$n;Nt(Nt.S+Nt.F*!Ii,"Symbol",{for:function(t){return W1(N0,t+="")?N0[t]:N0[t]=yt(t)},keyFor:function(e){if(!Zn(e))throw TypeError(e+" is not a symbol!");for(var a in N0)if(N0[a]===e)return a},useSetter:function(){Jn=!0},useSimple:function(){Jn=!1}});Nt(Nt.S+Nt.F*!Ii,"Object",{create:pw,defineProperty:n2,defineProperties:I8,getOwnPropertyDescriptor:S8,getOwnPropertyNames:E8,getOwnPropertySymbols:C8});i2&&Nt(Nt.S+Nt.F*(!Ii||g8(function(){var t=yt();return r2([t])!="[null]"||r2({a:t})!="{}"||r2(Object(t))!="{}"})),"JSON",{stringify:function(e){for(var a=[e],r=1,i,d;arguments.length>r;)a.push(arguments[r++]);if(d=i=a[1],!(!rw(i)&&e===void 0||Zn(e)))return aw(i)||(i=function(n,s){if(typeof d=="function"&&(s=d.call(this,n,s)),!Zn(s))return s}),a[1]=i,r2.apply(i2,a)}});yt[vr][m8]||Kr()(yt[vr],m8,yt[vr].valueOf);t6(yt,"Symbol");t6(Math,"Math",!0);t6(d2.JSON,"JSON",!0)});var D8=T(()=>{l()});var M8=T(()=>{l();t2()("asyncIterator")});var T8=T(()=>{l();t2()("observable")});var q8=T((iU,B8)=>{l();N8();D8();M8();T8();B8.exports=ct().Symbol});var r6=T((pU,O8)=>{l();O8.exports={default:q8(),__esModule:!0}});var V8=T(d6=>{"use strict";l();d6.__esModule=!0;var nw=Y5(),P8=U8(nw),sw=r6(),br=U8(sw),i6=typeof br.default=="function"&&typeof P8.default=="symbol"?function(t){return typeof t}:function(t){return t&&typeof br.default=="function"&&t.constructor===br.default&&t!==br.default.prototype?"symbol":typeof t};function U8(t){return t&&t.__esModule?t:{default:t}}d6.default=typeof br.default=="function"&&i6(P8.default)==="symbol"?function(t){return typeof t>"u"?"undefined":i6(t)}:function(t){return t&&typeof br.default=="function"&&t.constructor===br.default&&t!==br.default.prototype?"symbol":typeof t>"u"?"undefined":i6(t)}});var L8=T((fU,F8)=>{l();var R8=jr();F8.exports=function(t,e,a,r){try{return r?e(R8(a)[0],a[1]):e(a)}catch(d){var i=t.return;throw i!==void 0&&R8(i.call(t)),d}}});var k8=T((uU,Q8)=>{l();var ow=zr(),fw=Ut()("iterator"),lw=Array.prototype;Q8.exports=function(t){return t!==void 0&&(ow.Array===t||lw[fw]===t)}});var H8=T((hU,j8)=>{"use strict";l();var uw=Qa(),cw=Ai();j8.exports=function(t,e,a){e in t?uw.f(t,e,cw(0,a)):t[e]=a}});var n6=T((vU,K8)=>{l();var p6=Qd(),hw=Ut()("toStringTag"),mw=p6(function(){return arguments}())=="Arguments",vw=function(t,e){try{return t[e]}catch{}};K8.exports=function(t){var e,a,r;return t===void 0?"Undefined":t===null?"Null":typeof(a=vw(e=Object(t),hw))=="string"?a:mw?p6(e):(r=p6(e))=="Object"&&typeof e.callee=="function"?"Arguments":r}});var s6=T((gU,z8)=>{l();var bw=n6(),gw=Ut()("iterator"),yw=zr();z8.exports=ct().getIteratorMethod=function(t){if(t!=null)return t[gw]||t["@@iterator"]||yw[bw(t)]}});var Y8=T((xU,G8)=>{l();var f6=Ut()("iterator"),$8=!1;try{o6=[7][f6](),o6.return=function(){$8=!0},Array.from(o6,function(){throw 2})}catch{}var o6;G8.exports=function(t,e){if(!e&&!$8)return!1;var a=!1;try{var r=[7],i=r[f6]();i.next=function(){return{done:a=!0}},r[f6]=function(){return i},t(r)}catch{}return a}});var J8=T(()=>{"use strict";l();var xw=wn(),l6=ka(),ww=S0(),Aw=L8(),_w=k8(),Iw=Nn(),W8=H8(),Sw=s6();l6(l6.S+l6.F*!Y8()(function(t){Array.from(t)}),"Array",{from:function(e){var a=ww(e),r=typeof this=="function"?this:Array,i=arguments.length,d=i>1?arguments[1]:void 0,n=d!==void 0,s=0,c=Sw(a),v,I,S,O;if(n&&(d=xw(d,i>2?arguments[2]:void 0,2)),c!=null&&!(r==Array&&_w(c)))for(O=c.call(a),I=new r;!(S=O.next()).done;s++)W8(I,s,n?Aw(O,d,[S.value,s],!0):S.value);else for(v=Iw(a.length),I=new r(v);v>s;s++)W8(I,s,n?d(a[s],s):a[s]);return I.length=s,I}})});var Z8=T((SU,X8)=>{l();C0();J8();X8.exports=ct().Array.from});var u6=T((CU,e9)=>{l();e9.exports={default:Z8(),__esModule:!0}});var h6=T(c6=>{"use strict";l();c6.__esModule=!0;var Ew=u6(),Cw=Nw(Ew);function Nw(t){return t&&t.__esModule?t:{default:t}}c6.default=function(t){if(Array.isArray(t)){for(var e=0,a=Array(t.length);e{"use strict";l();Object.defineProperty(gr,"__esModule",{value:!0});gr.flip=Dw;gr.constant=Mw;gr.on=Tw;gr.compose=Bw;gr.pipe=qw;gr.curry=Ow;function Dw(t){return function(e,a){return t(a,e)}}function Mw(t){return function(){return t}}function Tw(t,e){return function(a,r){return t(e(a),e(r))}}function Bw(){for(var t=this,e=arguments.length,a=Array(e),r=0;r-1;s--)n=a[s].call(t,n);return n}}function qw(){for(var t=this,e=arguments.length,a=Array(e),r=0;r=e?t.apply(this,r):t9(t,e,r)}}function Ow(t){return t9(t,t.length,[])}});var d9=T((qU,i9)=>{"use strict";l();var r9=$r(),Pw=a2(),Uw=_i(),Vw=S0(),Rw=Cn(),s2=Object.assign;i9.exports=!s2||Hr()(function(){var t={},e={},a=Symbol(),r="abcdefghijklmnopqrst";return t[a]=7,r.split("").forEach(function(i){e[i]=i}),s2({},t)[a]!=7||Object.keys(s2({},e)).join("")!=r})?function(e,a){for(var r=Vw(e),i=arguments.length,d=1,n=Pw.f,s=Uw.f;i>d;)for(var c=Rw(arguments[d++]),v=n?r9(c).concat(n(c)):r9(c),I=v.length,S=0,O;I>S;)s.call(c,O=v[S++])&&(r[O]=c[O]);return r}:s2});var p9=T(()=>{l();var m6=ka();m6(m6.S+m6.F,"Object",{assign:d9()})});var s9=T((RU,n9)=>{l();p9();n9.exports=ct().Object.assign});var f9=T((LU,o9)=>{l();o9.exports={default:s9(),__esModule:!0}});var b6=T(v6=>{"use strict";l();v6.__esModule=!0;var Fw=f9(),Lw=Qw(Fw);function Qw(t){return t&&t.__esModule?t:{default:t}}v6.default=Lw.default||function(t){for(var e=1;e{l();var g6=ka(),kw=ct(),jw=Hr();l9.exports=function(t,e){var a=(kw.Object||{})[t]||Object[t],r={};r[t]=e(a),g6(g6.S+g6.F*jw(function(){a(1)}),"Object",r)}});var c9=T(()=>{l();var Hw=S0(),Kw=$r();u9()("keys",function(){return function(e){return Kw(Hw(e))}})});var m9=T((YU,h9)=>{l();c9();h9.exports=ct().Object.keys});var y6=T((JU,v9)=>{l();v9.exports={default:m9(),__esModule:!0}});var g9=T((ZU,b9)=>{l();var zw=kr(),$w=Math.floor;b9.exports=function(e){return!zw(e)&&isFinite(e)&&$w(e)===e}});var x9=T(()=>{l();var y9=ka();y9(y9.S,"Number",{isInteger:g9()})});var A9=T((iV,w9)=>{l();x9();w9.exports=ct().Number.isInteger});var I9=T((pV,_9)=>{l();_9.exports={default:A9(),__esModule:!0}});var w6=T(x6=>{"use strict";l();x6.__esModule=!0;x6.default=function(t,e){var a={};for(var r in t)e.indexOf(r)>=0||!Object.prototype.hasOwnProperty.call(t,r)||(a[r]=t[r]);return a}});var A6=T(at=>{"use strict";l();Object.defineProperty(at,"__esModule",{value:!0});function Wr(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var xt=Wr(h6()),k1=Wr(xn()),Wt=a9(),Gw=Wr(b6()),Yw=Wr(u6()),N9=Wr(y6()),Ww=Wr(I9()),Jw=Wr(w6()),Xw=void 0,Zw=function(t,e){return k1(this,Xw),[].concat(xt(e),xt(t))}.bind(void 0),eA=Wt.curry(Zw),tA=void 0,aA=function(t){return k1(this,tA),Array.isArray(t)?t:[t]}.bind(void 0),rA=void 0,iA=function(t,e){return k1(this,rA),e===t.length-1}.bind(void 0),D9=Wt.curry(iA),dA=void 0,pA=function(t,e){return k1(this,dA),D9(t,e)?0:e+1}.bind(void 0),nA=Wt.curry(pA),M9=void 0,sA=function(t){return k1(this,M9),Math.max.apply(Math,xt(N9(t)))+1}.bind(void 0),oA=function(t){return k1(this,M9),Yw("length"in t?t:Gw({},t,{length:sA(t)}))}.bind(void 0),fA=void 0,lA=function(t,e,a){return k1(this,fA),[].concat(xt(a.slice(0,t)),xt(e),xt(a.slice(t+1)))}.bind(void 0),uA=Wt.curry(lA),T9=void 0,cA=function(t,e){return k1(this,T9),Ww(t)&&t>=e}.bind(void 0),B9=function(t){return k1(this,T9),cA(Number(t),0)}.bind(void 0),hA=void 0,mA=function(t){var e=t.length,a=Jw(t,["length"]);return k1(this,hA),N9(a).every(B9)}.bind(void 0),vA=void 0,bA=function(t,e){return k1(this,vA),[].concat(xt(t),xt(e))}.bind(void 0),gA=Wt.curry(bA),S9=void 0,yA=function(t,e,a,r){return k1(this,S9),r.reduce(function(i,d,n){return k1(this,S9),t(d,n,i)?e(i,d,n):i}.bind(this),a)}.bind(void 0),xA=Wt.curry(yA),E9=void 0,wA=function(t,e,a,r){k1(this,E9);var i=a;return r.every(function(d,n){k1(this,E9);var s=t(d,n,i);return s&&(i=e(i,d,n)),s}.bind(this)),i}.bind(void 0),AA=Wt.curry(wA),_A=void 0,IA=function(t,e,a){return k1(this,_A),[].concat(xt(a.slice(0,t)),xt(a.slice(t+e)))}.bind(void 0),SA=Wt.curry(IA),C9=void 0,EA=function(t,e){return k1(this,C9),[].concat(xt(Array(t))).map(function(){return k1(this,C9),e}.bind(this))}.bind(void 0),CA=Wt.curry(EA),NA=void 0,DA=function(t,e,a){return k1(this,NA),[].concat(xt(a.slice(0,t)),xt(e),xt(a.slice(t+e.length)))}.bind(void 0),MA=Wt.curry(DA),TA=void 0,BA=function(t,e){return k1(this,TA),e<0?t.length-e:e}.bind(void 0),qA=Wt.curry(BA);at.append=eA;at.convertIfNot=aA;at.cycleNext=nA;at.fromObject=oA;at.insert=uA;at.isKey=B9;at.isLastIndex=D9;at.isPossibleFromObject=mA;at.prepend=gA;at.reduceIf=xA;at.reduceWhile=AA;at.remove=SA;at.repeat=CA;at.replace=MA;at.resolveIndex=qA});var O9=T((uV,q9)=>{"use strict";l();q9.exports=function t(e,a){if(e===a)return!0;var r=Array.isArray(e),i=Array.isArray(a),d;if(r&&i){if(e.length!=a.length)return!1;for(d=0;d{l();var _6=ka();_6(_6.S+_6.F*!cr(),"Object",{defineProperty:Qa().f})});var V9=T((bV,U9)=>{l();P9();var OA=ct().Object;U9.exports=function(e,a,r){return OA.defineProperty(e,a,r)}});var F9=T((yV,R9)=>{l();R9.exports={default:V9(),__esModule:!0}});var L9=T(I6=>{"use strict";l();I6.__esModule=!0;var PA=F9(),UA=VA(PA);function VA(t){return t&&t.__esModule?t:{default:t}}I6.default=function(t,e,a){return e in t?(0,UA.default)(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}});var k9=T((_V,Q9)=>{l();var RA=n6(),FA=Ut()("iterator"),LA=zr();Q9.exports=ct().isIterable=function(t){var e=Object(t);return e[FA]!==void 0||"@@iterator"in e||LA.hasOwnProperty(RA(e))}});var H9=T((SV,j9)=>{l();Xd();C0();j9.exports=k9()});var z9=T((CV,K9)=>{l();K9.exports={default:H9(),__esModule:!0}});var G9=T((DV,$9)=>{l();var QA=jr(),kA=s6();$9.exports=ct().getIterator=function(t){var e=kA(t);if(typeof e!="function")throw TypeError(t+" is not iterable!");return QA(e.call(t))}});var W9=T((TV,Y9)=>{l();Xd();C0();Y9.exports=G9()});var X9=T((qV,J9)=>{l();J9.exports={default:W9(),__esModule:!0}});var e7=T(S6=>{"use strict";l();S6.__esModule=!0;var jA=z9(),HA=Z9(jA),KA=X9(),zA=Z9(KA);function Z9(t){return t&&t.__esModule?t:{default:t}}S6.default=function(){function t(e,a){var r=[],i=!0,d=!1,n=void 0;try{for(var s=(0,zA.default)(e),c;!(i=(c=s.next()).done)&&(r.push(c.value),!(a&&r.length===a));i=!0);}catch(v){d=!0,n=v}finally{try{!i&&s.return&&s.return()}finally{if(d)throw n}}return r}return function(e,a){if(Array.isArray(e))return e;if((0,HA.default)(Object(e)))return t(e,a);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var a7=T((VV,t7)=>{l();var $A=$r(),GA=mr(),YA=_i().f;t7.exports=function(t){return function(e){for(var a=GA(e),r=$A(a),i=r.length,d=0,n=[],s;i>d;)YA.call(a,s=r[d++])&&n.push(t?[s,a[s]]:a[s]);return n}}});var i7=T(()=>{l();var r7=ka(),WA=a7()(!0);r7(r7.S,"Object",{entries:function(e){return WA(e)}})});var p7=T((kV,d7)=>{l();i7();d7.exports=ct().Object.entries});var s7=T((HV,n7)=>{l();n7.exports={default:p7(),__esModule:!0}});var S7=T($1=>{"use strict";l();function Xt(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Object.defineProperty($1,"__esModule",{value:!0});var $e=Xt(xn()),Rt=gf(),l7=Xt(V8()),C6=A6(),JA=Xt(y6()),u7=Xt(h6()),XA=Xt(O9()),ZA=Xt(L9()),B0=Xt(b6()),e_=Xt(e7()),t_=Xt(s7()),a_=Xt(w6()),r_=Xt(r6()),i_=void 0,d_=function(t,e){return $e(this,i_),e[t]}.bind(void 0),Jr=Rt.curry(d_),c7=void 0,p_=function(t){return $e(this,c7),t!==null&&(t===void 0?"undefined":l7(t))==="object"}.bind(void 0),h7=function(t){return $e(this,c7),Array.isArray(t)||p_(t)}.bind(void 0),q0=void 0,n_=function(t,e,a){return $e(this,q0),C6.isLastIndex(e,t)?a:m7(t+1,e,a)}.bind(void 0),s_=function(t,e,a){return $e(this,q0),"Expected to find a composite at ["+String(e.join(", "))+"]["+String(t)+"], but instead got: "+(a===void 0?"undefined":l7(a))}.bind(void 0),o_=function(t,e,a){if($e(this,q0),h7(a))return a;throw new Error(s_(t,e,a))}.bind(void 0),m7=function(t,e,a){return $e(this,q0),a===void 0?void 0:n_(t,e,Jr(e[t],o_(t,e,a)))}.bind(void 0),f_=function(t,e){return $e(this,q0),t.length===0?void 0:m7(0,t,e)}.bind(void 0),v7=Rt.curry(f_),l_=void 0,o2=function(t){return $e(this,l_),Array.isArray(t)?[].concat(u7(t.keys())):JA(t)}.bind(void 0),u_=void 0,c_=function(t,e,a){return $e(this,u_),XA(v7(t,a),e)}.bind(void 0),h_=Rt.curry(c_),m_=void 0,v_=function(t,e){return $e(this,m_),Object.prototype.hasOwnProperty.call(e,t)}.bind(void 0),N6=Rt.curry(v_),o7=void 0,b_=function(t,e){$e(this,o7);var a=o2(t);return a.length===o2(e).length&&a.every(function(r){return $e(this,o7),N6(r,e)&&Jr(r,t)===Jr(r,e)}.bind(this))}.bind(void 0),b7=Rt.curry(b_),g_=void 0,g7=function(t){return $e(this,g_),o2(t).length===0}.bind(void 0),E6=void 0,y_=function(t,e){return $e(this,E6),t_(e).reduce(function(a,r){var i=e_(r,2),d=i[0],n=i[1];return $e(this,E6),B0({},a,ZA({},d,t(n,d,e)))}.bind(this),{})}.bind(void 0),x_=function(t,e){return $e(this,E6),Array.isArray(e)?e.map(t):y_(t,e)}.bind(void 0),w_=Rt.curry(x_),y7=void 0,A_=function(t,e){e[t];var a=a_(e,[t]);return $e(this,y7),a}.bind(void 0),__=function(t,e){return $e(this,y7),Array.isArray(e)?C6.remove(t,1,e):A_(t,e)}.bind(void 0),x7=Rt.curry(__),I_=void 0,f2=function(t){return $e(this,I_),Array.isArray(t)?[].concat(u7(t)):B0({},t)}.bind(void 0),Jt=void 0,S_=function(t){$e(this,Jt);var e=f2(t);return{origin:e,current:e,previous:void 0}}.bind(void 0),w7=function(t,e,a){return $e(this,Jt),a[t]=e,Jr(t,a)}.bind(void 0),E_=function(t,e,a,r){return $e(this,Jt),B0({},r,{current:w7(t[e],a,r.current),previous:r.current})}.bind(void 0),C_=function(t,e,a){$e(this,Jt);var r=x7(t[e],a.current);return e===0?B0({},a,{current:r,origin:r}):B0({},a,{previous:w7(t[e-1],r,a.previous)})}.bind(void 0),A7=r_("composite.updateIn.removeAction"),N_=function(t,e,a,r){return $e(this,Jt),a===A7?C_(t,e,r):E_(t,e,a,r)}.bind(void 0),D_=function(t){return $e(this,Jt),typeof t=="number"?[]:{}}.bind(void 0),M_=function(t,e,a){return $e(this,Jt),N6(t,a)?f2(Jr(t,a)):D_(e)}.bind(void 0),T_=function(t,e,a,r){return $e(this,Jt),C6.isLastIndex(t,a)?e(Jr(t[a],r)):M_(t[a],t[a+1],r)}.bind(void 0),B_=function(t,e){return $e(this,Jt),function(a,r,i){return $e(this,Jt),N_(t,i,T_(t,e,i,a.current),a)}.bind(this)}.bind(void 0),q_=function(t,e,a){return $e(this,Jt),t.length===0?a:t.reduce(B_(t,e),S_(a)).origin}.bind(void 0),O0=Rt.curry(q_);O0.remove=A7;var _7=void 0,O_=function(){return $e(this,_7),O0.remove}.bind(void 0),P_=function(t,e){return $e(this,_7),O0(t,O_,e)}.bind(void 0),U_=Rt.curry(P_),V_=void 0,R_=function(t,e,a){$e(this,V_);var r=f2(a);return r[t]=e,r}.bind(void 0),F_=Rt.curry(R_),f7=void 0,L_=function(t,e,a){return $e(this,f7),O0(t,function(){return $e(this,f7),e}.bind(this),a)}.bind(void 0),Q_=Rt.curry(L_),I7=void 0,k_=function(t,e){return $e(this,I7),Boolean(Number(t)^Number(e))}.bind(void 0),j_=function(t,e){return $e(this,I7),t===e||!k_(Array.isArray(t),Array.isArray(e))&&b7(t,e)}.bind(void 0),H_=Rt.curry(j_),K_=void 0,z_=function(t){return $e(this,K_),g7(t)?void 0:t}.bind(void 0);$1.get=Jr,$1.getIn=v7,$1.getKeys=o2,$1.hasIn=h_,$1.hasKey=N6,$1.haveSameProps=b7,$1.is=h7,$1.isEmpty=g7,$1.map=w_,$1.remove=x7,$1.removeIn=U_,$1.set=F_,$1.setIn=Q_,$1.shallowCopy=f2,$1.shallowEqual=H_,$1.toUndefinedIfEmpty=z_,$1.updateIn=O0});var C7=T((GV,E7)=>{l();E7.exports=function(t,e){return{value:e,done:!!t}}});var l2=T((WV,N7)=>{l();N7.exports={}});var u2=T((XV,D7)=>{l();var $_=nn(),G_=xi();D7.exports=function(t){return $_(G_(t))}});var T7=T((eR,M7)=>{l();var Y_=qd(),W_=Math.max,J_=Math.min;M7.exports=function(t,e){return t=Y_(t),t<0?W_(t+e,0):J_(t,e)}});var c2=T((aR,B7)=>{l();var X_=u2(),Z_=Od(),eI=T7();B7.exports=function(t){return function(e,a,r){var i=X_(e),d=Z_(i.length),n=eI(r,d),s;if(t&&a!=a){for(;d>n;)if(s=i[n++],s!=s)return!0}else for(;d>n;n++)if((t||n in i)&&i[n]===a)return t||n||0;return!t&&-1}}});var h2=T((iR,O7)=>{l();var q7=fn()("keys"),tI=Md();O7.exports=function(t){return q7[t]||(q7[t]=tI(t))}});var V7=T((pR,U7)=>{l();var P7=y0(),aI=u2(),rI=c2()(!1),iI=h2()("IE_PROTO");U7.exports=function(t,e){var a=aI(t),r=0,i=[],d;for(d in a)d!=iI&&P7(a,d)&&i.push(d);for(;e.length>r;)P7(a,d=e[r++])&&(~rI(i,d)||i.push(d));return i}});var D6=T((sR,R7)=>{l();R7.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var M6=T((fR,F7)=>{l();var dI=V7(),pI=D6();F7.exports=Object.keys||function(e){return dI(e,pI)}});var Q7=T((uR,L7)=>{l();var nI=g0(),sI=bi(),oI=M6();L7.exports=gi()?Object.defineProperties:function(e,a){sI(e);for(var r=oI(a),i=r.length,d=0,n;i>d;)nI.f(e,n=r[d++],a[n]);return e}});var H7=T((hR,j7)=>{l();var k7=fr().document;j7.exports=k7&&k7.documentElement});var $7=T((vR,z7)=>{l();var fI=bi(),lI=Q7(),K7=D6(),uI=h2()("IE_PROTO"),T6=function(){},B6="prototype",m2=function(){var t=Xp()("iframe"),e=K7.length,a="<",r=">",i;for(t.style.display="none",H7().appendChild(t),t.src="javascript:",i=t.contentWindow.document,i.open(),i.write(a+"script"+r+"document.F=Object"+a+"/script"+r),i.close(),m2=i.F;e--;)delete m2[B6][K7[e]];return m2()};z7.exports=Object.create||function(e,a){var r;return e!==null?(T6[B6]=fI(e),r=new T6,T6[B6]=null,r[uI]=e):r=m2(),a===void 0?r:lI(r,a)}});var q6=T((gR,Y7)=>{l();var cI=g0().f,hI=y0(),G7=Yt()("toStringTag");Y7.exports=function(t,e,a){t&&!hI(t=a?t:t.prototype,G7)&&cI(t,G7,{configurable:!0,value:e})}});var X7=T((xR,J7)=>{"use strict";l();var mI=$7(),vI=Zp(),bI=q6(),W7={};lr()(W7,Yt()("iterator"),function(){return this});J7.exports=function(t,e,a){t.prototype=mI(W7,{next:vI(1,a)}),bI(t,e+" Iterator")}});var tl=T((AR,el)=>{l();var gI=y0(),yI=sn(),Z7=h2()("IE_PROTO"),xI=Object.prototype;el.exports=Object.getPrototypeOf||function(t){return t=yI(t),gI(t,Z7)?t[Z7]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?xI:null}});var sl=T((IR,nl)=>{"use strict";l();var al=on(),O6=Pt(),wI=x0(),rl=lr(),il=l2(),AI=X7(),_I=q6(),II=tl(),P0=Yt()("iterator"),P6=!([].keys&&"next"in[].keys()),SI="@@iterator",dl="keys",v2="values",pl=function(){return this};nl.exports=function(t,e,a,r,i,d,n){AI(a,e,r);var s=function(oe){if(!P6&&oe in S)return S[oe];switch(oe){case dl:return function(){return new a(this,oe)};case v2:return function(){return new a(this,oe)}}return function(){return new a(this,oe)}},c=e+" Iterator",v=i==v2,I=!1,S=t.prototype,O=S[P0]||S[SI]||i&&S[i],R=O||s(i),V=i?v?s("entries"):R:void 0,L=e=="Array"&&S.entries||O,G,J,fe;if(L&&(fe=II(L.call(new t)),fe!==Object.prototype&&fe.next&&(_I(fe,c,!0),!al&&typeof fe[P0]!="function"&&rl(fe,P0,pl))),v&&O&&O.name!==v2&&(I=!0,R=function(){return O.call(this)}),(!al||n)&&(P6||I||!S[P0])&&rl(S,P0,R),il[e]=R,il[c]=pl,i)if(G={values:v?R:s(v2),keys:d?R:s(dl),entries:V},n)for(J in G)J in S||wI(S,J,G[J]);else O6(O6.P+O6.F*(P6||I),e,G);return G}});var ll=T((ER,fl)=>{"use strict";l();var U6=A0(),b2=C7(),ol=l2(),EI=u2();fl.exports=sl()(Array,"Array",function(t,e){this._t=EI(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,a=this._i++;return!t||a>=t.length?(this._t=void 0,b2(1)):e=="keys"?b2(0,a):e=="values"?b2(0,t[a]):b2(0,[a,t[a]])},"values");ol.Arguments=ol.Array;U6("keys");U6("values");U6("entries")});var wl=T(()=>{l();var ul=ll(),CI=M6(),NI=x0(),DI=fr(),cl=lr(),yl=l2(),xl=Yt(),hl=xl("iterator"),ml=xl("toStringTag"),vl=yl.Array,bl={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(V6=CI(bl),g2=0;g2{"use strict";l();var MI=b0();Al.exports=function(t,e){return!!t&&MI(function(){e?t.call(null,function(){},1):t.call(null)})}});var _l=T(()=>{"use strict";l();var F6=Pt(),TI=wi()(0),BI=R0()([].forEach,!0);F6(F6.P+F6.F*!BI,"Array",{forEach:function(e){return TI(this,e,arguments[1])}})});var Sl=T((UR,Il)=>{l();function qI(t){if(Array.isArray(t)){for(var e=0,a=new Array(t.length);e{l();function OI(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}El.exports=OI});var Dl=T((LR,Nl)=>{l();function PI(){throw new TypeError("Invalid attempt to spread non-iterable instance")}Nl.exports=PI});var Tl=T((kR,Ml)=>{l();var UI=Sl(),VI=Cl(),RI=Dl();function FI(t){return UI(t)||VI(t)||RI()}Ml.exports=FI});var Bl=T(()=>{"use strict";l();var L6=Pt(),LI=wi()(1);L6(L6.P+L6.F*!R0()([].map,!0),"Array",{map:function(e){return LI(this,e,arguments[1])}})});var Ol=T(($R,ql)=>{l();var QI=qd(),kI=xi();ql.exports=function(t){return function(e,a){var r=String(kI(e)),i=QI(a),d=r.length,n,s;return i<0||i>=d?t?"":void 0:(n=r.charCodeAt(i),n<55296||n>56319||i+1===d||(s=r.charCodeAt(i+1))<56320||s>57343?t?r.charAt(i):n:t?r.slice(i,i+2):(n-55296<<10)+(s-56320)+65536)}}});var Ul=T((YR,Pl)=>{"use strict";l();var jI=Ol()(!0);Pl.exports=function(t,e,a){return e+(a?jI(t,e).length:1)}});var Rl=T((JR,Vl)=>{l();var Q6=w0(),HI=Yt()("toStringTag"),KI=Q6(function(){return arguments}())=="Arguments",zI=function(t,e){try{return t[e]}catch{}};Vl.exports=function(t){var e,a,r;return t===void 0?"Undefined":t===null?"Null":typeof(a=zI(e=Object(t),HI))=="string"?a:KI?Q6(e):(r=Q6(e))=="Object"&&typeof e.callee=="function"?"Arguments":r}});var Ll=T((ZR,Fl)=>{"use strict";l();var $I=Rl(),GI=RegExp.prototype.exec;Fl.exports=function(t,e){var a=t.exec;if(typeof a=="function"){var r=a.call(t,e);if(typeof r!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return r}if($I(t)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return GI.call(t,e)}});var kl=T((tF,Ql)=>{"use strict";l();var YI=bi();Ql.exports=function(){var t=YI(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}});var H6=T((rF,Hl)=>{"use strict";l();var WI=kl(),y2=RegExp.prototype.exec,JI=String.prototype.replace,jl=y2,x2="lastIndex",k6=function(){var t=/a/,e=/b*/g;return y2.call(t,"a"),y2.call(e,"a"),t[x2]!==0||e[x2]!==0}(),j6=/()??/.exec("")[1]!==void 0,XI=k6||j6;XI&&(jl=function(e){var a=this,r,i,d,n;return j6&&(i=new RegExp("^"+a.source+"$(?!\\s)",WI.call(a))),k6&&(r=a[x2]),d=y2.call(a,e),k6&&d&&(a[x2]=a.global?d.index+d[0].length:r),j6&&d&&d.length>1&&JI.call(d[0],i,function(){for(n=1;n{"use strict";l();var Kl=H6();Pt()({target:"RegExp",proto:!0,forced:Kl!==/./.exec},{exec:Kl})});var Yl=T((sF,Gl)=>{"use strict";l();zl();var ZI=x0(),eS=lr(),K6=b0(),tS=xi(),$l=Yt(),aS=H6(),rS=$l("species"),iS=!K6(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$")!=="7"}),dS=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var a="ab".split(t);return a.length===2&&a[0]==="a"&&a[1]==="b"}();Gl.exports=function(t,e,a){var r=$l(t),i=!K6(function(){var I={};return I[r]=function(){return 7},""[t](I)!=7}),d=i?!K6(function(){var I=!1,S=/a/;return S.exec=function(){return I=!0,null},t==="split"&&(S.constructor={},S.constructor[rS]=function(){return S}),S[r](""),!I}):void 0;if(!i||!d||t==="replace"&&!iS||t==="split"&&!dS){var n=/./[r],s=a(tS,r,""[t],function(S,O,R,V,L){return O.exec===aS?i&&!L?{done:!0,value:n.call(O,R,V)}:{done:!0,value:S.call(R,O,V)}:{done:!1}}),c=s[0],v=s[1];ZI(String.prototype,t,c),eS(RegExp.prototype,r,e==2?function(I,S){return v.call(I,this,S)}:function(I){return v.call(I,this)})}}});var Jl=T(()=>{"use strict";l();var pS=bi(),nS=Od(),sS=Ul(),Wl=Ll();Yl()("match",1,function(t,e,a,r){return[function(d){var n=t(this),s=d?.[e];return s!==void 0?s.call(d,n):new RegExp(d)[e](String(n))},function(i){var d=r(a,i,this);if(d.done)return d.value;var n=pS(i),s=String(this);if(!n.global)return Wl(n,s);var c=n.unicode;n.lastIndex=0;for(var v=[],I=0,S;(S=Wl(n,s))!==null;){var O=String(S[0]);v[I]=O,O===""&&(n.lastIndex=sS(s,nS(n.lastIndex),c)),I++}return I===0?null:v}]})});var Xl=T(()=>{"use strict";l();var z6=Pt(),oS=wi()(3);z6(z6.P+z6.F*!R0()([].some,!0),"Array",{some:function(e){return oS(this,e,arguments[1])}})});var eu=T((vF,Zl)=>{l();Zl.exports=function(t,e,a){var r=a===void 0;switch(e.length){case 0:return r?t():t.call(a);case 1:return r?t(e[0]):t.call(a,e[0]);case 2:return r?t(e[0],e[1]):t.call(a,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(a,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(a,e[0],e[1],e[2],e[3])}return t.apply(a,e)}});var ru=T((gF,au)=>{"use strict";l();var fS=rn(),lS=Qr(),uS=eu(),tu=[].slice,$6={},cS=function(t,e,a){if(!(e in $6)){for(var r=[],i=0;i{l();var iu=Pt();iu(iu.P,"Function",{bind:ru()})});var Y6=T((_F,du)=>{l();function hS(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}du.exports=hS});var su=T(Xr=>{"use strict";l();Object.defineProperty(Xr,"__esModule",{value:!0});function mS(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Bl();Jl();Xl();G6();var ya=mS(Y6()),W6=void 0,vS=function(e){var a=this;return ya(this,W6),e.map(function(r){var i=r.column,d=r.line;return ya(this,a),"".concat(d,":").concat(i)}.bind(this)).join("; ")}.bind(void 0),bS=function(e){var a=e.message,r=e.locations;return ya(this,W6),a+(r?" (".concat(vS(r),")"):"")}.bind(void 0),gS=function(e){return ya(this,W6),e.map(bS).join(` +`)}.bind(void 0),pu=void 0,yS=/^\s*(query|mutation|subscription|\{)/,xS=function(e){return ya(this,pu),e==="{"?"query":e}.bind(void 0),wS=function(e){ya(this,pu);var a=e.match(yS);if(!a)throw new TypeError(`Invalid operation: +`.concat(e));return xS(a[1])}.bind(void 0),nu=void 0,AS=function(e){return ya(this,nu),e.kind==="OperationDefinition"&&e.operation==="subscription"}.bind(void 0),_S=function(e){return ya(this,nu),e.definitions.some(AS)}.bind(void 0),IS=void 0,SS=function(e){var a=e.query,r=e.variables;return ya(this,IS),r?{operation:a,variables:r}:{operation:a}}.bind(void 0),ES=void 0,CS=function(e){var a=e.operation,r=e.variables;return ya(this,ES),r?{query:a,variables:r}:{query:a}}.bind(void 0);Xr.errorsToString=gS;Xr.getOperationType=wS;Xr.hasSubscription=_S;Xr.requestFromCompat=SS;Xr.requestToCompat=CS});var uu=T(p4=>{"use strict";l();Object.defineProperty(p4,"__esModule",{value:!0});var e4=function(){function t(e,a){for(var r=0;r1,n=!1,s=arguments[1],c=s;return new i(function(v){return r.subscribe({next:function(I){var S=!n;if(n=!0,!S||d)try{c=a(c,I)}catch(O){return v.error(O)}else c=I},error:function(I){v.error(I)},complete:function(){if(!n&&!d)return v.error(new TypeError("Cannot reduce an empty sequence"));v.next(c),v.complete()}})})}},{key:"concat",value:function(){for(var a=this,r=arguments.length,i=Array(r),d=0;d=0&&n.splice(S,1),c()}});n.push(I)},error:function(v){d.error(v)},complete:function(){c()}});function c(){s.closed&&n.length===0&&d.complete()}return function(){n.forEach(function(v){return v.unsubscribe()}),s.unsubscribe()}})}},{key:X6,value:function(){return this}}],[{key:"from",value:function(a){var r=typeof this=="function"?this:t;if(a==null)throw new TypeError(a+" is not an object");var i=A2(a,X6);if(i){var d=i.call(a);if(Object(d)!==d)throw new TypeError(d+" is not an object");return DS(d)&&d.constructor===r?d:new r(function(n){return d.subscribe(n)})}if(r4("iterator")&&(i=A2(a,NS),i))return new r(function(n){w2(function(){if(!n.closed){var s=!0,c=!1,v=void 0;try{for(var I=i.call(a)[Symbol.iterator](),S;!(s=(S=I.next()).done);s=!0){var O=S.value;if(n.next(O),n.closed)return}}catch(R){c=!0,v=R}finally{try{!s&&I.return&&I.return()}finally{if(c)throw v}}n.complete()}})});if(Array.isArray(a))return new r(function(n){w2(function(){if(!n.closed){for(var s=0;s{l();cu.exports=uu().Observable});var vu=T(()=>{"use strict";l();var mu=Pt(),qS=c2()(!0);mu(mu.P,"Array",{includes:function(e){return qS(this,e,arguments.length>1?arguments[1]:void 0)}});A0()("includes")});var gu=T((OF,bu)=>{l();var OS=Qr(),PS=w0(),US=Yt()("match");bu.exports=function(t){var e;return OS(t)&&((e=t[US])!==void 0?!!e:PS(t)=="RegExp")}});var xu=T((UF,yu)=>{l();var VS=gu(),RS=xi();yu.exports=function(t,e,a){if(VS(e))throw TypeError("String#"+a+" doesn't accept regex!");return String(RS(t))}});var Au=T((RF,wu)=>{l();var FS=Yt()("match");wu.exports=function(t){var e=/./;try{"/./"[t](e)}catch{try{return e[FS]=!1,!"/./"[t](e)}catch{}}return!0}});var Iu=T(()=>{"use strict";l();var n4=Pt(),LS=xu(),_u="includes";n4(n4.P+n4.F*Au()(_u),"String",{includes:function(e){return!!~LS(this,e,_u).indexOf(e,arguments.length>1?arguments[1]:void 0)}})});var Eu=T((jF,Su)=>{l();function QS(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}Su.exports=QS});var Nu=T((KF,Cu)=>{l();var kS=Eu();function jS(t){for(var e=1;e{l();function HS(t,e){if(t==null)return{};var a={},r=Object.keys(t),i,d;for(d=0;d=0)&&(a[i]=t[i]);return a}Du.exports=HS});var Bu=T((YF,Tu)=>{l();var KS=Mu();function zS(t,e){if(t==null)return{};var a=KS(t,e),r,i;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(t);for(i=0;i=0)&&(!Object.prototype.propertyIsEnumerable.call(t,r)||(a[r]=t[r]))}return a}Tu.exports=zS});var Ou=T(()=>{"use strict";l();var s4=Pt(),$S=c2()(!1),o4=[].indexOf,qu=!!o4&&1/[1].indexOf(1,-0)<0;s4(s4.P+s4.F*(qu||!R0()(o4)),"Array",{indexOf:function(e){return qu?o4.apply(this,arguments)||0:$S(this,e,arguments[1])}})});var cc=T($a=>{"use strict";l();Object.defineProperty($a,"__esModule",{value:!0});function Q0(t){return t&&typeof t=="object"&&"default"in t?t.default:t}lf();cf();vf();var f4=S7();Bp();wl();_l();var L0=Q0(Tl()),l4=su(),GS=Q0(hu());vu();Iu();var Zt=Q0(Nu()),_2=Q0(Bu());Ou();var I2=A6();G6();var Y=Q0(Y6()),YS=void 0,u4=function(e){var a=e.activeObservers,r=e.canceledObservers,i=_2(e,["activeObservers","canceledObservers"]);return Y(this,YS),Zt({},i,{isActive:!1,activeObservers:[],canceledObservers:L0(a).concat(L0(r))})}.bind(void 0),c4=void 0,WS=function(e,a){var r=this;return Y(this,c4),function(i){return Y(this,r),i[e]&&i[e](a)}.bind(this)}.bind(void 0),JS=function(e){var a=e.name;return Y(this,c4),"on".concat(a)}.bind(void 0),h4=function(e,a){return Y(this,c4),e.forEach(WS(JS(a),a.payload))}.bind(void 0),XS=void 0,Ru=function(e,a){return Y(this,XS),h4(e.canceledObservers,a),e}.bind(void 0),k0={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},j0=void 0,ZS=function(e){return Y(this,j0),{payload:e,name:k0.start}}.bind(void 0),eE=function(e){return Y(this,j0),{payload:e,name:k0.result}}.bind(void 0),S2=function(e){return Y(this,j0),{payload:e,name:k0.error}}.bind(void 0),tE=function(){return Y(this,j0),{name:k0.cancel,payload:void 0}}.bind(void 0),aE=function(e){return Y(this,j0),{payload:e,name:k0.abort}}.bind(void 0),Fu=void 0,rE=function(e){return Y(this,Fu),Zt({},e,{canceledObservers:[]})}.bind(void 0),H0=function(e){return Y(this,Fu),e.canceledObservers.length>0?rE(Ru(e,tE())):e}.bind(void 0),iE=void 0,Lu=function(e,a,r){return Y(this,iE),e.findIndex(f4.hasIn([a],r))}.bind(void 0),dE=void 0,m4=function(e){var a=this;return Y(this,dE),function(r){return Y(this,a),I2.replace(Lu(r,"request",e.request),[e],r)}.bind(this)}.bind(void 0),pE=void 0,K0=function(e){var a=this;return Y(this,pE),function(r){return Y(this,a),I2.remove(Lu(r,"request",e.request),1,r)}.bind(this)}.bind(void 0),nE=void 0,Ha=function(e,a){return Y(this,nE),e.notifiers=a(e.notifiers),e}.bind(void 0),sE=void 0,Ka=function(e,a){return Y(this,sE),Ha(e,m4(a)),a}.bind(void 0),ea={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},Qu=void 0,oE=function(e){var a=e.activeObservers,r=e.canceledObservers;return Y(this,Qu),L0(a).concat(L0(r))}.bind(void 0),ku=function(e,a){return Y(this,Qu),h4(oE(e),a),e}.bind(void 0),fE=void 0,v4=function(e,a,r){return Y(this,fE),Ha(e,K0(ku(a,aE(r))))}.bind(void 0),lE=void 0,E2=function(e,a,r){return Y(this,lE),e.find(f4.hasIn([a],r))}.bind(void 0),uE=void 0,C2=function(e,a){return Y(this,uE),h4(e.activeObservers,a),e}.bind(void 0),cE=void 0,ju=function(e,a){return Y(this,cE),C2(e,eE(a))}.bind(void 0),hE=void 0,Hu=function(e){return Y(this,hE),C2(e,ZS(e))}.bind(void 0),mE=void 0,Ku=function(e){return Y(this,mE),H0(Zt({},e,{isActive:!0,requestStatus:ea.pending,subscriptionId:void 0}))}.bind(void 0),vE=void 0,zu=function(e,a){return Y(this,vE),e.receive("ok",a.onSucceed).receive("error",a.onError).receive("timeout",a.onTimeout)}.bind(void 0),b4=void 0,bE=function(e,a){var r=this;return Y(this,b4),function(i){var d=this;return Y(this,r),function(){Y(this,d);var n=E2(e.notifiers,"request",a);if(n){for(var s=arguments.length,c=new Array(s),v=0;v0}.bind(void 0),XE=function(e){var a=this;return Y(this,xa),function(){Y(this,a),JE(e)&&ic(e)}.bind(this)}.bind(void 0),ZE="__absinthe__:control",eC=function(e){Y(this,xa);var a={phoenixSocket:e,channel:e.channel(ZE),channelJoinCreated:!1,notifiers:[]};return e.onOpen(XE(a)),e.onClose(WE(a)),e.onMessage(zE(a)),a}.bind(void 0),tC=void 0,aC=function(e,a){var r=e.activeObservers,i=_2(e,["activeObservers"]);return Y(this,tC),Zt({},i,{activeObservers:L0(r).concat([a]),isActive:!0})}.bind(void 0),rC=void 0,nc=function(e,a,r){return Y(this,rC),Ka(e,aC(a,r))}.bind(void 0),sc=void 0,iC=function(e,a){return Y(this,sc),{operationType:a,request:e,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:ea.pending,subscriptionId:void 0}}.bind(void 0),dC=function(e){return Y(this,sc),iC(e,l4.getOperationType(e.operation))}.bind(void 0),pC=void 0,nC=function(e){return Y(this,pC),e.isActive?e:Zt({},e,{isActive:!0})}.bind(void 0),ei=void 0,sC=function(e){Y(this,ei),e.phoenixSocket.isConnected()?ic(e):e.phoenixSocket.connect()}.bind(void 0),oC=function(e,a){Y(this,ei);var r=dC(a);return Ha(e,I2.append([r])),e.channelJoinCreated?rc(e,r):sC(e),r}.bind(void 0),Vu=function(e,a){return Y(this,ei),Ka(e,nC(a))}.bind(void 0),fC=function(e,a){return Y(this,ei),a.requestStatus===ea.sending?Vu(e,H0(a)):Vu(e,a)}.bind(void 0),lC=function(e,a){return Y(this,ei),a.isActive?a:fC(e,a)}.bind(void 0),uC=function(e,a){Y(this,ei);var r=E2(e.notifiers,"request",a);return r&&lC(e,r)}.bind(void 0),cC=function(e,a){return Y(this,ei),uC(e,a)||oC(e,a)}.bind(void 0),M2=void 0,hC=function(e,a,r,i){var d=this,n=a.request;return Y(this,M2),function(){Y(this,d);var s=E2(e.notifiers,"request",n);i(e,s,s?r:void 0)}.bind(this)}.bind(void 0),mC=function(e,a){var r=this,i=e.operationType;return Y(this,M2),function(d){Y(this,r),a.next(d),i!=="subscription"&&a.complete()}.bind(this)}.bind(void 0),vC=function(e,a,r){return Y(this,M2),Zt({},a,{onAbort:r.error.bind(r),onResult:mC(e,r)})}.bind(void 0),bC=function(e,a){var r=this,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},d=i.unsubscribe,n=_2(i,["unsubscribe"]);return Y(this,M2),new GS(function(s){Y(this,r);var c=vC(a,n,s);return nc(e,a,c),d&&hC(e,a,c,d)}.bind(this))}.bind(void 0),oc=void 0,gC=function(e,a){return Y(this,oc),I2.remove(e.indexOf(a),1,e)}.bind(void 0),yC=function(e,a){var r=e.activeObservers,i=_2(e,["activeObservers"]);return Y(this,oc),Zt({},i,{activeObservers:gC(r,a)})}.bind(void 0),fc=void 0,xC=function(e,a){if(Y(this,fc),e.activeObservers.includes(a))return e;throw new Error("Observer is not attached to notifier")}.bind(void 0),lc=function(e,a,r){return Y(this,fc),Ha(e,m4(yC(xC(a,r),r)))}.bind(void 0),uc=void 0,wC=function(e,a,r){return Y(this,uc),a.activeObservers.length===1?ac(e,a):lc(e,a,r)}.bind(void 0),AC=function(e,a,r){return Y(this,uc),a.isActive?wC(e,a,r):e}.bind(void 0);$a.cancel=ac;$a.create=eC;$a.observe=nc;$a.send=cC;$a.toObservable=bC;$a.unobserve=lc;$a.unobserveOrCancel=AC});var g4=T((aL,$0)=>{l();var{Socket:_C}=Bp(),IC=vo(),z0=cc();$0.exports.absintheCreate=function(t){let e=new _C(t,{transport:IC});return z0.create(e)};$0.exports.absintheSend=function(t,e){return z0.send(t,{operation:e})};$0.exports.absintheObserve=function(t,e,a){return new Promise((r,i)=>{z0.observe(t,e,{onStart:function(){r(e)},onError:function(d){z0.cancel(t,e),i(d)},onResult:function(d){a(d)}})})};$0.exports.absintheCancel=function(t,e){z0.cancel(t,e)}});var Ec=T((nL,NC)=>{NC.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var Aa=T((Cc,x4)=>{l();(function(t,e){"use strict";function a(w,p){if(!w)throw new Error(p||"Assertion failed")}function r(w,p){w.super_=p;var f=function(){};f.prototype=p.prototype,w.prototype=new f,w.prototype.constructor=w}function i(w,p,f){if(i.isBN(w))return w;this.negative=0,this.words=null,this.length=0,this.red=null,w!==null&&((p==="le"||p==="be")&&(f=p,p=10),this._init(w||0,p||10,f||"be"))}typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=Ge("buffer").Buffer}catch{}i.isBN=function(p){return p instanceof i?!0:p!==null&&typeof p=="object"&&p.constructor.wordSize===i.wordSize&&Array.isArray(p.words)},i.max=function(p,f){return p.cmp(f)>0?p:f},i.min=function(p,f){return p.cmp(f)<0?p:f},i.prototype._init=function(p,f,m){if(typeof p=="number")return this._initNumber(p,f,m);if(typeof p=="object")return this._initArray(p,f,m);f==="hex"&&(f=16),a(f===(f|0)&&f>=2&&f<=36),p=p.toString().replace(/\s+/g,"");var b=0;p[0]==="-"&&(b++,this.negative=1),b=0;b-=3)q=p[b]|p[b-1]<<8|p[b-2]<<16,this.words[E]|=q<>>26-U&67108863,U+=24,U>=26&&(U-=26,E++);else if(m==="le")for(b=0,E=0;b>>26-U&67108863,U+=24,U>=26&&(U-=26,E++);return this.strip()};function n(w,p){var f=w.charCodeAt(p);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function s(w,p,f){var m=n(w,f);return f-1>=p&&(m|=n(w,f-1)<<4),m}i.prototype._parseHex=function(p,f,m){this.length=Math.ceil((p.length-f)/6),this.words=new Array(this.length);for(var b=0;b=f;b-=2)U=s(p,f,b)<=18?(E-=18,q+=1,this.words[q]|=U>>>26):E+=8;else{var M=p.length-f;for(b=M%2===0?f+1:f;b=18?(E-=18,q+=1,this.words[q]|=U>>>26):E+=8}this.strip()};function c(w,p,f,m){for(var b=0,E=Math.min(w.length,f),q=p;q=49?b+=U-49+10:U>=17?b+=U-17+10:b+=U}return b}i.prototype._parseBase=function(p,f,m){this.words=[0],this.length=1;for(var b=0,E=1;E<=67108863;E*=f)b++;b--,E=E/f|0;for(var q=p.length-m,U=q%b,M=Math.min(q,q-U)+m,u=0,D=m;D1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var v=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(p,f){p=p||10,f=f|0||1;var m;if(p===16||p==="hex"){m="";for(var b=0,E=0,q=0;q>>24-b&16777215,E!==0||q!==this.length-1?m=v[6-M.length]+M+m:m=M+m,b+=2,b>=26&&(b-=26,q--)}for(E!==0&&(m=E.toString(16)+m);m.length%f!==0;)m="0"+m;return this.negative!==0&&(m="-"+m),m}if(p===(p|0)&&p>=2&&p<=36){var u=I[p],D=S[p];m="";var se=this.clone();for(se.negative=0;!se.isZero();){var X=se.modn(D).toString(p);se=se.idivn(D),se.isZero()?m=X+m:m=v[u-X.length]+X+m}for(this.isZero()&&(m="0"+m);m.length%f!==0;)m="0"+m;return this.negative!==0&&(m="-"+m),m}a(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var p=this.words[0];return this.length===2?p+=this.words[1]*67108864:this.length===3&&this.words[2]===1?p+=4503599627370496+this.words[1]*67108864:this.length>2&&a(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-p:p},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(p,f){return a(typeof d<"u"),this.toArrayLike(d,p,f)},i.prototype.toArray=function(p,f){return this.toArrayLike(Array,p,f)},i.prototype.toArrayLike=function(p,f,m){var b=this.byteLength(),E=m||Math.max(1,b);a(b<=E,"byte array longer than desired length"),a(E>0,"Requested array length <= 0"),this.strip();var q=f==="le",U=new p(E),M,u,D=this.clone();if(q){for(u=0;!D.isZero();u++)M=D.andln(255),D.iushrn(8),U[u]=M;for(;u=4096&&(m+=13,f>>>=13),f>=64&&(m+=7,f>>>=7),f>=8&&(m+=4,f>>>=4),f>=2&&(m+=2,f>>>=2),m+f},i.prototype._zeroBits=function(p){if(p===0)return 26;var f=p,m=0;return(f&8191)===0&&(m+=13,f>>>=13),(f&127)===0&&(m+=7,f>>>=7),(f&15)===0&&(m+=4,f>>>=4),(f&3)===0&&(m+=2,f>>>=2),(f&1)===0&&m++,m},i.prototype.bitLength=function(){var p=this.words[this.length-1],f=this._countBits(p);return(this.length-1)*26+f};function O(w){for(var p=new Array(w.bitLength()),f=0;f>>b}return p}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var p=0,f=0;fp.length?this.clone().ior(p):p.clone().ior(this)},i.prototype.uor=function(p){return this.length>p.length?this.clone().iuor(p):p.clone().iuor(this)},i.prototype.iuand=function(p){var f;this.length>p.length?f=p:f=this;for(var m=0;mp.length?this.clone().iand(p):p.clone().iand(this)},i.prototype.uand=function(p){return this.length>p.length?this.clone().iuand(p):p.clone().iuand(this)},i.prototype.iuxor=function(p){var f,m;this.length>p.length?(f=this,m=p):(f=p,m=this);for(var b=0;bp.length?this.clone().ixor(p):p.clone().ixor(this)},i.prototype.uxor=function(p){return this.length>p.length?this.clone().iuxor(p):p.clone().iuxor(this)},i.prototype.inotn=function(p){a(typeof p=="number"&&p>=0);var f=Math.ceil(p/26)|0,m=p%26;this._expand(f),m>0&&f--;for(var b=0;b0&&(this.words[b]=~this.words[b]&67108863>>26-m),this.strip()},i.prototype.notn=function(p){return this.clone().inotn(p)},i.prototype.setn=function(p,f){a(typeof p=="number"&&p>=0);var m=p/26|0,b=p%26;return this._expand(m+1),f?this.words[m]=this.words[m]|1<p.length?(m=this,b=p):(m=p,b=this);for(var E=0,q=0;q>>26;for(;E!==0&&q>>26;if(this.length=m.length,E!==0)this.words[this.length]=E,this.length++;else if(m!==this)for(;qp.length?this.clone().iadd(p):p.clone().iadd(this)},i.prototype.isub=function(p){if(p.negative!==0){p.negative=0;var f=this.iadd(p);return p.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(p),this.negative=1,this._normSign();var m=this.cmp(p);if(m===0)return this.negative=0,this.length=1,this.words[0]=0,this;var b,E;m>0?(b=this,E=p):(b=p,E=this);for(var q=0,U=0;U>26,this.words[U]=f&67108863;for(;q!==0&&U>26,this.words[U]=f&67108863;if(q===0&&U>>26,se=M&67108863,X=Math.min(u,p.length-1),ne=Math.max(0,u-w.length+1);ne<=X;ne++){var Z=u-ne|0;b=w.words[Z]|0,E=p.words[ne]|0,q=b*E+se,D+=q/67108864|0,se=q&67108863}f.words[u]=se|0,M=D|0}return M!==0?f.words[u]=M|0:f.length--,f.strip()}var V=function(p,f,m){var b=p.words,E=f.words,q=m.words,U=0,M,u,D,se=b[0]|0,X=se&8191,ne=se>>>13,Z=b[1]|0,g=Z&8191,Q=Z>>>13,$=b[2]|0,k=$&8191,ee=$>>>13,ce=b[3]|0,ie=ce&8191,de=ce>>>13,Re=b[4]|0,le=Re&8191,Ee=Re>>>13,sa=b[5]|0,w1=sa&8191,e1=sa>>>13,Bt=b[6]|0,A1=Bt&8191,u1=Bt>>>13,jt=b[7]|0,o1=jt&8191,c1=jt>>>13,qt=b[8]|0,h1=qt&8191,m1=qt>>>13,oa=b[9]|0,E1=oa&8191,v1=oa>>>13,Ht=E[0]|0,f1=Ht&8191,p1=Ht>>>13,vt=E[1]|0,n1=vt&8191,l1=vt>>>13,_t=E[2]|0,s1=_t&8191,b1=_t>>>13,fa=E[3]|0,C1=fa&8191,N1=fa>>>13,et=E[4]|0,t1=et&8191,i1=et>>>13,Kt=E[5]|0,g1=Kt&8191,_1=Kt>>>13,Ta=E[6]|0,Ke=Ta&8191,I1=Ta>>>13,h=E[7]|0,_=h&8191,A=h>>>13,o=E[8]|0,N=o&8191,P=o>>>13,F=E[9]|0,K=F&8191,W=F>>>13;m.negative=p.negative^f.negative,m.length=19,M=Math.imul(X,f1),u=Math.imul(X,p1),u=u+Math.imul(ne,f1)|0,D=Math.imul(ne,p1);var ge=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(ge>>>26)|0,ge&=67108863,M=Math.imul(g,f1),u=Math.imul(g,p1),u=u+Math.imul(Q,f1)|0,D=Math.imul(Q,p1),M=M+Math.imul(X,n1)|0,u=u+Math.imul(X,l1)|0,u=u+Math.imul(ne,n1)|0,D=D+Math.imul(ne,l1)|0;var ue=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(ue>>>26)|0,ue&=67108863,M=Math.imul(k,f1),u=Math.imul(k,p1),u=u+Math.imul(ee,f1)|0,D=Math.imul(ee,p1),M=M+Math.imul(g,n1)|0,u=u+Math.imul(g,l1)|0,u=u+Math.imul(Q,n1)|0,D=D+Math.imul(Q,l1)|0,M=M+Math.imul(X,s1)|0,u=u+Math.imul(X,b1)|0,u=u+Math.imul(ne,s1)|0,D=D+Math.imul(ne,b1)|0;var Fe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,M=Math.imul(ie,f1),u=Math.imul(ie,p1),u=u+Math.imul(de,f1)|0,D=Math.imul(de,p1),M=M+Math.imul(k,n1)|0,u=u+Math.imul(k,l1)|0,u=u+Math.imul(ee,n1)|0,D=D+Math.imul(ee,l1)|0,M=M+Math.imul(g,s1)|0,u=u+Math.imul(g,b1)|0,u=u+Math.imul(Q,s1)|0,D=D+Math.imul(Q,b1)|0,M=M+Math.imul(X,C1)|0,u=u+Math.imul(X,N1)|0,u=u+Math.imul(ne,C1)|0,D=D+Math.imul(ne,N1)|0;var me=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(me>>>26)|0,me&=67108863,M=Math.imul(le,f1),u=Math.imul(le,p1),u=u+Math.imul(Ee,f1)|0,D=Math.imul(Ee,p1),M=M+Math.imul(ie,n1)|0,u=u+Math.imul(ie,l1)|0,u=u+Math.imul(de,n1)|0,D=D+Math.imul(de,l1)|0,M=M+Math.imul(k,s1)|0,u=u+Math.imul(k,b1)|0,u=u+Math.imul(ee,s1)|0,D=D+Math.imul(ee,b1)|0,M=M+Math.imul(g,C1)|0,u=u+Math.imul(g,N1)|0,u=u+Math.imul(Q,C1)|0,D=D+Math.imul(Q,N1)|0,M=M+Math.imul(X,t1)|0,u=u+Math.imul(X,i1)|0,u=u+Math.imul(ne,t1)|0,D=D+Math.imul(ne,i1)|0;var De=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(De>>>26)|0,De&=67108863,M=Math.imul(w1,f1),u=Math.imul(w1,p1),u=u+Math.imul(e1,f1)|0,D=Math.imul(e1,p1),M=M+Math.imul(le,n1)|0,u=u+Math.imul(le,l1)|0,u=u+Math.imul(Ee,n1)|0,D=D+Math.imul(Ee,l1)|0,M=M+Math.imul(ie,s1)|0,u=u+Math.imul(ie,b1)|0,u=u+Math.imul(de,s1)|0,D=D+Math.imul(de,b1)|0,M=M+Math.imul(k,C1)|0,u=u+Math.imul(k,N1)|0,u=u+Math.imul(ee,C1)|0,D=D+Math.imul(ee,N1)|0,M=M+Math.imul(g,t1)|0,u=u+Math.imul(g,i1)|0,u=u+Math.imul(Q,t1)|0,D=D+Math.imul(Q,i1)|0,M=M+Math.imul(X,g1)|0,u=u+Math.imul(X,_1)|0,u=u+Math.imul(ne,g1)|0,D=D+Math.imul(ne,_1)|0;var Me=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,M=Math.imul(A1,f1),u=Math.imul(A1,p1),u=u+Math.imul(u1,f1)|0,D=Math.imul(u1,p1),M=M+Math.imul(w1,n1)|0,u=u+Math.imul(w1,l1)|0,u=u+Math.imul(e1,n1)|0,D=D+Math.imul(e1,l1)|0,M=M+Math.imul(le,s1)|0,u=u+Math.imul(le,b1)|0,u=u+Math.imul(Ee,s1)|0,D=D+Math.imul(Ee,b1)|0,M=M+Math.imul(ie,C1)|0,u=u+Math.imul(ie,N1)|0,u=u+Math.imul(de,C1)|0,D=D+Math.imul(de,N1)|0,M=M+Math.imul(k,t1)|0,u=u+Math.imul(k,i1)|0,u=u+Math.imul(ee,t1)|0,D=D+Math.imul(ee,i1)|0,M=M+Math.imul(g,g1)|0,u=u+Math.imul(g,_1)|0,u=u+Math.imul(Q,g1)|0,D=D+Math.imul(Q,_1)|0,M=M+Math.imul(X,Ke)|0,u=u+Math.imul(X,I1)|0,u=u+Math.imul(ne,Ke)|0,D=D+Math.imul(ne,I1)|0;var qe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(qe>>>26)|0,qe&=67108863,M=Math.imul(o1,f1),u=Math.imul(o1,p1),u=u+Math.imul(c1,f1)|0,D=Math.imul(c1,p1),M=M+Math.imul(A1,n1)|0,u=u+Math.imul(A1,l1)|0,u=u+Math.imul(u1,n1)|0,D=D+Math.imul(u1,l1)|0,M=M+Math.imul(w1,s1)|0,u=u+Math.imul(w1,b1)|0,u=u+Math.imul(e1,s1)|0,D=D+Math.imul(e1,b1)|0,M=M+Math.imul(le,C1)|0,u=u+Math.imul(le,N1)|0,u=u+Math.imul(Ee,C1)|0,D=D+Math.imul(Ee,N1)|0,M=M+Math.imul(ie,t1)|0,u=u+Math.imul(ie,i1)|0,u=u+Math.imul(de,t1)|0,D=D+Math.imul(de,i1)|0,M=M+Math.imul(k,g1)|0,u=u+Math.imul(k,_1)|0,u=u+Math.imul(ee,g1)|0,D=D+Math.imul(ee,_1)|0,M=M+Math.imul(g,Ke)|0,u=u+Math.imul(g,I1)|0,u=u+Math.imul(Q,Ke)|0,D=D+Math.imul(Q,I1)|0,M=M+Math.imul(X,_)|0,u=u+Math.imul(X,A)|0,u=u+Math.imul(ne,_)|0,D=D+Math.imul(ne,A)|0;var Te=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Te>>>26)|0,Te&=67108863,M=Math.imul(h1,f1),u=Math.imul(h1,p1),u=u+Math.imul(m1,f1)|0,D=Math.imul(m1,p1),M=M+Math.imul(o1,n1)|0,u=u+Math.imul(o1,l1)|0,u=u+Math.imul(c1,n1)|0,D=D+Math.imul(c1,l1)|0,M=M+Math.imul(A1,s1)|0,u=u+Math.imul(A1,b1)|0,u=u+Math.imul(u1,s1)|0,D=D+Math.imul(u1,b1)|0,M=M+Math.imul(w1,C1)|0,u=u+Math.imul(w1,N1)|0,u=u+Math.imul(e1,C1)|0,D=D+Math.imul(e1,N1)|0,M=M+Math.imul(le,t1)|0,u=u+Math.imul(le,i1)|0,u=u+Math.imul(Ee,t1)|0,D=D+Math.imul(Ee,i1)|0,M=M+Math.imul(ie,g1)|0,u=u+Math.imul(ie,_1)|0,u=u+Math.imul(de,g1)|0,D=D+Math.imul(de,_1)|0,M=M+Math.imul(k,Ke)|0,u=u+Math.imul(k,I1)|0,u=u+Math.imul(ee,Ke)|0,D=D+Math.imul(ee,I1)|0,M=M+Math.imul(g,_)|0,u=u+Math.imul(g,A)|0,u=u+Math.imul(Q,_)|0,D=D+Math.imul(Q,A)|0,M=M+Math.imul(X,N)|0,u=u+Math.imul(X,P)|0,u=u+Math.imul(ne,N)|0,D=D+Math.imul(ne,P)|0;var Oe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,M=Math.imul(E1,f1),u=Math.imul(E1,p1),u=u+Math.imul(v1,f1)|0,D=Math.imul(v1,p1),M=M+Math.imul(h1,n1)|0,u=u+Math.imul(h1,l1)|0,u=u+Math.imul(m1,n1)|0,D=D+Math.imul(m1,l1)|0,M=M+Math.imul(o1,s1)|0,u=u+Math.imul(o1,b1)|0,u=u+Math.imul(c1,s1)|0,D=D+Math.imul(c1,b1)|0,M=M+Math.imul(A1,C1)|0,u=u+Math.imul(A1,N1)|0,u=u+Math.imul(u1,C1)|0,D=D+Math.imul(u1,N1)|0,M=M+Math.imul(w1,t1)|0,u=u+Math.imul(w1,i1)|0,u=u+Math.imul(e1,t1)|0,D=D+Math.imul(e1,i1)|0,M=M+Math.imul(le,g1)|0,u=u+Math.imul(le,_1)|0,u=u+Math.imul(Ee,g1)|0,D=D+Math.imul(Ee,_1)|0,M=M+Math.imul(ie,Ke)|0,u=u+Math.imul(ie,I1)|0,u=u+Math.imul(de,Ke)|0,D=D+Math.imul(de,I1)|0,M=M+Math.imul(k,_)|0,u=u+Math.imul(k,A)|0,u=u+Math.imul(ee,_)|0,D=D+Math.imul(ee,A)|0,M=M+Math.imul(g,N)|0,u=u+Math.imul(g,P)|0,u=u+Math.imul(Q,N)|0,D=D+Math.imul(Q,P)|0,M=M+Math.imul(X,K)|0,u=u+Math.imul(X,W)|0,u=u+Math.imul(ne,K)|0,D=D+Math.imul(ne,W)|0;var Ue=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Ue>>>26)|0,Ue&=67108863,M=Math.imul(E1,n1),u=Math.imul(E1,l1),u=u+Math.imul(v1,n1)|0,D=Math.imul(v1,l1),M=M+Math.imul(h1,s1)|0,u=u+Math.imul(h1,b1)|0,u=u+Math.imul(m1,s1)|0,D=D+Math.imul(m1,b1)|0,M=M+Math.imul(o1,C1)|0,u=u+Math.imul(o1,N1)|0,u=u+Math.imul(c1,C1)|0,D=D+Math.imul(c1,N1)|0,M=M+Math.imul(A1,t1)|0,u=u+Math.imul(A1,i1)|0,u=u+Math.imul(u1,t1)|0,D=D+Math.imul(u1,i1)|0,M=M+Math.imul(w1,g1)|0,u=u+Math.imul(w1,_1)|0,u=u+Math.imul(e1,g1)|0,D=D+Math.imul(e1,_1)|0,M=M+Math.imul(le,Ke)|0,u=u+Math.imul(le,I1)|0,u=u+Math.imul(Ee,Ke)|0,D=D+Math.imul(Ee,I1)|0,M=M+Math.imul(ie,_)|0,u=u+Math.imul(ie,A)|0,u=u+Math.imul(de,_)|0,D=D+Math.imul(de,A)|0,M=M+Math.imul(k,N)|0,u=u+Math.imul(k,P)|0,u=u+Math.imul(ee,N)|0,D=D+Math.imul(ee,P)|0,M=M+Math.imul(g,K)|0,u=u+Math.imul(g,W)|0,u=u+Math.imul(Q,K)|0,D=D+Math.imul(Q,W)|0;var Pe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,M=Math.imul(E1,s1),u=Math.imul(E1,b1),u=u+Math.imul(v1,s1)|0,D=Math.imul(v1,b1),M=M+Math.imul(h1,C1)|0,u=u+Math.imul(h1,N1)|0,u=u+Math.imul(m1,C1)|0,D=D+Math.imul(m1,N1)|0,M=M+Math.imul(o1,t1)|0,u=u+Math.imul(o1,i1)|0,u=u+Math.imul(c1,t1)|0,D=D+Math.imul(c1,i1)|0,M=M+Math.imul(A1,g1)|0,u=u+Math.imul(A1,_1)|0,u=u+Math.imul(u1,g1)|0,D=D+Math.imul(u1,_1)|0,M=M+Math.imul(w1,Ke)|0,u=u+Math.imul(w1,I1)|0,u=u+Math.imul(e1,Ke)|0,D=D+Math.imul(e1,I1)|0,M=M+Math.imul(le,_)|0,u=u+Math.imul(le,A)|0,u=u+Math.imul(Ee,_)|0,D=D+Math.imul(Ee,A)|0,M=M+Math.imul(ie,N)|0,u=u+Math.imul(ie,P)|0,u=u+Math.imul(de,N)|0,D=D+Math.imul(de,P)|0,M=M+Math.imul(k,K)|0,u=u+Math.imul(k,W)|0,u=u+Math.imul(ee,K)|0,D=D+Math.imul(ee,W)|0;var xe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(xe>>>26)|0,xe&=67108863,M=Math.imul(E1,C1),u=Math.imul(E1,N1),u=u+Math.imul(v1,C1)|0,D=Math.imul(v1,N1),M=M+Math.imul(h1,t1)|0,u=u+Math.imul(h1,i1)|0,u=u+Math.imul(m1,t1)|0,D=D+Math.imul(m1,i1)|0,M=M+Math.imul(o1,g1)|0,u=u+Math.imul(o1,_1)|0,u=u+Math.imul(c1,g1)|0,D=D+Math.imul(c1,_1)|0,M=M+Math.imul(A1,Ke)|0,u=u+Math.imul(A1,I1)|0,u=u+Math.imul(u1,Ke)|0,D=D+Math.imul(u1,I1)|0,M=M+Math.imul(w1,_)|0,u=u+Math.imul(w1,A)|0,u=u+Math.imul(e1,_)|0,D=D+Math.imul(e1,A)|0,M=M+Math.imul(le,N)|0,u=u+Math.imul(le,P)|0,u=u+Math.imul(Ee,N)|0,D=D+Math.imul(Ee,P)|0,M=M+Math.imul(ie,K)|0,u=u+Math.imul(ie,W)|0,u=u+Math.imul(de,K)|0,D=D+Math.imul(de,W)|0;var Ce=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,M=Math.imul(E1,t1),u=Math.imul(E1,i1),u=u+Math.imul(v1,t1)|0,D=Math.imul(v1,i1),M=M+Math.imul(h1,g1)|0,u=u+Math.imul(h1,_1)|0,u=u+Math.imul(m1,g1)|0,D=D+Math.imul(m1,_1)|0,M=M+Math.imul(o1,Ke)|0,u=u+Math.imul(o1,I1)|0,u=u+Math.imul(c1,Ke)|0,D=D+Math.imul(c1,I1)|0,M=M+Math.imul(A1,_)|0,u=u+Math.imul(A1,A)|0,u=u+Math.imul(u1,_)|0,D=D+Math.imul(u1,A)|0,M=M+Math.imul(w1,N)|0,u=u+Math.imul(w1,P)|0,u=u+Math.imul(e1,N)|0,D=D+Math.imul(e1,P)|0,M=M+Math.imul(le,K)|0,u=u+Math.imul(le,W)|0,u=u+Math.imul(Ee,K)|0,D=D+Math.imul(Ee,W)|0;var ve=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(ve>>>26)|0,ve&=67108863,M=Math.imul(E1,g1),u=Math.imul(E1,_1),u=u+Math.imul(v1,g1)|0,D=Math.imul(v1,_1),M=M+Math.imul(h1,Ke)|0,u=u+Math.imul(h1,I1)|0,u=u+Math.imul(m1,Ke)|0,D=D+Math.imul(m1,I1)|0,M=M+Math.imul(o1,_)|0,u=u+Math.imul(o1,A)|0,u=u+Math.imul(c1,_)|0,D=D+Math.imul(c1,A)|0,M=M+Math.imul(A1,N)|0,u=u+Math.imul(A1,P)|0,u=u+Math.imul(u1,N)|0,D=D+Math.imul(u1,P)|0,M=M+Math.imul(w1,K)|0,u=u+Math.imul(w1,W)|0,u=u+Math.imul(e1,K)|0,D=D+Math.imul(e1,W)|0;var Ae=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,M=Math.imul(E1,Ke),u=Math.imul(E1,I1),u=u+Math.imul(v1,Ke)|0,D=Math.imul(v1,I1),M=M+Math.imul(h1,_)|0,u=u+Math.imul(h1,A)|0,u=u+Math.imul(m1,_)|0,D=D+Math.imul(m1,A)|0,M=M+Math.imul(o1,N)|0,u=u+Math.imul(o1,P)|0,u=u+Math.imul(c1,N)|0,D=D+Math.imul(c1,P)|0,M=M+Math.imul(A1,K)|0,u=u+Math.imul(A1,W)|0,u=u+Math.imul(u1,K)|0,D=D+Math.imul(u1,W)|0;var _e=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(_e>>>26)|0,_e&=67108863,M=Math.imul(E1,_),u=Math.imul(E1,A),u=u+Math.imul(v1,_)|0,D=Math.imul(v1,A),M=M+Math.imul(h1,N)|0,u=u+Math.imul(h1,P)|0,u=u+Math.imul(m1,N)|0,D=D+Math.imul(m1,P)|0,M=M+Math.imul(o1,K)|0,u=u+Math.imul(o1,W)|0,u=u+Math.imul(c1,K)|0,D=D+Math.imul(c1,W)|0;var he=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(he>>>26)|0,he&=67108863,M=Math.imul(E1,N),u=Math.imul(E1,P),u=u+Math.imul(v1,N)|0,D=Math.imul(v1,P),M=M+Math.imul(h1,K)|0,u=u+Math.imul(h1,W)|0,u=u+Math.imul(m1,K)|0,D=D+Math.imul(m1,W)|0;var j=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(j>>>26)|0,j&=67108863,M=Math.imul(E1,K),u=Math.imul(E1,W),u=u+Math.imul(v1,K)|0,D=Math.imul(v1,W);var H=(U+M|0)+((u&8191)<<13)|0;return U=(D+(u>>>13)|0)+(H>>>26)|0,H&=67108863,q[0]=ge,q[1]=ue,q[2]=Fe,q[3]=me,q[4]=De,q[5]=Me,q[6]=qe,q[7]=Te,q[8]=Oe,q[9]=Ue,q[10]=Pe,q[11]=xe,q[12]=Ce,q[13]=ve,q[14]=Ae,q[15]=_e,q[16]=he,q[17]=j,q[18]=H,U!==0&&(q[19]=U,m.length++),m};Math.imul||(V=R);function L(w,p,f){f.negative=p.negative^w.negative,f.length=w.length+p.length;for(var m=0,b=0,E=0;E>>26)|0,b+=q>>>26,q&=67108863}f.words[E]=U,m=q,q=b}return m!==0?f.words[E]=m:f.length--,f.strip()}function G(w,p,f){var m=new J;return m.mulp(w,p,f)}i.prototype.mulTo=function(p,f){var m,b=this.length+p.length;return this.length===10&&p.length===10?m=V(this,p,f):b<63?m=R(this,p,f):b<1024?m=L(this,p,f):m=G(this,p,f),m};function J(w,p){this.x=w,this.y=p}J.prototype.makeRBT=function(p){for(var f=new Array(p),m=i.prototype._countBits(p)-1,b=0;b>=1;return b},J.prototype.permute=function(p,f,m,b,E,q){for(var U=0;U>>1)E++;return 1<>>13,m[2*q+1]=E&8191,E=E>>>13;for(q=2*f;q>=26,f+=b/67108864|0,f+=E>>>26,this.words[m]=E&67108863}return f!==0&&(this.words[m]=f,this.length++),this},i.prototype.muln=function(p){return this.clone().imuln(p)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(p){var f=O(p);if(f.length===0)return new i(1);for(var m=this,b=0;b=0);var f=p%26,m=(p-f)/26,b=67108863>>>26-f<<26-f,E;if(f!==0){var q=0;for(E=0;E>>26-f}q&&(this.words[E]=q,this.length++)}if(m!==0){for(E=this.length-1;E>=0;E--)this.words[E+m]=this.words[E];for(E=0;E=0);var b;f?b=(f-f%26)/26:b=0;var E=p%26,q=Math.min((p-E)/26,this.length),U=67108863^67108863>>>E<q)for(this.length-=q,u=0;u=0&&(D!==0||u>=b);u--){var se=this.words[u]|0;this.words[u]=D<<26-E|se>>>E,D=se&U}return M&&D!==0&&(M.words[M.length++]=D),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(p,f,m){return a(this.negative===0),this.iushrn(p,f,m)},i.prototype.shln=function(p){return this.clone().ishln(p)},i.prototype.ushln=function(p){return this.clone().iushln(p)},i.prototype.shrn=function(p){return this.clone().ishrn(p)},i.prototype.ushrn=function(p){return this.clone().iushrn(p)},i.prototype.testn=function(p){a(typeof p=="number"&&p>=0);var f=p%26,m=(p-f)/26,b=1<=0);var f=p%26,m=(p-f)/26;if(a(this.negative===0,"imaskn works only with positive numbers"),this.length<=m)return this;if(f!==0&&m++,this.length=Math.min(m,this.length),f!==0){var b=67108863^67108863>>>f<=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},i.prototype.isubn=function(p){if(a(typeof p=="number"),a(p<67108864),p<0)return this.iaddn(-p);if(this.negative!==0)return this.negative=0,this.iaddn(p),this.negative=1,this;if(this.words[0]-=p,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f>26)-(M/67108864|0),this.words[E+m]=q&67108863}for(;E>26,this.words[E+m]=q&67108863;if(U===0)return this.strip();for(a(U===-1),U=0,E=0;E>26,this.words[E]=q&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(p,f){var m=this.length-p.length,b=this.clone(),E=p,q=E.words[E.length-1]|0,U=this._countBits(q);m=26-U,m!==0&&(E=E.ushln(m),b.iushln(m),q=E.words[E.length-1]|0);var M=b.length-E.length,u;if(f!=="mod"){u=new i(null),u.length=M+1,u.words=new Array(u.length);for(var D=0;D=0;X--){var ne=(b.words[E.length+X]|0)*67108864+(b.words[E.length+X-1]|0);for(ne=Math.min(ne/q|0,67108863),b._ishlnsubmul(E,ne,X);b.negative!==0;)ne--,b.negative=0,b._ishlnsubmul(E,1,X),b.isZero()||(b.negative^=1);u&&(u.words[X]=ne)}return u&&u.strip(),b.strip(),f!=="div"&&m!==0&&b.iushrn(m),{div:u||null,mod:b}},i.prototype.divmod=function(p,f,m){if(a(!p.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var b,E,q;return this.negative!==0&&p.negative===0?(q=this.neg().divmod(p,f),f!=="mod"&&(b=q.div.neg()),f!=="div"&&(E=q.mod.neg(),m&&E.negative!==0&&E.iadd(p)),{div:b,mod:E}):this.negative===0&&p.negative!==0?(q=this.divmod(p.neg(),f),f!=="mod"&&(b=q.div.neg()),{div:b,mod:q.mod}):(this.negative&p.negative)!==0?(q=this.neg().divmod(p.neg(),f),f!=="div"&&(E=q.mod.neg(),m&&E.negative!==0&&E.isub(p)),{div:q.div,mod:E}):p.length>this.length||this.cmp(p)<0?{div:new i(0),mod:this}:p.length===1?f==="div"?{div:this.divn(p.words[0]),mod:null}:f==="mod"?{div:null,mod:new i(this.modn(p.words[0]))}:{div:this.divn(p.words[0]),mod:new i(this.modn(p.words[0]))}:this._wordDiv(p,f)},i.prototype.div=function(p){return this.divmod(p,"div",!1).div},i.prototype.mod=function(p){return this.divmod(p,"mod",!1).mod},i.prototype.umod=function(p){return this.divmod(p,"mod",!0).mod},i.prototype.divRound=function(p){var f=this.divmod(p);if(f.mod.isZero())return f.div;var m=f.div.negative!==0?f.mod.isub(p):f.mod,b=p.ushrn(1),E=p.andln(1),q=m.cmp(b);return q<0||E===1&&q===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},i.prototype.modn=function(p){a(p<=67108863);for(var f=(1<<26)%p,m=0,b=this.length-1;b>=0;b--)m=(f*m+(this.words[b]|0))%p;return m},i.prototype.idivn=function(p){a(p<=67108863);for(var f=0,m=this.length-1;m>=0;m--){var b=(this.words[m]|0)+f*67108864;this.words[m]=b/p|0,f=b%p}return this.strip()},i.prototype.divn=function(p){return this.clone().idivn(p)},i.prototype.egcd=function(p){a(p.negative===0),a(!p.isZero());var f=this,m=p.clone();f.negative!==0?f=f.umod(p):f=f.clone();for(var b=new i(1),E=new i(0),q=new i(0),U=new i(1),M=0;f.isEven()&&m.isEven();)f.iushrn(1),m.iushrn(1),++M;for(var u=m.clone(),D=f.clone();!f.isZero();){for(var se=0,X=1;(f.words[0]&X)===0&&se<26;++se,X<<=1);if(se>0)for(f.iushrn(se);se-- >0;)(b.isOdd()||E.isOdd())&&(b.iadd(u),E.isub(D)),b.iushrn(1),E.iushrn(1);for(var ne=0,Z=1;(m.words[0]&Z)===0&&ne<26;++ne,Z<<=1);if(ne>0)for(m.iushrn(ne);ne-- >0;)(q.isOdd()||U.isOdd())&&(q.iadd(u),U.isub(D)),q.iushrn(1),U.iushrn(1);f.cmp(m)>=0?(f.isub(m),b.isub(q),E.isub(U)):(m.isub(f),q.isub(b),U.isub(E))}return{a:q,b:U,gcd:m.iushln(M)}},i.prototype._invmp=function(p){a(p.negative===0),a(!p.isZero());var f=this,m=p.clone();f.negative!==0?f=f.umod(p):f=f.clone();for(var b=new i(1),E=new i(0),q=m.clone();f.cmpn(1)>0&&m.cmpn(1)>0;){for(var U=0,M=1;(f.words[0]&M)===0&&U<26;++U,M<<=1);if(U>0)for(f.iushrn(U);U-- >0;)b.isOdd()&&b.iadd(q),b.iushrn(1);for(var u=0,D=1;(m.words[0]&D)===0&&u<26;++u,D<<=1);if(u>0)for(m.iushrn(u);u-- >0;)E.isOdd()&&E.iadd(q),E.iushrn(1);f.cmp(m)>=0?(f.isub(m),b.isub(E)):(m.isub(f),E.isub(b))}var se;return f.cmpn(1)===0?se=b:se=E,se.cmpn(0)<0&&se.iadd(p),se},i.prototype.gcd=function(p){if(this.isZero())return p.abs();if(p.isZero())return this.abs();var f=this.clone(),m=p.clone();f.negative=0,m.negative=0;for(var b=0;f.isEven()&&m.isEven();b++)f.iushrn(1),m.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;m.isEven();)m.iushrn(1);var E=f.cmp(m);if(E<0){var q=f;f=m,m=q}else if(E===0||m.cmpn(1)===0)break;f.isub(m)}while(!0);return m.iushln(b)},i.prototype.invm=function(p){return this.egcd(p).a.umod(p)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(p){return this.words[0]&p},i.prototype.bincn=function(p){a(typeof p=="number");var f=p%26,m=(p-f)/26,b=1<>>26,U&=67108863,this.words[q]=U}return E!==0&&(this.words[q]=E,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(p){var f=p<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var m;if(this.length>1)m=1;else{f&&(p=-p),a(p<=67108863,"Number is too big");var b=this.words[0]|0;m=b===p?0:bp.length)return 1;if(this.length=0;m--){var b=this.words[m]|0,E=p.words[m]|0;if(b!==E){bE&&(f=1);break}}return f},i.prototype.gtn=function(p){return this.cmpn(p)===1},i.prototype.gt=function(p){return this.cmp(p)===1},i.prototype.gten=function(p){return this.cmpn(p)>=0},i.prototype.gte=function(p){return this.cmp(p)>=0},i.prototype.ltn=function(p){return this.cmpn(p)===-1},i.prototype.lt=function(p){return this.cmp(p)===-1},i.prototype.lten=function(p){return this.cmpn(p)<=0},i.prototype.lte=function(p){return this.cmp(p)<=0},i.prototype.eqn=function(p){return this.cmpn(p)===0},i.prototype.eq=function(p){return this.cmp(p)===0},i.red=function(p){return new be(p)},i.prototype.toRed=function(p){return a(!this.red,"Already a number in reduction context"),a(this.negative===0,"red works only with positives"),p.convertTo(this)._forceRed(p)},i.prototype.fromRed=function(){return a(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(p){return this.red=p,this},i.prototype.forceRed=function(p){return a(!this.red,"Already a number in reduction context"),this._forceRed(p)},i.prototype.redAdd=function(p){return a(this.red,"redAdd works only with red numbers"),this.red.add(this,p)},i.prototype.redIAdd=function(p){return a(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,p)},i.prototype.redSub=function(p){return a(this.red,"redSub works only with red numbers"),this.red.sub(this,p)},i.prototype.redISub=function(p){return a(this.red,"redISub works only with red numbers"),this.red.isub(this,p)},i.prototype.redShl=function(p){return a(this.red,"redShl works only with red numbers"),this.red.shl(this,p)},i.prototype.redMul=function(p){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.mul(this,p)},i.prototype.redIMul=function(p){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.imul(this,p)},i.prototype.redSqr=function(){return a(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return a(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return a(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return a(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return a(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(p){return a(this.red&&!p.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,p)};var fe={k256:null,p224:null,p192:null,p25519:null};function oe(w,p){this.name=w,this.p=new i(p,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}oe.prototype._tmp=function(){var p=new i(null);return p.words=new Array(Math.ceil(this.n/13)),p},oe.prototype.ireduce=function(p){var f=p,m;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),m=f.bitLength();while(m>this.n);var b=m0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},oe.prototype.split=function(p,f){p.iushrn(this.n,0,f)},oe.prototype.imulK=function(p){return p.imul(this.k)};function ye(){oe.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}r(ye,oe),ye.prototype.split=function(p,f){for(var m=4194303,b=Math.min(p.length,9),E=0;E>>22,q=U}q>>>=22,p.words[E-10]=q,q===0&&p.length>10?p.length-=10:p.length-=9},ye.prototype.imulK=function(p){p.words[p.length]=0,p.words[p.length+1]=0,p.length+=2;for(var f=0,m=0;m>>=26,p.words[m]=E,f=b}return f!==0&&(p.words[p.length++]=f),p},i._prime=function(p){if(fe[p])return fe[p];var f;if(p==="k256")f=new ye;else if(p==="p224")f=new Ie;else if(p==="p192")f=new we;else if(p==="p25519")f=new Ne;else throw new Error("Unknown prime "+p);return fe[p]=f,f};function be(w){if(typeof w=="string"){var p=i._prime(w);this.m=p.p,this.prime=p}else a(w.gtn(1),"modulus must be greater than 1"),this.m=w,this.prime=null}be.prototype._verify1=function(p){a(p.negative===0,"red works only with positives"),a(p.red,"red works only with red numbers")},be.prototype._verify2=function(p,f){a((p.negative|f.negative)===0,"red works only with positives"),a(p.red&&p.red===f.red,"red works only with red numbers")},be.prototype.imod=function(p){return this.prime?this.prime.ireduce(p)._forceRed(this):p.umod(this.m)._forceRed(this)},be.prototype.neg=function(p){return p.isZero()?p.clone():this.m.sub(p)._forceRed(this)},be.prototype.add=function(p,f){this._verify2(p,f);var m=p.add(f);return m.cmp(this.m)>=0&&m.isub(this.m),m._forceRed(this)},be.prototype.iadd=function(p,f){this._verify2(p,f);var m=p.iadd(f);return m.cmp(this.m)>=0&&m.isub(this.m),m},be.prototype.sub=function(p,f){this._verify2(p,f);var m=p.sub(f);return m.cmpn(0)<0&&m.iadd(this.m),m._forceRed(this)},be.prototype.isub=function(p,f){this._verify2(p,f);var m=p.isub(f);return m.cmpn(0)<0&&m.iadd(this.m),m},be.prototype.shl=function(p,f){return this._verify1(p),this.imod(p.ushln(f))},be.prototype.imul=function(p,f){return this._verify2(p,f),this.imod(p.imul(f))},be.prototype.mul=function(p,f){return this._verify2(p,f),this.imod(p.mul(f))},be.prototype.isqr=function(p){return this.imul(p,p.clone())},be.prototype.sqr=function(p){return this.mul(p,p)},be.prototype.sqrt=function(p){if(p.isZero())return p.clone();var f=this.m.andln(3);if(a(f%2===1),f===3){var m=this.m.add(new i(1)).iushrn(2);return this.pow(p,m)}for(var b=this.m.subn(1),E=0;!b.isZero()&&b.andln(1)===0;)E++,b.iushrn(1);a(!b.isZero());var q=new i(1).toRed(this),U=q.redNeg(),M=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);this.pow(u,M).cmp(U)!==0;)u.redIAdd(U);for(var D=this.pow(u,b),se=this.pow(p,b.addn(1).iushrn(1)),X=this.pow(p,b),ne=E;X.cmp(q)!==0;){for(var Z=X,g=0;Z.cmp(q)!==0;g++)Z=Z.redSqr();a(g=0;E--){for(var D=f.words[E],se=u-1;se>=0;se--){var X=D>>se&1;if(q!==b[0]&&(q=this.sqr(q)),X===0&&U===0){M=0;continue}U<<=1,U|=X,M++,!(M!==m&&(E!==0||se!==0))&&(q=this.mul(q,b[U]),M=0,U=0)}u=26}return q},be.prototype.convertTo=function(p){var f=p.umod(this.m);return f===p?f.clone():f},be.prototype.convertFrom=function(p){var f=p.clone();return f.red=null,f},i.mont=function(p){return new z(p)};function z(w){be.call(this,w),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}r(z,be),z.prototype.convertTo=function(p){return this.imod(p.ushln(this.shift))},z.prototype.convertFrom=function(p){var f=this.imod(p.mul(this.rinv));return f.red=null,f},z.prototype.imul=function(p,f){if(p.isZero()||f.isZero())return p.words[0]=0,p.length=1,p;var m=p.imul(f),b=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),E=m.isub(b).iushrn(this.shift),q=E;return E.cmp(this.m)>=0?q=E.isub(this.m):E.cmpn(0)<0&&(q=E.iadd(this.m)),q._forceRed(this)},z.prototype.mul=function(p,f){if(p.isZero()||f.isZero())return new i(0)._forceRed(this);var m=p.mul(f),b=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),E=m.isub(b).iushrn(this.shift),q=E;return E.cmp(this.m)>=0?q=E.isub(this.m):E.cmpn(0)<0&&(q=E.iadd(this.m)),q._forceRed(this)},z.prototype.invm=function(p){var f=this.imod(p._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(typeof x4>"u"||x4,Cc)});var Ar=T((oL,Dc)=>{l();Dc.exports=Nc;function Nc(t,e){if(!t)throw new Error(e||"Assertion failed")}Nc.equal=function(e,a,r){if(e!=a)throw new Error(r||"Assertion failed: "+e+" != "+a)}});var w4=T(Bc=>{"use strict";l();var B2=Bc;function DC(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var a=[];if(typeof t!="string"){for(var r=0;r>8,n=i&255;d?a.push(d,n):a.push(n)}return a}B2.toArray=DC;function Mc(t){return t.length===1?"0"+t:t}B2.zero2=Mc;function Tc(t){for(var e="",a=0;a{"use strict";l();var ta=qc,MC=Aa(),TC=Ar(),q2=w4();ta.assert=TC;ta.toArray=q2.toArray;ta.zero2=q2.zero2;ta.toHex=q2.toHex;ta.encode=q2.encode;function BC(t,e,a){var r=new Array(Math.max(t.bitLength(),a)+1);r.fill(0);for(var i=1<(i>>1)-1?s=(i>>1)-c:s=c,d.isubn(s)):s=0,r[n]=s,d.iushrn(1)}return r}ta.getNAF=BC;function qC(t,e){var a=[[],[]];t=t.clone(),e=e.clone();for(var r=0,i=0,d;t.cmpn(-r)>0||e.cmpn(-i)>0;){var n=t.andln(3)+r&3,s=e.andln(3)+i&3;n===3&&(n=-1),s===3&&(s=-1);var c;(n&1)===0?c=0:(d=t.andln(7)+r&7,(d===3||d===5)&&s===2?c=-n:c=n),a[0].push(c);var v;(s&1)===0?v=0:(d=e.andln(7)+i&7,(d===3||d===5)&&n===2?v=-s:v=s),a[1].push(v),2*r===c+1&&(r=1-r),2*i===v+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return a}ta.getJSF=qC;function OC(t,e,a){var r="_"+e;t.prototype[e]=function(){return this[r]!==void 0?this[r]:this[r]=a.call(this)}}ta.cachedProperty=OC;function PC(t){return typeof t=="string"?ta.toArray(t,"hex"):t}ta.parseBytes=PC;function UC(t){return new MC(t,"hex","le")}ta.intFromLE=UC});var S4=T((mL,I4)=>{l();var A4;I4.exports=function(e){return A4||(A4=new _r(null)),A4.generate(e)};function _r(t){this.rand=t}I4.exports.Rand=_r;_r.prototype.generate=function(e){return this._rand(e)};_r.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var a=new Uint8Array(e),r=0;r{"use strict";l();var ti=Aa(),G0=Mt(),O2=G0.getNAF,VC=G0.getJSF,P2=G0.assert;function Ir(t,e){this.type=t,this.p=new ti(e.p,16),this.red=e.prime?ti.red(e.prime):ti.mont(this.p),this.zero=new ti(0).toRed(this.red),this.one=new ti(1).toRed(this.red),this.two=new ti(2).toRed(this.red),this.n=e.n&&new ti(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var a=this.n&&this.p.div(this.n);!a||a.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}Oc.exports=Ir;Ir.prototype.point=function(){throw new Error("Not implemented")};Ir.prototype.validate=function(){throw new Error("Not implemented")};Ir.prototype._fixedNafMul=function(e,a){P2(e.precomputed);var r=e._getDoubles(),i=O2(a,1,this._bitLength),d=(1<=s;v--)c=(c<<1)+i[v];n.push(c)}for(var I=this.jpoint(null,null,null),S=this.jpoint(null,null,null),O=d;O>0;O--){for(s=0;s=0;c--){for(var v=0;c>=0&&n[c]===0;c--)v++;if(c>=0&&v++,s=s.dblp(v),c<0)break;var I=n[c];P2(I!==0),e.type==="affine"?I>0?s=s.mixedAdd(d[I-1>>1]):s=s.mixedAdd(d[-I-1>>1].neg()):I>0?s=s.add(d[I-1>>1]):s=s.add(d[-I-1>>1].neg())}return e.type==="affine"?s.toP():s};Ir.prototype._wnafMulAdd=function(e,a,r,i,d){var n=this._wnafT1,s=this._wnafT2,c=this._wnafT3,v=0,I,S,O;for(I=0;I=1;I-=2){var V=I-1,L=I;if(n[V]!==1||n[L]!==1){c[V]=O2(r[V],n[V],this._bitLength),c[L]=O2(r[L],n[L],this._bitLength),v=Math.max(c[V].length,v),v=Math.max(c[L].length,v);continue}var G=[a[V],null,null,a[L]];a[V].y.cmp(a[L].y)===0?(G[1]=a[V].add(a[L]),G[2]=a[V].toJ().mixedAdd(a[L].neg())):a[V].y.cmp(a[L].y.redNeg())===0?(G[1]=a[V].toJ().mixedAdd(a[L]),G[2]=a[V].add(a[L].neg())):(G[1]=a[V].toJ().mixedAdd(a[L]),G[2]=a[V].toJ().mixedAdd(a[L].neg()));var J=[-3,-1,-5,-7,0,7,5,1,3],fe=VC(r[V],r[L]);for(v=Math.max(fe[0].length,v),c[V]=new Array(v),c[L]=new Array(v),S=0;S=0;I--){for(var Ne=0;I>=0;){var be=!0;for(S=0;S=0&&Ne++,Ie=Ie.dblp(Ne),I<0)break;for(S=0;S0?O=s[S][z-1>>1]:z<0&&(O=s[S][-z-1>>1].neg()),O.type==="affine"?Ie=Ie.mixedAdd(O):Ie=Ie.add(O))}}for(I=0;I=Math.ceil((e.bitLength()+1)/a.step):!1};Ft.prototype._getDoubles=function(e,a){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,d=0;d{l();typeof Object.create=="function"?E4.exports=function(e,a){a&&(e.super_=a,e.prototype=Object.create(a.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:E4.exports=function(e,a){if(a){e.super_=a;var r=function(){};r.prototype=a.prototype,e.prototype=new r,e.prototype.constructor=e}}});var W0=T((wL,N4)=>{l();try{if(C4=Ge("util"),typeof C4.inherits!="function")throw"";N4.exports=C4.inherits}catch{N4.exports=Pc()}var C4});var Vc=T((_L,Uc)=>{"use strict";l();var RC=Mt(),F1=Aa(),D4=W0(),Ci=Y0(),FC=RC.assert;function Lt(t){Ci.call(this,"short",t),this.a=new F1(t.a,16).toRed(this.red),this.b=new F1(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}D4(Lt,Ci);Uc.exports=Lt;Lt.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var a,r;if(e.beta)a=new F1(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);a=i[0].cmp(i[1])<0?i[0]:i[1],a=a.toRed(this.red)}if(e.lambda)r=new F1(e.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(a))===0?r=d[0]:(r=d[1],FC(this.g.mul(r).x.cmp(this.g.x.redMul(a))===0))}var n;return e.basis?n=e.basis.map(function(s){return{a:new F1(s.a,16),b:new F1(s.b,16)}}):n=this._getEndoBasis(r),{beta:a,lambda:r,basis:n}}};Lt.prototype._getEndoRoots=function(e){var a=e===this.p?this.red:F1.mont(e),r=new F1(2).toRed(a).redInvm(),i=r.redNeg(),d=new F1(3).toRed(a).redNeg().redSqrt().redMul(r),n=i.redAdd(d).fromRed(),s=i.redSub(d).fromRed();return[n,s]};Lt.prototype._getEndoBasis=function(e){for(var a=this.n.ushrn(Math.floor(this.n.bitLength()/2)),r=e,i=this.n.clone(),d=new F1(1),n=new F1(0),s=new F1(0),c=new F1(1),v,I,S,O,R,V,L,G=0,J,fe;r.cmpn(0)!==0;){var oe=i.div(r);J=i.sub(oe.mul(r)),fe=s.sub(oe.mul(d));var ye=c.sub(oe.mul(n));if(!S&&J.cmp(a)<0)v=L.neg(),I=d,S=J.neg(),O=fe;else if(S&&++G===2)break;L=J,i=r,r=J,s=d,d=fe,c=n,n=ye}R=J.neg(),V=fe;var Ie=S.sqr().add(O.sqr()),we=R.sqr().add(V.sqr());return we.cmp(Ie)>=0&&(R=v,V=I),S.negative&&(S=S.neg(),O=O.neg()),R.negative&&(R=R.neg(),V=V.neg()),[{a:S,b:O},{a:R,b:V}]};Lt.prototype._endoSplit=function(e){var a=this.endo.basis,r=a[0],i=a[1],d=i.b.mul(e).divRound(this.n),n=r.b.neg().mul(e).divRound(this.n),s=d.mul(r.a),c=n.mul(i.a),v=d.mul(r.b),I=n.mul(i.b),S=e.sub(s).sub(c),O=v.add(I).neg();return{k1:S,k2:O}};Lt.prototype.pointFromX=function(e,a){e=new F1(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(i.redSqr().redSub(r).cmp(this.zero)!==0)throw new Error("invalid point");var d=i.fromRed().isOdd();return(a&&!d||!a&&d)&&(i=i.redNeg()),this.point(e,i)};Lt.prototype.validate=function(e){if(e.inf)return!0;var a=e.x,r=e.y,i=this.a.redMul(a),d=a.redSqr().redMul(a).redIAdd(i).redIAdd(this.b);return r.redSqr().redISub(d).cmpn(0)===0};Lt.prototype._endoWnafMulAdd=function(e,a,r){for(var i=this._endoWnafT1,d=this._endoWnafT2,n=0;n":""};J1.prototype.isInfinity=function(){return this.inf};J1.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var a=this.y.redSub(e.y);a.cmpn(0)!==0&&(a=a.redMul(this.x.redSub(e.x).redInvm()));var r=a.redSqr().redISub(this.x).redISub(e.x),i=a.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)};J1.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var a=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),d=r.redAdd(r).redIAdd(r).redIAdd(a).redMul(i),n=d.redSqr().redISub(this.x.redAdd(this.x)),s=d.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,s)};J1.prototype.getX=function(){return this.x.fromRed()};J1.prototype.getY=function(){return this.y.fromRed()};J1.prototype.mul=function(e){return e=new F1(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};J1.prototype.mulAdd=function(e,a,r){var i=[this,a],d=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,d):this.curve._wnafMulAdd(1,i,d,2)};J1.prototype.jmulAdd=function(e,a,r){var i=[this,a],d=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,d,!0):this.curve._wnafMulAdd(1,i,d,2,!0)};J1.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};J1.prototype.neg=function(e){if(this.inf)return this;var a=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(d){return d.neg()};a.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return a};J1.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function rt(t,e,a,r){Ci.BasePoint.call(this,t,"jacobian"),e===null&&a===null&&r===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new F1(0)):(this.x=new F1(e,16),this.y=new F1(a,16),this.z=new F1(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}D4(rt,Ci.BasePoint);Lt.prototype.jpoint=function(e,a,r){return new rt(this,e,a,r)};rt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),a=e.redSqr(),r=this.x.redMul(a),i=this.y.redMul(a).redMul(e);return this.curve.point(r,i)};rt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};rt.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var a=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(a),d=e.x.redMul(r),n=this.y.redMul(a.redMul(e.z)),s=e.y.redMul(r.redMul(this.z)),c=i.redSub(d),v=n.redSub(s);if(c.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var I=c.redSqr(),S=I.redMul(c),O=i.redMul(I),R=v.redSqr().redIAdd(S).redISub(O).redISub(O),V=v.redMul(O.redISub(R)).redISub(n.redMul(S)),L=this.z.redMul(e.z).redMul(c);return this.curve.jpoint(R,V,L)};rt.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var a=this.z.redSqr(),r=this.x,i=e.x.redMul(a),d=this.y,n=e.y.redMul(a).redMul(this.z),s=r.redSub(i),c=d.redSub(n);if(s.cmpn(0)===0)return c.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=s.redSqr(),I=v.redMul(s),S=r.redMul(v),O=c.redSqr().redIAdd(I).redISub(S).redISub(S),R=c.redMul(S.redISub(O)).redISub(d.redMul(I)),V=this.z.redMul(s);return this.curve.jpoint(O,R,V)};rt.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var a;if(this.curve.zeroA||this.curve.threeA){var r=this;for(a=0;a=0)return!1;if(r.redIAdd(d),this.x.cmp(r)===0)return!0}};rt.prototype.inspect=function(){return this.isInfinity()?"":""};rt.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var Lc=T((SL,Fc)=>{"use strict";l();var Ni=Aa(),Rc=W0(),U2=Y0(),LC=Mt();function Di(t){U2.call(this,"mont",t),this.a=new Ni(t.a,16).toRed(this.red),this.b=new Ni(t.b,16).toRed(this.red),this.i4=new Ni(4).toRed(this.red).redInvm(),this.two=new Ni(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Rc(Di,U2);Fc.exports=Di;Di.prototype.validate=function(e){var a=e.normalize().x,r=a.redSqr(),i=r.redMul(a).redAdd(r.redMul(this.a)).redAdd(a),d=i.redSqrt();return d.redSqr().cmp(i)===0};function X1(t,e,a){U2.BasePoint.call(this,t,"projective"),e===null&&a===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Ni(e,16),this.z=new Ni(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Rc(X1,U2.BasePoint);Di.prototype.decodePoint=function(e,a){return this.point(LC.toArray(e,a),1)};Di.prototype.point=function(e,a){return new X1(this,e,a)};Di.prototype.pointFromJSON=function(e){return X1.fromJSON(this,e)};X1.prototype.precompute=function(){};X1.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};X1.fromJSON=function(e,a){return new X1(e,a[0],a[1]||e.one)};X1.prototype.inspect=function(){return this.isInfinity()?"":""};X1.prototype.isInfinity=function(){return this.z.cmpn(0)===0};X1.prototype.dbl=function(){var e=this.x.redAdd(this.z),a=e.redSqr(),r=this.x.redSub(this.z),i=r.redSqr(),d=a.redSub(i),n=a.redMul(i),s=d.redMul(i.redAdd(this.curve.a24.redMul(d)));return this.curve.point(n,s)};X1.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.diffAdd=function(e,a){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),d=e.x.redAdd(e.z),n=e.x.redSub(e.z),s=n.redMul(r),c=d.redMul(i),v=a.z.redMul(s.redAdd(c).redSqr()),I=a.x.redMul(s.redISub(c).redSqr());return this.curve.point(v,I)};X1.prototype.mul=function(e){for(var a=e.clone(),r=this,i=this.curve.point(null,null),d=this,n=[];a.cmpn(0)!==0;a.iushrn(1))n.push(a.andln(1));for(var s=n.length-1;s>=0;s--)n[s]===0?(r=r.diffAdd(i,d),i=i.dbl()):(i=r.diffAdd(i,d),r=r.dbl());return i};X1.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};X1.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};X1.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var jc=T((CL,kc)=>{"use strict";l();var QC=Mt(),Ya=Aa(),Qc=W0(),V2=Y0(),kC=QC.assert;function _a(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,V2.call(this,"edwards",t),this.a=new Ya(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Ya(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Ya(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),kC(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Qc(_a,V2);kc.exports=_a;_a.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};_a.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};_a.prototype.jpoint=function(e,a,r,i){return this.point(e,a,r,i)};_a.prototype.pointFromX=function(e,a){e=new Ya(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),d=this.one.redSub(this.c2.redMul(this.d).redMul(r)),n=i.redMul(d.redInvm()),s=n.redSqrt();if(s.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var c=s.fromRed().isOdd();return(a&&!c||!a&&c)&&(s=s.redNeg()),this.point(e,s)};_a.prototype.pointFromY=function(e,a){e=new Ya(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),d=r.redMul(this.d).redMul(this.c2).redSub(this.a),n=i.redMul(d.redInvm());if(n.cmp(this.zero)===0){if(a)throw new Error("invalid point");return this.point(this.zero,e)}var s=n.redSqrt();if(s.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");return s.fromRed().isOdd()!==a&&(s=s.redNeg()),this.point(s,e)};_a.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var a=e.x.redSqr(),r=e.y.redSqr(),i=a.redMul(this.a).redAdd(r),d=this.c2.redMul(this.one.redAdd(this.d.redMul(a).redMul(r)));return i.cmp(d)===0};function T1(t,e,a,r,i){V2.BasePoint.call(this,t,"projective"),e===null&&a===null&&r===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Ya(e,16),this.y=new Ya(a,16),this.z=r?new Ya(r,16):this.curve.one,this.t=i&&new Ya(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Qc(T1,V2.BasePoint);_a.prototype.pointFromJSON=function(e){return T1.fromJSON(this,e)};_a.prototype.point=function(e,a,r,i){return new T1(this,e,a,r,i)};T1.fromJSON=function(e,a){return new T1(e,a[0],a[1],a[2])};T1.prototype.inspect=function(){return this.isInfinity()?"":""};T1.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};T1.prototype._extDbl=function(){var e=this.x.redSqr(),a=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),d=this.x.redAdd(this.y).redSqr().redISub(e).redISub(a),n=i.redAdd(a),s=n.redSub(r),c=i.redSub(a),v=d.redMul(s),I=n.redMul(c),S=d.redMul(c),O=s.redMul(n);return this.curve.point(v,I,O,S)};T1.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),r=this.y.redSqr(),i,d,n,s,c,v;if(this.curve.twisted){s=this.curve._mulA(a);var I=s.redAdd(r);this.zOne?(i=e.redSub(a).redSub(r).redMul(I.redSub(this.curve.two)),d=I.redMul(s.redSub(r)),n=I.redSqr().redSub(I).redSub(I)):(c=this.z.redSqr(),v=I.redSub(c).redISub(c),i=e.redSub(a).redISub(r).redMul(v),d=I.redMul(s.redSub(r)),n=I.redMul(v))}else s=a.redAdd(r),c=this.curve._mulC(this.z).redSqr(),v=s.redSub(c).redSub(c),i=this.curve._mulC(e.redISub(s)).redMul(v),d=this.curve._mulC(s).redMul(a.redISub(r)),n=s.redMul(v);return this.curve.point(i,d,n)};T1.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};T1.prototype._extAdd=function(e){var a=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),d=this.z.redMul(e.z.redAdd(e.z)),n=r.redSub(a),s=d.redSub(i),c=d.redAdd(i),v=r.redAdd(a),I=n.redMul(s),S=c.redMul(v),O=n.redMul(v),R=s.redMul(c);return this.curve.point(I,S,R,O)};T1.prototype._projAdd=function(e){var a=this.z.redMul(e.z),r=a.redSqr(),i=this.x.redMul(e.x),d=this.y.redMul(e.y),n=this.curve.d.redMul(i).redMul(d),s=r.redSub(n),c=r.redAdd(n),v=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(d),I=a.redMul(s).redMul(v),S,O;return this.curve.twisted?(S=a.redMul(c).redMul(d.redSub(this.curve._mulA(i))),O=s.redMul(c)):(S=a.redMul(c).redMul(d.redSub(i)),O=this.curve._mulC(s).redMul(c)),this.curve.point(I,S,O)};T1.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};T1.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};T1.prototype.mulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!1)};T1.prototype.jmulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!0)};T1.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};T1.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};T1.prototype.getX=function(){return this.normalize(),this.x.fromRed()};T1.prototype.getY=function(){return this.normalize(),this.y.fromRed()};T1.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};T1.prototype.eqXToP=function(e){var a=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(a)===0)return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(a.redIAdd(i),this.x.cmp(a)===0)return!0}};T1.prototype.toP=T1.prototype.normalize;T1.prototype.mixedAdd=T1.prototype.add});var M4=T(Hc=>{"use strict";l();var R2=Hc;R2.base=Y0();R2.short=Vc();R2.mont=Lc();R2.edwards=jc()});var aa=T(M1=>{"use strict";l();var jC=Ar(),HC=W0();M1.inherits=HC;function KC(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function zC(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var a=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),i=0;i>6|192,a[r++]=d&63|128):KC(t,i)?(d=65536+((d&1023)<<10)+(t.charCodeAt(++i)&1023),a[r++]=d>>18|240,a[r++]=d>>12&63|128,a[r++]=d>>6&63|128,a[r++]=d&63|128):(a[r++]=d>>12|224,a[r++]=d>>6&63|128,a[r++]=d&63|128)}else for(i=0;i>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}M1.htonl=Kc;function GC(t,e){for(var a="",r=0;r>>0}return d}M1.join32=YC;function WC(t,e){for(var a=new Array(t.length*4),r=0,i=0;r>>24,a[i+1]=d>>>16&255,a[i+2]=d>>>8&255,a[i+3]=d&255):(a[i+3]=d>>>24,a[i+2]=d>>>16&255,a[i+1]=d>>>8&255,a[i]=d&255)}return a}M1.split32=WC;function JC(t,e){return t>>>e|t<<32-e}M1.rotr32=JC;function XC(t,e){return t<>>32-e}M1.rotl32=XC;function ZC(t,e){return t+e>>>0}M1.sum32=ZC;function eN(t,e,a){return t+e+a>>>0}M1.sum32_3=eN;function tN(t,e,a,r){return t+e+a+r>>>0}M1.sum32_4=tN;function aN(t,e,a,r,i){return t+e+a+r+i>>>0}M1.sum32_5=aN;function rN(t,e,a,r){var i=t[e],d=t[e+1],n=r+d>>>0,s=(n>>0,t[e+1]=n}M1.sum64=rN;function iN(t,e,a,r){var i=e+r>>>0,d=(i>>0}M1.sum64_hi=iN;function dN(t,e,a,r){var i=e+r;return i>>>0}M1.sum64_lo=dN;function pN(t,e,a,r,i,d,n,s){var c=0,v=e;v=v+r>>>0,c+=v>>0,c+=v>>0,c+=v>>0}M1.sum64_4_hi=pN;function nN(t,e,a,r,i,d,n,s){var c=e+r+d+s;return c>>>0}M1.sum64_4_lo=nN;function sN(t,e,a,r,i,d,n,s,c,v){var I=0,S=e;S=S+r>>>0,I+=S>>0,I+=S>>0,I+=S>>0,I+=S>>0}M1.sum64_5_hi=sN;function oN(t,e,a,r,i,d,n,s,c,v){var I=e+r+d+s+v;return I>>>0}M1.sum64_5_lo=oN;function fN(t,e,a){var r=e<<32-a|t>>>a;return r>>>0}M1.rotr64_hi=fN;function lN(t,e,a){var r=t<<32-a|e>>>a;return r>>>0}M1.rotr64_lo=lN;function uN(t,e,a){return t>>>a}M1.shr64_hi=uN;function cN(t,e,a){var r=t<<32-a|e>>>a;return r>>>0}M1.shr64_lo=cN});var Mi=T(Yc=>{"use strict";l();var Gc=aa(),hN=Ar();function F2(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}Yc.BlockHash=F2;F2.prototype.update=function(e,a){if(e=Gc.toArray(e,a),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var r=e.length%this._delta8;this.pending=e.slice(e.length-r,e.length),this.pending.length===0&&(this.pending=null),e=Gc.join32(e,0,e.length-r,this.endian);for(var i=0;i>>24&255,i[d++]=e>>>16&255,i[d++]=e>>>8&255,i[d++]=e&255}else for(i[d++]=e&255,i[d++]=e>>>8&255,i[d++]=e>>>16&255,i[d++]=e>>>24&255,i[d++]=0,i[d++]=0,i[d++]=0,i[d++]=0,n=8;n{"use strict";l();var mN=aa(),Ia=mN.rotr32;function vN(t,e,a,r){if(t===0)return Wc(e,a,r);if(t===1||t===3)return Xc(e,a,r);if(t===2)return Jc(e,a,r)}Wa.ft_1=vN;function Wc(t,e,a){return t&e^~t&a}Wa.ch32=Wc;function Jc(t,e,a){return t&e^t&a^e&a}Wa.maj32=Jc;function Xc(t,e,a){return t^e^a}Wa.p32=Xc;function bN(t){return Ia(t,2)^Ia(t,13)^Ia(t,22)}Wa.s0_256=bN;function gN(t){return Ia(t,6)^Ia(t,11)^Ia(t,25)}Wa.s1_256=gN;function yN(t){return Ia(t,7)^Ia(t,18)^t>>>3}Wa.g0_256=yN;function xN(t){return Ia(t,17)^Ia(t,19)^t>>>10}Wa.g1_256=xN});var th=T((VL,eh)=>{"use strict";l();var Ti=aa(),wN=Mi(),AN=T4(),B4=Ti.rotl32,J0=Ti.sum32,_N=Ti.sum32_5,IN=AN.ft_1,Zc=wN.BlockHash,SN=[1518500249,1859775393,2400959708,3395469782];function Sa(){if(!(this instanceof Sa))return new Sa;Zc.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Ti.inherits(Sa,Zc);eh.exports=Sa;Sa.blockSize=512;Sa.outSize=160;Sa.hmacStrength=80;Sa.padLength=64;Sa.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i{"use strict";l();var Bi=aa(),EN=Mi(),qi=T4(),CN=Ar(),ra=Bi.sum32,NN=Bi.sum32_4,DN=Bi.sum32_5,MN=qi.ch32,TN=qi.maj32,BN=qi.s0_256,qN=qi.s1_256,ON=qi.g0_256,PN=qi.g1_256,ah=EN.BlockHash,UN=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Ea(){if(!(this instanceof Ea))return new Ea;ah.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=UN,this.W=new Array(64)}Bi.inherits(Ea,ah);rh.exports=Ea;Ea.blockSize=512;Ea.outSize=256;Ea.hmacStrength=192;Ea.padLength=64;Ea.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i{"use strict";l();var O4=aa(),ih=q4();function Ja(){if(!(this instanceof Ja))return new Ja;ih.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}O4.inherits(Ja,ih);dh.exports=Ja;Ja.blockSize=512;Ja.outSize=224;Ja.hmacStrength=192;Ja.padLength=64;Ja.prototype._digest=function(e){return e==="hex"?O4.toHex32(this.h.slice(0,7),"big"):O4.split32(this.h.slice(0,7),"big")}});var V4=T((jL,fh)=>{"use strict";l();var wt=aa(),VN=Mi(),RN=Ar(),Ca=wt.rotr64_hi,Na=wt.rotr64_lo,nh=wt.shr64_hi,sh=wt.shr64_lo,Sr=wt.sum64,P4=wt.sum64_hi,U4=wt.sum64_lo,FN=wt.sum64_4_hi,LN=wt.sum64_4_lo,QN=wt.sum64_5_hi,kN=wt.sum64_5_lo,oh=VN.BlockHash,jN=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function ia(){if(!(this instanceof ia))return new ia;oh.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=jN,this.W=new Array(160)}wt.inherits(ia,oh);fh.exports=ia;ia.blockSize=1024;ia.outSize=512;ia.hmacStrength=192;ia.padLength=128;ia.prototype._prepareBlock=function(e,a){for(var r=this.W,i=0;i<32;i++)r[i]=e[a+i];for(;i{"use strict";l();var R4=aa(),lh=V4();function Xa(){if(!(this instanceof Xa))return new Xa;lh.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}R4.inherits(Xa,lh);uh.exports=Xa;Xa.blockSize=1024;Xa.outSize=384;Xa.hmacStrength=192;Xa.padLength=128;Xa.prototype._digest=function(e){return e==="hex"?R4.toHex32(this.h.slice(0,12),"big"):R4.split32(this.h.slice(0,12),"big")}});var hh=T(Oi=>{"use strict";l();Oi.sha1=th();Oi.sha224=ph();Oi.sha256=q4();Oi.sha384=ch();Oi.sha512=V4()});var xh=T(yh=>{"use strict";l();var ai=aa(),aD=Mi(),L2=ai.rotl32,mh=ai.sum32,X0=ai.sum32_3,vh=ai.sum32_4,gh=aD.BlockHash;function Da(){if(!(this instanceof Da))return new Da;gh.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}ai.inherits(Da,gh);yh.ripemd160=Da;Da.blockSize=512;Da.outSize=160;Da.hmacStrength=192;Da.padLength=64;Da.prototype._update=function(e,a){for(var r=this.h[0],i=this.h[1],d=this.h[2],n=this.h[3],s=this.h[4],c=r,v=i,I=d,S=n,O=s,R=0;R<80;R++){var V=mh(L2(vh(r,bh(R,i,d,n),e[dD[R]+a],rD(R)),nD[R]),s);r=s,s=n,n=L2(d,10),d=i,i=V,V=mh(L2(vh(c,bh(79-R,v,I,S),e[pD[R]+a],iD(R)),sD[R]),O),c=O,O=S,S=L2(I,10),I=v,v=V}V=X0(this.h[1],d,S),this.h[1]=X0(this.h[2],n,O),this.h[2]=X0(this.h[3],s,c),this.h[3]=X0(this.h[4],r,v),this.h[4]=X0(this.h[0],i,I),this.h[0]=V};Da.prototype._digest=function(e){return e==="hex"?ai.toHex32(this.h,"little"):ai.split32(this.h,"little")};function bh(t,e,a,r){return t<=15?e^a^r:t<=31?e&a|~e&r:t<=47?(e|~a)^r:t<=63?e&r|a&~r:e^(a|~r)}function rD(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function iD(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var dD=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],pD=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],nD=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],sD=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var Ah=T((JL,wh)=>{"use strict";l();var oD=aa(),fD=Ar();function Pi(t,e,a){if(!(this instanceof Pi))return new Pi(t,e,a);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(oD.toArray(e,a))}wh.exports=Pi;Pi.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),fD(e.length<=this.blockSize);for(var a=e.length;a{l();var it=_h;it.utils=aa();it.common=Mi();it.sha=hh();it.ripemd=xh();it.hmac=Ah();it.sha1=it.sha.sha1;it.sha256=it.sha.sha256;it.sha224=it.sha.sha224;it.sha384=it.sha.sha384;it.sha512=it.sha.sha512;it.ripemd160=it.ripemd.ripemd160});var Sh=T((tQ,Ih)=>{l();Ih.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var k2=T(Nh=>{"use strict";l();var L4=Nh,Er=Q2(),F4=M4(),lD=Mt(),Eh=lD.assert;function Ch(t){t.type==="short"?this.curve=new F4.short(t):t.type==="edwards"?this.curve=new F4.edwards(t):this.curve=new F4.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,Eh(this.g.validate(),"Invalid curve"),Eh(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}L4.PresetCurve=Ch;function Cr(t,e){Object.defineProperty(L4,t,{configurable:!0,enumerable:!0,get:function(){var a=new Ch(e);return Object.defineProperty(L4,t,{configurable:!0,enumerable:!0,value:a}),a}})}Cr("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:Er.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});Cr("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:Er.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});Cr("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:Er.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});Cr("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:Er.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});Cr("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:Er.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});Cr("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Er.sha256,gRed:!1,g:["9"]});Cr("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Er.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var Q4;try{Q4=Sh()}catch{Q4=void 0}Cr("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:Er.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",Q4]})});var Th=T((dQ,Mh)=>{"use strict";l();var uD=Q2(),ri=w4(),Dh=Ar();function Nr(t){if(!(this instanceof Nr))return new Nr(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=ri.toArray(t.entropy,t.entropyEnc||"hex"),a=ri.toArray(t.nonce,t.nonceEnc||"hex"),r=ri.toArray(t.pers,t.persEnc||"hex");Dh(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,a,r)}Mh.exports=Nr;Nr.prototype._init=function(e,a,r){var i=e.concat(a).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var d=0;d=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1};Nr.prototype.generate=function(e,a,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof a!="string"&&(i=r,r=a,a=null),r&&(r=ri.toArray(r,i||"hex"),this._update(r));for(var d=[];d.length{"use strict";l();var cD=Aa(),hD=Mt(),k4=hD.assert;function ft(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}Bh.exports=ft;ft.fromPublic=function(e,a,r){return a instanceof ft?a:new ft(e,{pub:a,pubEnc:r})};ft.fromPrivate=function(e,a,r){return a instanceof ft?a:new ft(e,{priv:a,privEnc:r})};ft.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};ft.prototype.getPublic=function(e,a){return typeof e=="string"&&(a=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),a?this.pub.encode(a,e):this.pub};ft.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};ft.prototype._importPrivate=function(e,a){this.priv=new cD(e,a||16),this.priv=this.priv.umod(this.ec.curve.n)};ft.prototype._importPublic=function(e,a){if(e.x||e.y){this.ec.curve.type==="mont"?k4(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&k4(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,a)};ft.prototype.derive=function(e){return e.validate()||k4(e.validate(),"public point not validated"),e.mul(this.priv).getX()};ft.prototype.sign=function(e,a,r){return this.ec.sign(e,this,a,r)};ft.prototype.verify=function(e,a){return this.ec.verify(e,a,this)};ft.prototype.inspect=function(){return""}});var Uh=T((oQ,Ph)=>{"use strict";l();var j2=Aa(),K4=Mt(),mD=K4.assert;function H2(t,e){if(t instanceof H2)return t;this._importDER(t,e)||(mD(t.r&&t.s,"Signature without r or s"),this.r=new j2(t.r,16),this.s=new j2(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}Ph.exports=H2;function vD(){this.place=0}function j4(t,e){var a=t[e.place++];if(!(a&128))return a;var r=a&15;if(r===0||r>4)return!1;for(var i=0,d=0,n=e.place;d>>=0;return i<=127?!1:(e.place=n,i)}function Oh(t){for(var e=0,a=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(a|128);--a;)t.push(e>>>(a<<3)&255);t.push(e)}H2.prototype.toDER=function(e){var a=this.r.toArray(),r=this.s.toArray();for(a[0]&128&&(a=[0].concat(a)),r[0]&128&&(r=[0].concat(r)),a=Oh(a),r=Oh(r);!r[0]&&!(r[1]&128);)r=r.slice(1);var i=[2];H4(i,a.length),i=i.concat(a),i.push(2),H4(i,r.length);var d=i.concat(r),n=[48];return H4(n,d.length),n=n.concat(d),K4.encode(n,e)}});var Lh=T((lQ,Fh)=>{"use strict";l();var ii=Aa(),Vh=Th(),bD=Mt(),z4=k2(),gD=S4(),Rh=bD.assert,$4=qh(),K2=Uh();function Qt(t){if(!(this instanceof Qt))return new Qt(t);typeof t=="string"&&(Rh(Object.prototype.hasOwnProperty.call(z4,t),"Unknown curve "+t),t=z4[t]),t instanceof z4.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}Fh.exports=Qt;Qt.prototype.keyPair=function(e){return new $4(this,e)};Qt.prototype.keyFromPrivate=function(e,a){return $4.fromPrivate(this,e,a)};Qt.prototype.keyFromPublic=function(e,a){return $4.fromPublic(this,e,a)};Qt.prototype.genKeyPair=function(e){e||(e={});for(var a=new Vh({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||gD(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),i=this.n.sub(new ii(2));;){var d=new ii(a.generate(r));if(!(d.cmp(i)>0))return d.iaddn(1),this.keyFromPrivate(d)}};Qt.prototype._truncateToN=function(e,a){var r=e.byteLength()*8-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!a&&e.cmp(this.n)>=0?e.sub(this.n):e};Qt.prototype.sign=function(e,a,r,i){typeof r=="object"&&(i=r,r=null),i||(i={}),a=this.keyFromPrivate(a,r),e=this._truncateToN(new ii(e,16));for(var d=this.n.byteLength(),n=a.getPrivate().toArray("be",d),s=e.toArray("be",d),c=new Vh({hash:this.hash,entropy:n,nonce:s,pers:i.pers,persEnc:i.persEnc||"utf8"}),v=this.n.sub(new ii(1)),I=0;;I++){var S=i.k?i.k(I):new ii(c.generate(this.n.byteLength()));if(S=this._truncateToN(S,!0),!(S.cmpn(1)<=0||S.cmp(v)>=0)){var O=this.g.mul(S);if(!O.isInfinity()){var R=O.getX(),V=R.umod(this.n);if(V.cmpn(0)!==0){var L=S.invm(this.n).mul(V.mul(a.getPrivate()).iadd(e));if(L=L.umod(this.n),L.cmpn(0)!==0){var G=(O.getY().isOdd()?1:0)|(R.cmp(V)!==0?2:0);return i.canonical&&L.cmp(this.nh)>0&&(L=this.n.sub(L),G^=1),new K2({r:V,s:L,recoveryParam:G})}}}}}};Qt.prototype.verify=function(e,a,r,i){e=this._truncateToN(new ii(e,16)),r=this.keyFromPublic(r,i),a=new K2(a,"hex");var d=a.r,n=a.s;if(d.cmpn(1)<0||d.cmp(this.n)>=0||n.cmpn(1)<0||n.cmp(this.n)>=0)return!1;var s=n.invm(this.n),c=s.mul(e).umod(this.n),v=s.mul(d).umod(this.n),I;return this.curve._maxwellTrick?(I=this.g.jmulAdd(c,r.getPublic(),v),I.isInfinity()?!1:I.eqXToP(d)):(I=this.g.mulAdd(c,r.getPublic(),v),I.isInfinity()?!1:I.getX().umod(this.n).cmp(d)===0)};Qt.prototype.recoverPubKey=function(t,e,a,r){Rh((3&a)===a,"The recovery param is more than two bits"),e=new K2(e,r);var i=this.n,d=new ii(t),n=e.r,s=e.s,c=a&1,v=a>>1;if(n.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?n=this.curve.pointFromX(n.add(this.curve.n),c):n=this.curve.pointFromX(n,c);var I=e.r.invm(i),S=i.sub(d).mul(I).umod(i),O=s.mul(I).umod(i);return this.g.mulAdd(S,n,O)};Qt.prototype.getKeyRecoveryParam=function(t,e,a,r){if(e=new K2(e,r),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var d;try{d=this.recoverPubKey(t,e,i)}catch{continue}if(d.eq(a))return i}throw new Error("Unable to find valid recovery factor")}});var Hh=T((cQ,jh)=>{"use strict";l();var Z0=Mt(),kh=Z0.assert,Qh=Z0.parseBytes,Ui=Z0.cachedProperty;function Z1(t,e){this.eddsa=t,this._secret=Qh(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=Qh(e.pub)}Z1.fromPublic=function(e,a){return a instanceof Z1?a:new Z1(e,{pub:a})};Z1.fromSecret=function(e,a){return a instanceof Z1?a:new Z1(e,{secret:a})};Z1.prototype.secret=function(){return this._secret};Ui(Z1,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});Ui(Z1,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});Ui(Z1,"privBytes",function(){var e=this.eddsa,a=this.hash(),r=e.encodingLength-1,i=a.slice(0,e.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i});Ui(Z1,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});Ui(Z1,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});Ui(Z1,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});Z1.prototype.sign=function(e){return kh(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};Z1.prototype.verify=function(e,a){return this.eddsa.verify(e,a,this)};Z1.prototype.getSecret=function(e){return kh(this._secret,"KeyPair is public only"),Z0.encode(this.secret(),e)};Z1.prototype.getPublic=function(e){return Z0.encode(this.pubBytes(),e)};jh.exports=Z1});var zh=T((mQ,Kh)=>{"use strict";l();var yD=Aa(),z2=Mt(),xD=z2.assert,$2=z2.cachedProperty,wD=z2.parseBytes;function di(t,e){this.eddsa=t,typeof e!="object"&&(e=wD(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),xD(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof yD&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}$2(di,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});$2(di,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});$2(di,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});$2(di,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});di.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};di.prototype.toHex=function(){return z2.encode(this.toBytes(),"hex").toUpperCase()};Kh.exports=di});var Jh=T((bQ,Wh)=>{"use strict";l();var AD=Q2(),_D=k2(),Vi=Mt(),ID=Vi.assert,Gh=Vi.parseBytes,Yh=Hh(),$h=zh();function At(t){if(ID(t==="ed25519","only tested with ed25519 so far"),!(this instanceof At))return new At(t);t=_D[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=AD.sha512}Wh.exports=At;At.prototype.sign=function(e,a){e=Gh(e);var r=this.keyFromSecret(a),i=this.hashInt(r.messagePrefix(),e),d=this.g.mul(i),n=this.encodePoint(d),s=this.hashInt(n,r.pubBytes(),e).mul(r.priv()),c=i.add(s).umod(this.curve.n);return this.makeSignature({R:d,S:c,Rencoded:n})};At.prototype.verify=function(e,a,r){e=Gh(e),a=this.makeSignature(a);var i=this.keyFromPublic(r),d=this.hashInt(a.Rencoded(),i.pubBytes(),e),n=this.g.mul(a.S()),s=a.R().add(i.pub().mul(d));return s.eq(n)};At.prototype.hashInt=function(){for(var e=this.hash(),a=0;a{"use strict";l();var pi=Xh;pi.version=Ec().version;pi.utils=Mt();pi.rand=S4();pi.curve=M4();pi.curves=k2();pi.ec=Lh();pi.eddsa=Jh()});var em=T((wQ,G2)=>{l();(function(){"use strict";var t="input is invalid type",e="finalize already called",a=typeof window=="object",r=a?window:{};r.JS_SHA3_NO_WINDOW&&(a=!1);var i=!a&&typeof self=="object",d=!r.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?r=global:i&&(r=self);var n=!r.JS_SHA3_NO_COMMON_JS&&typeof G2=="object"&&G2.exports,s=typeof define=="function"&&define.amd,c=!r.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),I=[31,7936,2031616,520093696],S=[4,1024,262144,67108864],O=[1,256,65536,16777216],R=[6,1536,393216,100663296],V=[0,8,16,24],L=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],G=[224,256,384,512],J=[128,256],fe=["hex","buffer","arrayBuffer","array","digest"],oe={128:168,256:136};(r.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(g){return Object.prototype.toString.call(g)==="[object Array]"}),c&&(r.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(g){return typeof g=="object"&&g.buffer&&g.buffer.constructor===ArrayBuffer});for(var ye=function(g,Q,$){return function(k){return new X(g,Q,g).update(k)[$]()}},Ie=function(g,Q,$){return function(k,ee){return new X(g,Q,ee).update(k)[$]()}},we=function(g,Q,$){return function(k,ee,ce,ie){return b["cshake"+g].update(k,ee,ce,ie)[$]()}},Ne=function(g,Q,$){return function(k,ee,ce,ie){return b["kmac"+g].update(k,ee,ce,ie)[$]()}},be=function(g,Q,$,k){for(var ee=0;ee>5,this.byteCount=this.blockCount<<2,this.outputBlocks=$>>5,this.extraBytes=($&31)>>3;for(var k=0;k<50;++k)this.s[k]=0}X.prototype.update=function(g){if(this.finalized)throw new Error(e);var Q,$=typeof g;if($!=="string"){if($==="object"){if(g===null)throw new Error(t);if(c&&g.constructor===ArrayBuffer)g=new Uint8Array(g);else if(!Array.isArray(g)&&(!c||!ArrayBuffer.isView(g)))throw new Error(t)}else throw new Error(t);Q=!0}for(var k=this.blocks,ee=this.byteCount,ce=g.length,ie=this.blockCount,de=0,Re=this.s,le,Ee;de>2]|=g[de]<>2]|=Ee<>2]|=(192|Ee>>6)<>2]|=(128|Ee&63)<=57344?(k[le>>2]|=(224|Ee>>12)<>2]|=(128|Ee>>6&63)<>2]|=(128|Ee&63)<>2]|=(240|Ee>>18)<>2]|=(128|Ee>>12&63)<>2]|=(128|Ee>>6&63)<>2]|=(128|Ee&63)<=ee){for(this.start=le-ee,this.block=k[ie],le=0;le>8,$=g&255;$>0;)ee.unshift($),g=g>>8,$=g&255,++k;return Q?ee.push(k):ee.unshift(k),this.update(ee),ee.length},X.prototype.encodeString=function(g){var Q,$=typeof g;if($!=="string"){if($==="object"){if(g===null)throw new Error(t);if(c&&g.constructor===ArrayBuffer)g=new Uint8Array(g);else if(!Array.isArray(g)&&(!c||!ArrayBuffer.isView(g)))throw new Error(t)}else throw new Error(t);Q=!0}var k=0,ee=g.length;if(Q)k=ee;else for(var ce=0;ce=57344?k+=3:(ie=65536+((ie&1023)<<10|g.charCodeAt(++ce)&1023),k+=4)}return k+=this.encode(k*8),this.update(g),k},X.prototype.bytepad=function(g,Q){for(var $=this.encode(Q),k=0;k>2]|=this.padding[Q&3],this.lastByteIndex===this.byteCount)for(g[0]=g[$],Q=1;Q<$+1;++Q)g[Q]=0;for(g[$-1]|=2147483648,Q=0;Q<$;++Q)k[Q]^=g[Q];Z(k)}},X.prototype.toString=X.prototype.hex=function(){this.finalize();for(var g=this.blockCount,Q=this.s,$=this.outputBlocks,k=this.extraBytes,ee=0,ce=0,ie="",de;ce<$;){for(ee=0;ee>4&15]+v[de&15]+v[de>>12&15]+v[de>>8&15]+v[de>>20&15]+v[de>>16&15]+v[de>>28&15]+v[de>>24&15];ce%g===0&&(Z(Q),ee=0)}return k&&(de=Q[ee],ie+=v[de>>4&15]+v[de&15],k>1&&(ie+=v[de>>12&15]+v[de>>8&15]),k>2&&(ie+=v[de>>20&15]+v[de>>16&15])),ie},X.prototype.arrayBuffer=function(){this.finalize();var g=this.blockCount,Q=this.s,$=this.outputBlocks,k=this.extraBytes,ee=0,ce=0,ie=this.outputBits>>3,de;k?de=new ArrayBuffer($+1<<2):de=new ArrayBuffer(ie);for(var Re=new Uint32Array(de);ce<$;){for(ee=0;ee>8&255,ie[de+2]=Re>>16&255,ie[de+3]=Re>>24&255;ce%g===0&&Z(Q)}return k&&(de=ce<<2,Re=Q[ee],ie[de]=Re&255,k>1&&(ie[de+1]=Re>>8&255),k>2&&(ie[de+2]=Re>>16&255)),ie};function ne(g,Q,$){X.call(this,g,Q,$)}ne.prototype=new X,ne.prototype.finalize=function(){return this.encode(this.outputBits,!0),X.prototype.finalize.call(this)};var Z=function(g){var Q,$,k,ee,ce,ie,de,Re,le,Ee,sa,w1,e1,Bt,A1,u1,jt,o1,c1,qt,h1,m1,oa,E1,v1,Ht,f1,p1,vt,n1,l1,_t,s1,b1,fa,C1,N1,et,t1,i1,Kt,g1,_1,Ta,Ke,I1,h,_,A,o,N,P,F,K,W,ge,ue,Fe,me,De,Me,qe,Te;for(k=0;k<48;k+=2)ee=g[0]^g[10]^g[20]^g[30]^g[40],ce=g[1]^g[11]^g[21]^g[31]^g[41],ie=g[2]^g[12]^g[22]^g[32]^g[42],de=g[3]^g[13]^g[23]^g[33]^g[43],Re=g[4]^g[14]^g[24]^g[34]^g[44],le=g[5]^g[15]^g[25]^g[35]^g[45],Ee=g[6]^g[16]^g[26]^g[36]^g[46],sa=g[7]^g[17]^g[27]^g[37]^g[47],w1=g[8]^g[18]^g[28]^g[38]^g[48],e1=g[9]^g[19]^g[29]^g[39]^g[49],Q=w1^(ie<<1|de>>>31),$=e1^(de<<1|ie>>>31),g[0]^=Q,g[1]^=$,g[10]^=Q,g[11]^=$,g[20]^=Q,g[21]^=$,g[30]^=Q,g[31]^=$,g[40]^=Q,g[41]^=$,Q=ee^(Re<<1|le>>>31),$=ce^(le<<1|Re>>>31),g[2]^=Q,g[3]^=$,g[12]^=Q,g[13]^=$,g[22]^=Q,g[23]^=$,g[32]^=Q,g[33]^=$,g[42]^=Q,g[43]^=$,Q=ie^(Ee<<1|sa>>>31),$=de^(sa<<1|Ee>>>31),g[4]^=Q,g[5]^=$,g[14]^=Q,g[15]^=$,g[24]^=Q,g[25]^=$,g[34]^=Q,g[35]^=$,g[44]^=Q,g[45]^=$,Q=Re^(w1<<1|e1>>>31),$=le^(e1<<1|w1>>>31),g[6]^=Q,g[7]^=$,g[16]^=Q,g[17]^=$,g[26]^=Q,g[27]^=$,g[36]^=Q,g[37]^=$,g[46]^=Q,g[47]^=$,Q=Ee^(ee<<1|ce>>>31),$=sa^(ce<<1|ee>>>31),g[8]^=Q,g[9]^=$,g[18]^=Q,g[19]^=$,g[28]^=Q,g[29]^=$,g[38]^=Q,g[39]^=$,g[48]^=Q,g[49]^=$,Bt=g[0],A1=g[1],I1=g[11]<<4|g[10]>>>28,h=g[10]<<4|g[11]>>>28,p1=g[20]<<3|g[21]>>>29,vt=g[21]<<3|g[20]>>>29,De=g[31]<<9|g[30]>>>23,Me=g[30]<<9|g[31]>>>23,g1=g[40]<<18|g[41]>>>14,_1=g[41]<<18|g[40]>>>14,b1=g[2]<<1|g[3]>>>31,fa=g[3]<<1|g[2]>>>31,u1=g[13]<<12|g[12]>>>20,jt=g[12]<<12|g[13]>>>20,_=g[22]<<10|g[23]>>>22,A=g[23]<<10|g[22]>>>22,n1=g[33]<<13|g[32]>>>19,l1=g[32]<<13|g[33]>>>19,qe=g[42]<<2|g[43]>>>30,Te=g[43]<<2|g[42]>>>30,K=g[5]<<30|g[4]>>>2,W=g[4]<<30|g[5]>>>2,C1=g[14]<<6|g[15]>>>26,N1=g[15]<<6|g[14]>>>26,o1=g[25]<<11|g[24]>>>21,c1=g[24]<<11|g[25]>>>21,o=g[34]<<15|g[35]>>>17,N=g[35]<<15|g[34]>>>17,_t=g[45]<<29|g[44]>>>3,s1=g[44]<<29|g[45]>>>3,E1=g[6]<<28|g[7]>>>4,v1=g[7]<<28|g[6]>>>4,ge=g[17]<<23|g[16]>>>9,ue=g[16]<<23|g[17]>>>9,et=g[26]<<25|g[27]>>>7,t1=g[27]<<25|g[26]>>>7,qt=g[36]<<21|g[37]>>>11,h1=g[37]<<21|g[36]>>>11,P=g[47]<<24|g[46]>>>8,F=g[46]<<24|g[47]>>>8,Ta=g[8]<<27|g[9]>>>5,Ke=g[9]<<27|g[8]>>>5,Ht=g[18]<<20|g[19]>>>12,f1=g[19]<<20|g[18]>>>12,Fe=g[29]<<7|g[28]>>>25,me=g[28]<<7|g[29]>>>25,i1=g[38]<<8|g[39]>>>24,Kt=g[39]<<8|g[38]>>>24,m1=g[48]<<14|g[49]>>>18,oa=g[49]<<14|g[48]>>>18,g[0]=Bt^~u1&o1,g[1]=A1^~jt&c1,g[10]=E1^~Ht&p1,g[11]=v1^~f1&vt,g[20]=b1^~C1&et,g[21]=fa^~N1&t1,g[30]=Ta^~I1&_,g[31]=Ke^~h&A,g[40]=K^~ge&Fe,g[41]=W^~ue&me,g[2]=u1^~o1&qt,g[3]=jt^~c1&h1,g[12]=Ht^~p1&n1,g[13]=f1^~vt&l1,g[22]=C1^~et&i1,g[23]=N1^~t1&Kt,g[32]=I1^~_&o,g[33]=h^~A&N,g[42]=ge^~Fe&De,g[43]=ue^~me&Me,g[4]=o1^~qt&m1,g[5]=c1^~h1&oa,g[14]=p1^~n1&_t,g[15]=vt^~l1&s1,g[24]=et^~i1&g1,g[25]=t1^~Kt&_1,g[34]=_^~o&P,g[35]=A^~N&F,g[44]=Fe^~De&qe,g[45]=me^~Me&Te,g[6]=qt^~m1&Bt,g[7]=h1^~oa&A1,g[16]=n1^~_t&E1,g[17]=l1^~s1&v1,g[26]=i1^~g1&b1,g[27]=Kt^~_1&fa,g[36]=o^~P&Ta,g[37]=N^~F&Ke,g[46]=De^~qe&K,g[47]=Me^~Te&W,g[8]=m1^~Bt&u1,g[9]=oa^~A1&jt,g[18]=_t^~E1&Ht,g[19]=s1^~v1&f1,g[28]=g1^~b1&C1,g[29]=_1^~fa&N1,g[38]=P^~Ta&I1,g[39]=F^~Ke&h,g[48]=qe^~K&ge,g[49]=Te^~W&ue,g[0]^=L[k],g[1]^=L[k+1]};if(n)G2.exports=b;else{for(q=0;q{l();am.exports=tm;var Y2=class extends Error{};Y2.prototype.name="AssertionError";function tm(t,e){if(!t){var a=new Y2(e);throw Error.captureStackTrace&&Error.captureStackTrace(a,tm),a}}});var im=T((SQ,rm)=>{l();function SD(t){return C.isBuffer(t)||t instanceof Uint8Array}function ED(t){return C.isEncoding(t)}function CD(t,e,a){return C.alloc(t,e,a)}function ND(t){return C.allocUnsafe(t)}function DD(t){return C.allocUnsafeSlow(t)}function MD(t,e){return C.byteLength(t,e)}function TD(t,e){return C.compare(t,e)}function BD(t,e){return C.concat(t,e)}function qD(t,e,a,r,i){return j1(t).copy(e,a,r,i)}function OD(t,e){return j1(t).equals(e)}function PD(t,e,a,r,i){return j1(t).fill(e,a,r,i)}function UD(t,e,a){return C.from(t,e,a)}function VD(t,e,a,r){return j1(t).includes(e,a,r)}function RD(t,e,a,r){return j1(t).indexOf(e,a,r)}function FD(t,e,a,r){return j1(t).lastIndexOf(e,a,r)}function LD(t){return j1(t).swap16()}function QD(t){return j1(t).swap32()}function kD(t){return j1(t).swap64()}function j1(t){return C.isBuffer(t)?t:C.from(t.buffer,t.byteOffset,t.byteLength)}function jD(t,e,a,r){return j1(t).toString(e,a,r)}function HD(t,e,a,r,i){return j1(t).write(e,a,r,i)}function KD(t,e,a){return j1(t).writeDoubleLE(e,a)}function zD(t,e,a){return j1(t).writeFloatLE(e,a)}function $D(t,e,a){return j1(t).writeUInt32LE(e,a)}function GD(t,e,a){return j1(t).writeInt32LE(e,a)}function YD(t,e){return j1(t).readDoubleLE(e)}function WD(t,e){return j1(t).readFloatLE(e)}function JD(t,e){return j1(t).readUInt32LE(e)}function XD(t,e){return j1(t).readInt32LE(e)}rm.exports={isBuffer:SD,isEncoding:ED,alloc:CD,allocUnsafe:ND,allocUnsafeSlow:DD,byteLength:MD,compare:TD,concat:BD,copy:qD,equals:OD,fill:PD,from:UD,includes:VD,indexOf:RD,lastIndexOf:FD,swap16:LD,swap32:QD,swap64:kD,toBuffer:j1,toString:jD,write:HD,writeDoubleLE:KD,writeFloatLE:zD,writeUInt32LE:$D,writeInt32LE:GD,readDoubleLE:YD,readFloatLE:WD,readUInt32LE:JD,readInt32LE:XD}});var pm=T((CQ,dm)=>{l();var ZD=(t,e)=>function(){return e||(0,t[Object.keys(t)[0]])((e={exports:{}}).exports,e),e.exports},eM=(()=>{for(var t=new Uint8Array(128),e=0;e<64;e++)t[e<26?e+65:e<52?e+71:e<62?e-4:e*4-205]=e;return a=>{for(var r=a.length,i=new Uint8Array((r-(a[r-1]=="=")-(a[r-2]=="="))*3/4|0),d=0,n=0;d>4,i[n++]=c<<4|v>>2,i[n++]=v<<6|I}return i}})(),tM=ZD({"wasm-binary:./blake2b.wat"(t,e){e.exports=eM("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")}}),aM=tM(),rM=WebAssembly.compile(aM);dm.exports=async t=>(await WebAssembly.instantiate(await rM,t)).exports});var hm=T((TQ,Ma)=>{l();var Tt=G4(),iM=im(),er=null,nm=typeof WebAssembly<"u"&&pm()().then(t=>{er=t}),Za=64,W2=[];Ma.exports=ht;var sm=Ma.exports.BYTES_MIN=16,om=Ma.exports.BYTES_MAX=64,DQ=Ma.exports.BYTES=32,fm=Ma.exports.KEYBYTES_MIN=16,lm=Ma.exports.KEYBYTES_MAX=64,MQ=Ma.exports.KEYBYTES=32,um=Ma.exports.SALTBYTES=16,cm=Ma.exports.PERSONALBYTES=16;function ht(t,e,a,r,i){if(!(this instanceof ht))return new ht(t,e,a,r,i);if(!er)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),i!==!0&&(Tt(t>=sm,"digestLength must be at least "+sm+", was given "+t),Tt(t<=om,"digestLength must be at most "+om+", was given "+t),e!=null&&(Tt(e instanceof Uint8Array,"key must be Uint8Array or Buffer"),Tt(e.length>=fm,"key must be at least "+fm+", was given "+e.length),Tt(e.length<=lm,"key must be at least "+lm+", was given "+e.length)),a!=null&&(Tt(a instanceof Uint8Array,"salt must be Uint8Array or Buffer"),Tt(a.length===um,"salt must be exactly "+um+", was given "+a.length)),r!=null&&(Tt(r instanceof Uint8Array,"personal must be Uint8Array or Buffer"),Tt(r.length===cm,"personal must be exactly "+cm+", was given "+r.length))),W2.length||(W2.push(Za),Za+=216),this.digestLength=t,this.finalized=!1,this.pointer=W2.pop(),this._memory=new Uint8Array(er.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=e?e.length:0,this._memory[2]=1,this._memory[3]=1,a&&this._memory.set(a,32),r&&this._memory.set(r,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),er.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),this._memory.fill(0,Za,Za+e.length),this._memory[this.pointer+200]=128)}ht.prototype._realloc=function(t){er.memory.grow(Math.max(0,Math.ceil(Math.abs(t-this._memory.length)/65536))),this._memory=new Uint8Array(er.memory.buffer)};ht.prototype.update=function(t){return Tt(this.finalized===!1,"Hash instance finalized"),Tt(t instanceof Uint8Array,"input must be Uint8Array or Buffer"),Za+t.length>this._memory.length&&this._realloc(Za+t.length),this._memory.set(t,Za),er.blake2b_update(this.pointer,Za,Za+t.length),this};ht.prototype.digest=function(t){if(Tt(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,W2.push(this.pointer),er.blake2b_final(this.pointer),!t||t==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof t=="string")return iM.toString(this._memory,t,this.pointer+128,this.pointer+128+this.digestLength);Tt(t instanceof Uint8Array&&t.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var e=0;et(),t):t(new Error("WebAssembly not supported"))};ht.prototype.ready=ht.ready;ht.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};ht.prototype.setPartialHash=function(t){this._memory.set(t,this.pointer)};function dM(){}});var Em=T((PQ,mt)=>{l();var kt=G4(),td=hm();function J2(t,e,a){var r=t[e]+t[a],i=t[e+1]+t[a+1];r>=4294967296&&i++,t[e]=r,t[e+1]=i}function mm(t,e,a,r){var i=t[e]+a;a<0&&(i+=4294967296);var d=t[e+1]+r;i>=4294967296&&d++,t[e]=i,t[e+1]=d}function Am(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function Dr(t,e,a,r,i,d){var n=ed[i],s=ed[i+1],c=ed[d],v=ed[d+1];J2(ke,t,e),mm(ke,t,n,s);var I=ke[r]^ke[t],S=ke[r+1]^ke[t+1];ke[r]=S,ke[r+1]=I,J2(ke,a,r),I=ke[e]^ke[a],S=ke[e+1]^ke[a+1],ke[e]=I>>>24^S<<8,ke[e+1]=S>>>24^I<<8,J2(ke,t,e),mm(ke,t,c,v),I=ke[r]^ke[t],S=ke[r+1]^ke[t+1],ke[r]=I>>>16^S<<16,ke[r+1]=S>>>16^I<<16,J2(ke,a,r),I=ke[e]^ke[a],S=ke[e+1]^ke[a+1],ke[e]=S>>>31^I<<1,ke[e+1]=I>>>31^S<<1}var _m=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),pM=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],lt=new Uint8Array(pM.map(function(t){return t*2})),ke=new Uint32Array(32),ed=new Uint32Array(32);function Im(t,e){var a=0;for(a=0;a<16;a++)ke[a]=t.h[a],ke[a+16]=_m[a];for(ke[24]=ke[24]^t.t,ke[25]=ke[25]^t.t/4294967296,e&&(ke[28]=~ke[28],ke[29]=~ke[29]),a=0;a<32;a++)ed[a]=Am(t.b,4*a);for(a=0;a<12;a++)Dr(0,8,16,24,lt[a*16+0],lt[a*16+1]),Dr(2,10,18,26,lt[a*16+2],lt[a*16+3]),Dr(4,12,20,28,lt[a*16+4],lt[a*16+5]),Dr(6,14,22,30,lt[a*16+6],lt[a*16+7]),Dr(0,10,20,30,lt[a*16+8],lt[a*16+9]),Dr(2,12,22,24,lt[a*16+10],lt[a*16+11]),Dr(4,14,16,26,lt[a*16+12],lt[a*16+13]),Dr(6,8,18,28,lt[a*16+14],lt[a*16+15]);for(a=0;a<16;a++)t.h[a]=t.h[a]^ke[a]^ke[a+16]}var Mr=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Ri(t,e,a,r){Mr.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=t,Mr[0]=t,e&&(Mr[1]=e.length),Mr[2]=1,Mr[3]=1,a&&Mr.set(a,32),r&&Mr.set(r,48);for(var i=0;i<16;i++)this.h[i]=_m[i]^Am(Mr,i*4);e&&(Sm(this,e),this.c=128)}Ri.prototype.update=function(t){return kt(t instanceof Uint8Array,"input must be Uint8Array or Buffer"),Sm(this,t),this};Ri.prototype.digest=function(t){var e=!t||t==="binary"||t==="hex"?new Uint8Array(this.outlen):t;return kt(e instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),kt(e.length>=this.outlen,"out must have at least outlen bytes of space"),nM(this,e),t==="hex"?sM(e):e};Ri.prototype.final=Ri.prototype.digest;Ri.ready=function(t){td.ready(function(){t()})};function Sm(t,e){for(var a=0;a>2]>>8*(a&3);return e}function sM(t){for(var e="",a=0;a=vm,"outlen must be at least "+vm+", was given "+e),kt(e<=bm,"outlen must be at most "+bm+", was given "+e),a!=null&&(kt(a instanceof Uint8Array,"key must be Uint8Array or Buffer"),kt(a.length>=gm,"key must be at least "+gm+", was given "+a.length),kt(a.length<=ym,"key must be at most "+ym+", was given "+a.length)),r!=null&&(kt(r instanceof Uint8Array,"salt must be Uint8Array or Buffer"),kt(r.length===xm,"salt must be exactly "+xm+", was given "+r.length)),i!=null&&(kt(i instanceof Uint8Array,"personal must be Uint8Array or Buffer"),kt(i.length===wm,"personal must be exactly "+wm+", was given "+i.length))),new fM(e,a,r,i)};mt.exports.ready=function(t){td.ready(function(){t()})};mt.exports.WASM_SUPPORTED=td.SUPPORTED;mt.exports.WASM_LOADED=!1;var vm=mt.exports.BYTES_MIN=16,bm=mt.exports.BYTES_MAX=64,qQ=mt.exports.BYTES=32,gm=mt.exports.KEYBYTES_MIN=16,ym=mt.exports.KEYBYTES_MAX=64,OQ=mt.exports.KEYBYTES=32,xm=mt.exports.SALTBYTES=16,wm=mt.exports.PERSONALBYTES=16;td.ready(function(t){t||(mt.exports.WASM_LOADED=!0,mt.exports=td)})});var Lm=T(tr=>{"use strict";l();Object.defineProperty(tr,"__esModule",{value:!0});var VQ=new Uint8Array(16),Om=new Uint8Array(32);Om[0]=9;function Se(t){var e,a=new Float64Array(16);if(t)for(e=0;e>24&255,t[e+1]=a>>16&255,t[e+2]=a>>8&255,t[e+3]=a&255,t[e+4]=r>>24&255,t[e+5]=r>>16&255,t[e+6]=r>>8&255,t[e+7]=r&255}function mM(t,e,a,r,i){var d,n=0;for(d=0;d>>8)-1}function Pm(t,e,a,r){return mM(t,e,a,r,32)}function Tr(t,e){var a;for(a=0;a<16;a++)t[a]=e[a]|0}function Y4(t){var e,a,r=1;for(e=0;e<16;e++)a=t[e]+r+65535,r=Math.floor(a/65536),t[e]=a-r*65536;t[0]+=r-1+37*(r-1)}function Fi(t,e,a){for(var r,i=~(a-1),d=0;d<16;d++)r=i&(t[d]^e[d]),t[d]^=r,e[d]^=r}function Qi(t,e){var a,r,i,d=Se(),n=Se();for(a=0;a<16;a++)n[a]=e[a];for(Y4(n),Y4(n),Y4(n),r=0;r<2;r++){for(d[0]=n[0]-65517,a=1;a<15;a++)d[a]=n[a]-65535-(d[a-1]>>16&1),d[a-1]&=65535;d[15]=n[15]-32767-(d[14]>>16&1),i=d[15]>>16&1,d[14]&=65535,Fi(n,d,1-i)}for(a=0;a<16;a++)t[2*a]=n[a]&255,t[2*a+1]=n[a]>>8}function Mm(t,e){var a=new Uint8Array(32),r=new Uint8Array(32);return Qi(a,t),Qi(r,e),Pm(a,0,r,0)}function Um(t){var e=new Uint8Array(32);return Qi(e,t),e[0]&1}function es(t,e){var a;for(a=0;a<16;a++)t[a]=e[2*a]+(e[2*a+1]<<8);t[15]&=32767}function da(t,e,a){for(var r=0;r<16;r++)t[r]=e[r]+a[r]}function na(t,e,a){for(var r=0;r<16;r++)t[r]=e[r]-a[r]}function Je(t,e,a){var r,i,d=0,n=0,s=0,c=0,v=0,I=0,S=0,O=0,R=0,V=0,L=0,G=0,J=0,fe=0,oe=0,ye=0,Ie=0,we=0,Ne=0,be=0,z=0,w=0,p=0,f=0,m=0,b=0,E=0,q=0,U=0,M=0,u=0,D=a[0],se=a[1],X=a[2],ne=a[3],Z=a[4],g=a[5],Q=a[6],$=a[7],k=a[8],ee=a[9],ce=a[10],ie=a[11],de=a[12],Re=a[13],le=a[14],Ee=a[15];r=e[0],d+=r*D,n+=r*se,s+=r*X,c+=r*ne,v+=r*Z,I+=r*g,S+=r*Q,O+=r*$,R+=r*k,V+=r*ee,L+=r*ce,G+=r*ie,J+=r*de,fe+=r*Re,oe+=r*le,ye+=r*Ee,r=e[1],n+=r*D,s+=r*se,c+=r*X,v+=r*ne,I+=r*Z,S+=r*g,O+=r*Q,R+=r*$,V+=r*k,L+=r*ee,G+=r*ce,J+=r*ie,fe+=r*de,oe+=r*Re,ye+=r*le,Ie+=r*Ee,r=e[2],s+=r*D,c+=r*se,v+=r*X,I+=r*ne,S+=r*Z,O+=r*g,R+=r*Q,V+=r*$,L+=r*k,G+=r*ee,J+=r*ce,fe+=r*ie,oe+=r*de,ye+=r*Re,Ie+=r*le,we+=r*Ee,r=e[3],c+=r*D,v+=r*se,I+=r*X,S+=r*ne,O+=r*Z,R+=r*g,V+=r*Q,L+=r*$,G+=r*k,J+=r*ee,fe+=r*ce,oe+=r*ie,ye+=r*de,Ie+=r*Re,we+=r*le,Ne+=r*Ee,r=e[4],v+=r*D,I+=r*se,S+=r*X,O+=r*ne,R+=r*Z,V+=r*g,L+=r*Q,G+=r*$,J+=r*k,fe+=r*ee,oe+=r*ce,ye+=r*ie,Ie+=r*de,we+=r*Re,Ne+=r*le,be+=r*Ee,r=e[5],I+=r*D,S+=r*se,O+=r*X,R+=r*ne,V+=r*Z,L+=r*g,G+=r*Q,J+=r*$,fe+=r*k,oe+=r*ee,ye+=r*ce,Ie+=r*ie,we+=r*de,Ne+=r*Re,be+=r*le,z+=r*Ee,r=e[6],S+=r*D,O+=r*se,R+=r*X,V+=r*ne,L+=r*Z,G+=r*g,J+=r*Q,fe+=r*$,oe+=r*k,ye+=r*ee,Ie+=r*ce,we+=r*ie,Ne+=r*de,be+=r*Re,z+=r*le,w+=r*Ee,r=e[7],O+=r*D,R+=r*se,V+=r*X,L+=r*ne,G+=r*Z,J+=r*g,fe+=r*Q,oe+=r*$,ye+=r*k,Ie+=r*ee,we+=r*ce,Ne+=r*ie,be+=r*de,z+=r*Re,w+=r*le,p+=r*Ee,r=e[8],R+=r*D,V+=r*se,L+=r*X,G+=r*ne,J+=r*Z,fe+=r*g,oe+=r*Q,ye+=r*$,Ie+=r*k,we+=r*ee,Ne+=r*ce,be+=r*ie,z+=r*de,w+=r*Re,p+=r*le,f+=r*Ee,r=e[9],V+=r*D,L+=r*se,G+=r*X,J+=r*ne,fe+=r*Z,oe+=r*g,ye+=r*Q,Ie+=r*$,we+=r*k,Ne+=r*ee,be+=r*ce,z+=r*ie,w+=r*de,p+=r*Re,f+=r*le,m+=r*Ee,r=e[10],L+=r*D,G+=r*se,J+=r*X,fe+=r*ne,oe+=r*Z,ye+=r*g,Ie+=r*Q,we+=r*$,Ne+=r*k,be+=r*ee,z+=r*ce,w+=r*ie,p+=r*de,f+=r*Re,m+=r*le,b+=r*Ee,r=e[11],G+=r*D,J+=r*se,fe+=r*X,oe+=r*ne,ye+=r*Z,Ie+=r*g,we+=r*Q,Ne+=r*$,be+=r*k,z+=r*ee,w+=r*ce,p+=r*ie,f+=r*de,m+=r*Re,b+=r*le,E+=r*Ee,r=e[12],J+=r*D,fe+=r*se,oe+=r*X,ye+=r*ne,Ie+=r*Z,we+=r*g,Ne+=r*Q,be+=r*$,z+=r*k,w+=r*ee,p+=r*ce,f+=r*ie,m+=r*de,b+=r*Re,E+=r*le,q+=r*Ee,r=e[13],fe+=r*D,oe+=r*se,ye+=r*X,Ie+=r*ne,we+=r*Z,Ne+=r*g,be+=r*Q,z+=r*$,w+=r*k,p+=r*ee,f+=r*ce,m+=r*ie,b+=r*de,E+=r*Re,q+=r*le,U+=r*Ee,r=e[14],oe+=r*D,ye+=r*se,Ie+=r*X,we+=r*ne,Ne+=r*Z,be+=r*g,z+=r*Q,w+=r*$,p+=r*k,f+=r*ee,m+=r*ce,b+=r*ie,E+=r*de,q+=r*Re,U+=r*le,M+=r*Ee,r=e[15],ye+=r*D,Ie+=r*se,we+=r*X,Ne+=r*ne,be+=r*Z,z+=r*g,w+=r*Q,p+=r*$,f+=r*k,m+=r*ee,b+=r*ce,E+=r*ie,q+=r*de,U+=r*Re,M+=r*le,u+=r*Ee,d+=38*Ie,n+=38*we,s+=38*Ne,c+=38*be,v+=38*z,I+=38*w,S+=38*p,O+=38*f,R+=38*m,V+=38*b,L+=38*E,G+=38*q,J+=38*U,fe+=38*M,oe+=38*u,i=1,r=d+i+65535,i=Math.floor(r/65536),d=r-i*65536,r=n+i+65535,i=Math.floor(r/65536),n=r-i*65536,r=s+i+65535,i=Math.floor(r/65536),s=r-i*65536,r=c+i+65535,i=Math.floor(r/65536),c=r-i*65536,r=v+i+65535,i=Math.floor(r/65536),v=r-i*65536,r=I+i+65535,i=Math.floor(r/65536),I=r-i*65536,r=S+i+65535,i=Math.floor(r/65536),S=r-i*65536,r=O+i+65535,i=Math.floor(r/65536),O=r-i*65536,r=R+i+65535,i=Math.floor(r/65536),R=r-i*65536,r=V+i+65535,i=Math.floor(r/65536),V=r-i*65536,r=L+i+65535,i=Math.floor(r/65536),L=r-i*65536,r=G+i+65535,i=Math.floor(r/65536),G=r-i*65536,r=J+i+65535,i=Math.floor(r/65536),J=r-i*65536,r=fe+i+65535,i=Math.floor(r/65536),fe=r-i*65536,r=oe+i+65535,i=Math.floor(r/65536),oe=r-i*65536,r=ye+i+65535,i=Math.floor(r/65536),ye=r-i*65536,d+=i-1+37*(i-1),i=1,r=d+i+65535,i=Math.floor(r/65536),d=r-i*65536,r=n+i+65535,i=Math.floor(r/65536),n=r-i*65536,r=s+i+65535,i=Math.floor(r/65536),s=r-i*65536,r=c+i+65535,i=Math.floor(r/65536),c=r-i*65536,r=v+i+65535,i=Math.floor(r/65536),v=r-i*65536,r=I+i+65535,i=Math.floor(r/65536),I=r-i*65536,r=S+i+65535,i=Math.floor(r/65536),S=r-i*65536,r=O+i+65535,i=Math.floor(r/65536),O=r-i*65536,r=R+i+65535,i=Math.floor(r/65536),R=r-i*65536,r=V+i+65535,i=Math.floor(r/65536),V=r-i*65536,r=L+i+65535,i=Math.floor(r/65536),L=r-i*65536,r=G+i+65535,i=Math.floor(r/65536),G=r-i*65536,r=J+i+65535,i=Math.floor(r/65536),J=r-i*65536,r=fe+i+65535,i=Math.floor(r/65536),fe=r-i*65536,r=oe+i+65535,i=Math.floor(r/65536),oe=r-i*65536,r=ye+i+65535,i=Math.floor(r/65536),ye=r-i*65536,d+=i-1+37*(i-1),t[0]=d,t[1]=n,t[2]=s,t[3]=c,t[4]=v,t[5]=I,t[6]=S,t[7]=O,t[8]=R,t[9]=V,t[10]=L,t[11]=G,t[12]=J,t[13]=fe,t[14]=oe,t[15]=ye}function pa(t,e){Je(t,e,e)}function ts(t,e){var a=Se(),r;for(r=0;r<16;r++)a[r]=e[r];for(r=253;r>=0;r--)pa(a,a),r!==2&&r!==4&&Je(a,a,e);for(r=0;r<16;r++)t[r]=a[r]}function vM(t,e){var a=Se(),r;for(r=0;r<16;r++)a[r]=e[r];for(r=250;r>=0;r--)pa(a,a),r!==1&&Je(a,a,e);for(r=0;r<16;r++)t[r]=a[r]}function Vm(t,e,a){var r=new Uint8Array(32),i=new Float64Array(80),d,n,s=Se(),c=Se(),v=Se(),I=Se(),S=Se(),O=Se();for(n=0;n<31;n++)r[n]=e[n];for(r[31]=e[31]&127|64,r[0]&=248,es(i,a),n=0;n<16;n++)c[n]=i[n],I[n]=s[n]=v[n]=0;for(s[0]=I[0]=1,n=254;n>=0;--n)d=r[n>>>3]>>>(n&7)&1,Fi(s,c,d),Fi(v,I,d),da(S,s,v),na(s,s,v),da(v,c,I),na(c,c,I),pa(I,S),pa(O,s),Je(s,v,s),Je(v,c,S),da(S,s,v),na(s,s,v),pa(c,s),na(v,I,O),Je(s,v,lM),da(s,s,I),Je(v,v,s),Je(s,I,O),Je(I,c,i),pa(c,S),Fi(s,c,d),Fi(v,I,d);for(n=0;n<16;n++)i[n+16]=s[n],i[n+32]=v[n],i[n+48]=c[n],i[n+64]=I[n];var R=i.subarray(32),V=i.subarray(16);return ts(R,R),Je(V,V,R),Qi(t,V),0}function bM(t,e){return Vm(t,e,Om)}var Tm=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Bm(t,e,a,r){for(var i=new Int32Array(16),d=new Int32Array(16),n,s,c,v,I,S,O,R,V,L,G,J,fe,oe,ye,Ie,we,Ne,be,z,w,p,f,m,b,E,q=t[0],U=t[1],M=t[2],u=t[3],D=t[4],se=t[5],X=t[6],ne=t[7],Z=e[0],g=e[1],Q=e[2],$=e[3],k=e[4],ee=e[5],ce=e[6],ie=e[7],de=0;r>=128;){for(be=0;be<16;be++)z=8*be+de,i[be]=a[z+0]<<24|a[z+1]<<16|a[z+2]<<8|a[z+3],d[be]=a[z+4]<<24|a[z+5]<<16|a[z+6]<<8|a[z+7];for(be=0;be<80;be++)if(n=q,s=U,c=M,v=u,I=D,S=se,O=X,R=ne,V=Z,L=g,G=Q,J=$,fe=k,oe=ee,ye=ce,Ie=ie,w=ne,p=ie,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=(D>>>14|k<<32-14)^(D>>>18|k<<32-18)^(k>>>41-32|D<<32-(41-32)),p=(k>>>14|D<<32-14)^(k>>>18|D<<32-18)^(D>>>41-32|k<<32-(41-32)),f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,w=D&se^~D&X,p=k&ee^~k&ce,f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,w=Tm[be*2],p=Tm[be*2+1],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,w=i[be%16],p=d[be%16],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,we=b&65535|E<<16,Ne=f&65535|m<<16,w=we,p=Ne,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=(q>>>28|Z<<32-28)^(Z>>>34-32|q<<32-(34-32))^(Z>>>39-32|q<<32-(39-32)),p=(Z>>>28|q<<32-28)^(q>>>34-32|Z<<32-(34-32))^(q>>>39-32|Z<<32-(39-32)),f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,w=q&U^q&M^U&M,p=Z&g^Z&Q^g&Q,f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,R=b&65535|E<<16,Ie=f&65535|m<<16,w=v,p=J,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=we,p=Ne,f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,v=b&65535|E<<16,J=f&65535|m<<16,U=n,M=s,u=c,D=v,se=I,X=S,ne=O,q=R,g=V,Q=L,$=G,k=J,ee=fe,ce=oe,ie=ye,Z=Ie,be%16===15)for(z=0;z<16;z++)w=i[z],p=d[z],f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=i[(z+9)%16],p=d[(z+9)%16],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,we=i[(z+1)%16],Ne=d[(z+1)%16],w=(we>>>1|Ne<<32-1)^(we>>>8|Ne<<32-8)^we>>>7,p=(Ne>>>1|we<<32-1)^(Ne>>>8|we<<32-8)^(Ne>>>7|we<<32-7),f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,we=i[(z+14)%16],Ne=d[(z+14)%16],w=(we>>>19|Ne<<32-19)^(Ne>>>61-32|we<<32-(61-32))^we>>>6,p=(Ne>>>19|we<<32-19)^(we>>>61-32|Ne<<32-(61-32))^(Ne>>>6|we<<32-6),f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,i[z]=b&65535|E<<16,d[z]=f&65535|m<<16;w=q,p=Z,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[0],p=e[0],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[0]=q=b&65535|E<<16,e[0]=Z=f&65535|m<<16,w=U,p=g,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[1],p=e[1],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[1]=U=b&65535|E<<16,e[1]=g=f&65535|m<<16,w=M,p=Q,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[2],p=e[2],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[2]=M=b&65535|E<<16,e[2]=Q=f&65535|m<<16,w=u,p=$,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[3],p=e[3],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[3]=u=b&65535|E<<16,e[3]=$=f&65535|m<<16,w=D,p=k,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[4],p=e[4],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[4]=D=b&65535|E<<16,e[4]=k=f&65535|m<<16,w=se,p=ee,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[5],p=e[5],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[5]=se=b&65535|E<<16,e[5]=ee=f&65535|m<<16,w=X,p=ce,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[6],p=e[6],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[6]=X=b&65535|E<<16,e[6]=ce=f&65535|m<<16,w=ne,p=ie,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[7],p=e[7],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[7]=ne=b&65535|E<<16,e[7]=ie=f&65535|m<<16,de+=128,r-=128}return r}function ad(t,e,a){var r=new Int32Array(8),i=new Int32Array(8),d=new Uint8Array(256),n,s=a;for(r[0]=1779033703,r[1]=3144134277,r[2]=1013904242,r[3]=2773480762,r[4]=1359893119,r[5]=2600822924,r[6]=528734635,r[7]=1541459225,i[0]=4089235720,i[1]=2227873595,i[2]=4271175723,i[3]=1595750129,i[4]=2917565137,i[5]=725511199,i[6]=4215389547,i[7]=327033209,Bm(r,i,e,a),a%=128,n=0;n=0;--i)r=a[i/8|0]>>(i&7)&1,qm(t,e,r),X4(e,t),X4(t,t),qm(t,e,r)}function Z2(t,e){var a=[Se(),Se(),Se(),Se()];Tr(a[0],Cm),Tr(a[1],Nm),Tr(a[2],Li),Je(a[3],Cm,Nm),Rm(t,a,e)}var W4=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function as(t,e){var a,r,i,d;for(r=63;r>=32;--r){for(a=0,i=r-32,d=r-12;i>8,e[i]-=a*256;e[i]+=a,e[r]=0}for(a=0,i=0;i<32;i++)e[i]+=a-(e[31]>>4)*W4[i],a=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=a*W4[i];for(r=0;r<32;r++)e[r+1]+=e[r]>>8,t[r]=e[r]&255}function rd(t){var e=new Float64Array(64),a;for(a=0;a<64;a++)e[a]=t[a];for(a=0;a<64;a++)t[a]=0;as(t,e)}function gM(t,e,a,r){var i=new Uint8Array(64),d=new Uint8Array(64),n,s,c=new Float64Array(64),v=[Se(),Se(),Se(),Se()];for(n=0;n>7&&na(t[0],J4,t[0]),Je(t[3],t[0],t[1]),0)}function wM(t,e,a,r){var i,d,n=new Uint8Array(32),s=new Uint8Array(64),c=[Se(),Se(),Se(),Se()],v=[Se(),Se(),Se(),Se()];if(d=-1,a<64||xM(v,r))return-1;for(i=0;i=0}tr.verify=CM;function NM(t){if(Br(t),t.length!==32)throw new Error("wrong seed length");for(var e=new Uint8Array(32),a=new Uint8Array(32),r=0;r<32;r++)e[r]=t[r];return bM(a,e),e[0]&=248,e[31]&=127,e[31]|=64,a[31]&=127,{public:a,private:e}}tr.generateKeyPair=NM;tr.default={}});var Qm=T((LQ,ep)=>{l();(function(t){"use strict";var e=function(h){var _,A=new Float64Array(16);if(h)for(_=0;_>24&255,h[_+1]=A>>16&255,h[_+2]=A>>8&255,h[_+3]=A&255,h[_+4]=o>>24&255,h[_+5]=o>>16&255,h[_+6]=o>>8&255,h[_+7]=o&255}function V(h,_,A,o,N){var P,F=0;for(P=0;P>>8)-1}function L(h,_,A,o){return V(h,_,A,o,16)}function G(h,_,A,o){return V(h,_,A,o,32)}function J(h,_,A,o){for(var N=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,P=A[0]&255|(A[1]&255)<<8|(A[2]&255)<<16|(A[3]&255)<<24,F=A[4]&255|(A[5]&255)<<8|(A[6]&255)<<16|(A[7]&255)<<24,K=A[8]&255|(A[9]&255)<<8|(A[10]&255)<<16|(A[11]&255)<<24,W=A[12]&255|(A[13]&255)<<8|(A[14]&255)<<16|(A[15]&255)<<24,ge=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,ue=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,Fe=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,me=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,De=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,Me=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,qe=A[16]&255|(A[17]&255)<<8|(A[18]&255)<<16|(A[19]&255)<<24,Te=A[20]&255|(A[21]&255)<<8|(A[22]&255)<<16|(A[23]&255)<<24,Oe=A[24]&255|(A[25]&255)<<8|(A[26]&255)<<16|(A[27]&255)<<24,Ue=A[28]&255|(A[29]&255)<<8|(A[30]&255)<<16|(A[31]&255)<<24,Pe=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,xe=N,Ce=P,ve=F,Ae=K,_e=W,he=ge,j=ue,H=Fe,re=me,te=De,ae=Me,pe=qe,Be=Te,Le=Oe,je=Ue,Qe=Pe,B,ze=0;ze<20;ze+=2)B=xe+Be|0,_e^=B<<7|B>>>32-7,B=_e+xe|0,re^=B<<9|B>>>32-9,B=re+_e|0,Be^=B<<13|B>>>32-13,B=Be+re|0,xe^=B<<18|B>>>32-18,B=he+Ce|0,te^=B<<7|B>>>32-7,B=te+he|0,Le^=B<<9|B>>>32-9,B=Le+te|0,Ce^=B<<13|B>>>32-13,B=Ce+Le|0,he^=B<<18|B>>>32-18,B=ae+j|0,je^=B<<7|B>>>32-7,B=je+ae|0,ve^=B<<9|B>>>32-9,B=ve+je|0,j^=B<<13|B>>>32-13,B=j+ve|0,ae^=B<<18|B>>>32-18,B=Qe+pe|0,Ae^=B<<7|B>>>32-7,B=Ae+Qe|0,H^=B<<9|B>>>32-9,B=H+Ae|0,pe^=B<<13|B>>>32-13,B=pe+H|0,Qe^=B<<18|B>>>32-18,B=xe+Ae|0,Ce^=B<<7|B>>>32-7,B=Ce+xe|0,ve^=B<<9|B>>>32-9,B=ve+Ce|0,Ae^=B<<13|B>>>32-13,B=Ae+ve|0,xe^=B<<18|B>>>32-18,B=he+_e|0,j^=B<<7|B>>>32-7,B=j+he|0,H^=B<<9|B>>>32-9,B=H+j|0,_e^=B<<13|B>>>32-13,B=_e+H|0,he^=B<<18|B>>>32-18,B=ae+te|0,pe^=B<<7|B>>>32-7,B=pe+ae|0,re^=B<<9|B>>>32-9,B=re+pe|0,te^=B<<13|B>>>32-13,B=te+re|0,ae^=B<<18|B>>>32-18,B=Qe+je|0,Be^=B<<7|B>>>32-7,B=Be+Qe|0,Le^=B<<9|B>>>32-9,B=Le+Be|0,je^=B<<13|B>>>32-13,B=je+Le|0,Qe^=B<<18|B>>>32-18;xe=xe+N|0,Ce=Ce+P|0,ve=ve+F|0,Ae=Ae+K|0,_e=_e+W|0,he=he+ge|0,j=j+ue|0,H=H+Fe|0,re=re+me|0,te=te+De|0,ae=ae+Me|0,pe=pe+qe|0,Be=Be+Te|0,Le=Le+Oe|0,je=je+Ue|0,Qe=Qe+Pe|0,h[0]=xe>>>0&255,h[1]=xe>>>8&255,h[2]=xe>>>16&255,h[3]=xe>>>24&255,h[4]=Ce>>>0&255,h[5]=Ce>>>8&255,h[6]=Ce>>>16&255,h[7]=Ce>>>24&255,h[8]=ve>>>0&255,h[9]=ve>>>8&255,h[10]=ve>>>16&255,h[11]=ve>>>24&255,h[12]=Ae>>>0&255,h[13]=Ae>>>8&255,h[14]=Ae>>>16&255,h[15]=Ae>>>24&255,h[16]=_e>>>0&255,h[17]=_e>>>8&255,h[18]=_e>>>16&255,h[19]=_e>>>24&255,h[20]=he>>>0&255,h[21]=he>>>8&255,h[22]=he>>>16&255,h[23]=he>>>24&255,h[24]=j>>>0&255,h[25]=j>>>8&255,h[26]=j>>>16&255,h[27]=j>>>24&255,h[28]=H>>>0&255,h[29]=H>>>8&255,h[30]=H>>>16&255,h[31]=H>>>24&255,h[32]=re>>>0&255,h[33]=re>>>8&255,h[34]=re>>>16&255,h[35]=re>>>24&255,h[36]=te>>>0&255,h[37]=te>>>8&255,h[38]=te>>>16&255,h[39]=te>>>24&255,h[40]=ae>>>0&255,h[41]=ae>>>8&255,h[42]=ae>>>16&255,h[43]=ae>>>24&255,h[44]=pe>>>0&255,h[45]=pe>>>8&255,h[46]=pe>>>16&255,h[47]=pe>>>24&255,h[48]=Be>>>0&255,h[49]=Be>>>8&255,h[50]=Be>>>16&255,h[51]=Be>>>24&255,h[52]=Le>>>0&255,h[53]=Le>>>8&255,h[54]=Le>>>16&255,h[55]=Le>>>24&255,h[56]=je>>>0&255,h[57]=je>>>8&255,h[58]=je>>>16&255,h[59]=je>>>24&255,h[60]=Qe>>>0&255,h[61]=Qe>>>8&255,h[62]=Qe>>>16&255,h[63]=Qe>>>24&255}function fe(h,_,A,o){for(var N=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,P=A[0]&255|(A[1]&255)<<8|(A[2]&255)<<16|(A[3]&255)<<24,F=A[4]&255|(A[5]&255)<<8|(A[6]&255)<<16|(A[7]&255)<<24,K=A[8]&255|(A[9]&255)<<8|(A[10]&255)<<16|(A[11]&255)<<24,W=A[12]&255|(A[13]&255)<<8|(A[14]&255)<<16|(A[15]&255)<<24,ge=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,ue=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,Fe=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,me=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,De=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,Me=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,qe=A[16]&255|(A[17]&255)<<8|(A[18]&255)<<16|(A[19]&255)<<24,Te=A[20]&255|(A[21]&255)<<8|(A[22]&255)<<16|(A[23]&255)<<24,Oe=A[24]&255|(A[25]&255)<<8|(A[26]&255)<<16|(A[27]&255)<<24,Ue=A[28]&255|(A[29]&255)<<8|(A[30]&255)<<16|(A[31]&255)<<24,Pe=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,xe=N,Ce=P,ve=F,Ae=K,_e=W,he=ge,j=ue,H=Fe,re=me,te=De,ae=Me,pe=qe,Be=Te,Le=Oe,je=Ue,Qe=Pe,B,ze=0;ze<20;ze+=2)B=xe+Be|0,_e^=B<<7|B>>>32-7,B=_e+xe|0,re^=B<<9|B>>>32-9,B=re+_e|0,Be^=B<<13|B>>>32-13,B=Be+re|0,xe^=B<<18|B>>>32-18,B=he+Ce|0,te^=B<<7|B>>>32-7,B=te+he|0,Le^=B<<9|B>>>32-9,B=Le+te|0,Ce^=B<<13|B>>>32-13,B=Ce+Le|0,he^=B<<18|B>>>32-18,B=ae+j|0,je^=B<<7|B>>>32-7,B=je+ae|0,ve^=B<<9|B>>>32-9,B=ve+je|0,j^=B<<13|B>>>32-13,B=j+ve|0,ae^=B<<18|B>>>32-18,B=Qe+pe|0,Ae^=B<<7|B>>>32-7,B=Ae+Qe|0,H^=B<<9|B>>>32-9,B=H+Ae|0,pe^=B<<13|B>>>32-13,B=pe+H|0,Qe^=B<<18|B>>>32-18,B=xe+Ae|0,Ce^=B<<7|B>>>32-7,B=Ce+xe|0,ve^=B<<9|B>>>32-9,B=ve+Ce|0,Ae^=B<<13|B>>>32-13,B=Ae+ve|0,xe^=B<<18|B>>>32-18,B=he+_e|0,j^=B<<7|B>>>32-7,B=j+he|0,H^=B<<9|B>>>32-9,B=H+j|0,_e^=B<<13|B>>>32-13,B=_e+H|0,he^=B<<18|B>>>32-18,B=ae+te|0,pe^=B<<7|B>>>32-7,B=pe+ae|0,re^=B<<9|B>>>32-9,B=re+pe|0,te^=B<<13|B>>>32-13,B=te+re|0,ae^=B<<18|B>>>32-18,B=Qe+je|0,Be^=B<<7|B>>>32-7,B=Be+Qe|0,Le^=B<<9|B>>>32-9,B=Le+Be|0,je^=B<<13|B>>>32-13,B=je+Le|0,Qe^=B<<18|B>>>32-18;h[0]=xe>>>0&255,h[1]=xe>>>8&255,h[2]=xe>>>16&255,h[3]=xe>>>24&255,h[4]=he>>>0&255,h[5]=he>>>8&255,h[6]=he>>>16&255,h[7]=he>>>24&255,h[8]=ae>>>0&255,h[9]=ae>>>8&255,h[10]=ae>>>16&255,h[11]=ae>>>24&255,h[12]=Qe>>>0&255,h[13]=Qe>>>8&255,h[14]=Qe>>>16&255,h[15]=Qe>>>24&255,h[16]=j>>>0&255,h[17]=j>>>8&255,h[18]=j>>>16&255,h[19]=j>>>24&255,h[20]=H>>>0&255,h[21]=H>>>8&255,h[22]=H>>>16&255,h[23]=H>>>24&255,h[24]=re>>>0&255,h[25]=re>>>8&255,h[26]=re>>>16&255,h[27]=re>>>24&255,h[28]=te>>>0&255,h[29]=te>>>8&255,h[30]=te>>>16&255,h[31]=te>>>24&255}function oe(h,_,A,o){J(h,_,A,o)}function ye(h,_,A,o){fe(h,_,A,o)}var Ie=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function we(h,_,A,o,N,P,F){var K=new Uint8Array(16),W=new Uint8Array(64),ge,ue;for(ue=0;ue<16;ue++)K[ue]=0;for(ue=0;ue<8;ue++)K[ue]=P[ue];for(;N>=64;){for(oe(W,K,F,Ie),ue=0;ue<64;ue++)h[_+ue]=A[o+ue]^W[ue];for(ge=1,ue=8;ue<16;ue++)ge=ge+(K[ue]&255)|0,K[ue]=ge&255,ge>>>=8;N-=64,_+=64,o+=64}if(N>0)for(oe(W,K,F,Ie),ue=0;ue=64;){for(oe(F,P,N,Ie),W=0;W<64;W++)h[_+W]=F[W];for(K=1,W=8;W<16;W++)K=K+(P[W]&255)|0,P[W]=K&255,K>>>=8;A-=64,_+=64}if(A>0)for(oe(F,P,N,Ie),W=0;W>>13|A<<3)&8191,o=h[4]&255|(h[5]&255)<<8,this.r[2]=(A>>>10|o<<6)&7939,N=h[6]&255|(h[7]&255)<<8,this.r[3]=(o>>>7|N<<9)&8191,P=h[8]&255|(h[9]&255)<<8,this.r[4]=(N>>>4|P<<12)&255,this.r[5]=P>>>1&8190,F=h[10]&255|(h[11]&255)<<8,this.r[6]=(P>>>14|F<<2)&8191,K=h[12]&255|(h[13]&255)<<8,this.r[7]=(F>>>11|K<<5)&8065,W=h[14]&255|(h[15]&255)<<8,this.r[8]=(K>>>8|W<<8)&8191,this.r[9]=W>>>5&127,this.pad[0]=h[16]&255|(h[17]&255)<<8,this.pad[1]=h[18]&255|(h[19]&255)<<8,this.pad[2]=h[20]&255|(h[21]&255)<<8,this.pad[3]=h[22]&255|(h[23]&255)<<8,this.pad[4]=h[24]&255|(h[25]&255)<<8,this.pad[5]=h[26]&255|(h[27]&255)<<8,this.pad[6]=h[28]&255|(h[29]&255)<<8,this.pad[7]=h[30]&255|(h[31]&255)<<8};w.prototype.blocks=function(h,_,A){for(var o=this.fin?0:2048,N,P,F,K,W,ge,ue,Fe,me,De,Me,qe,Te,Oe,Ue,Pe,xe,Ce,ve,Ae=this.h[0],_e=this.h[1],he=this.h[2],j=this.h[3],H=this.h[4],re=this.h[5],te=this.h[6],ae=this.h[7],pe=this.h[8],Be=this.h[9],Le=this.r[0],je=this.r[1],Qe=this.r[2],B=this.r[3],ze=this.r[4],a1=this.r[5],r1=this.r[6],He=this.r[7],Xe=this.r[8],Ze=this.r[9];A>=16;)N=h[_+0]&255|(h[_+1]&255)<<8,Ae+=N&8191,P=h[_+2]&255|(h[_+3]&255)<<8,_e+=(N>>>13|P<<3)&8191,F=h[_+4]&255|(h[_+5]&255)<<8,he+=(P>>>10|F<<6)&8191,K=h[_+6]&255|(h[_+7]&255)<<8,j+=(F>>>7|K<<9)&8191,W=h[_+8]&255|(h[_+9]&255)<<8,H+=(K>>>4|W<<12)&8191,re+=W>>>1&8191,ge=h[_+10]&255|(h[_+11]&255)<<8,te+=(W>>>14|ge<<2)&8191,ue=h[_+12]&255|(h[_+13]&255)<<8,ae+=(ge>>>11|ue<<5)&8191,Fe=h[_+14]&255|(h[_+15]&255)<<8,pe+=(ue>>>8|Fe<<8)&8191,Be+=Fe>>>5|o,me=0,De=me,De+=Ae*Le,De+=_e*(5*Ze),De+=he*(5*Xe),De+=j*(5*He),De+=H*(5*r1),me=De>>>13,De&=8191,De+=re*(5*a1),De+=te*(5*ze),De+=ae*(5*B),De+=pe*(5*Qe),De+=Be*(5*je),me+=De>>>13,De&=8191,Me=me,Me+=Ae*je,Me+=_e*Le,Me+=he*(5*Ze),Me+=j*(5*Xe),Me+=H*(5*He),me=Me>>>13,Me&=8191,Me+=re*(5*r1),Me+=te*(5*a1),Me+=ae*(5*ze),Me+=pe*(5*B),Me+=Be*(5*Qe),me+=Me>>>13,Me&=8191,qe=me,qe+=Ae*Qe,qe+=_e*je,qe+=he*Le,qe+=j*(5*Ze),qe+=H*(5*Xe),me=qe>>>13,qe&=8191,qe+=re*(5*He),qe+=te*(5*r1),qe+=ae*(5*a1),qe+=pe*(5*ze),qe+=Be*(5*B),me+=qe>>>13,qe&=8191,Te=me,Te+=Ae*B,Te+=_e*Qe,Te+=he*je,Te+=j*Le,Te+=H*(5*Ze),me=Te>>>13,Te&=8191,Te+=re*(5*Xe),Te+=te*(5*He),Te+=ae*(5*r1),Te+=pe*(5*a1),Te+=Be*(5*ze),me+=Te>>>13,Te&=8191,Oe=me,Oe+=Ae*ze,Oe+=_e*B,Oe+=he*Qe,Oe+=j*je,Oe+=H*Le,me=Oe>>>13,Oe&=8191,Oe+=re*(5*Ze),Oe+=te*(5*Xe),Oe+=ae*(5*He),Oe+=pe*(5*r1),Oe+=Be*(5*a1),me+=Oe>>>13,Oe&=8191,Ue=me,Ue+=Ae*a1,Ue+=_e*ze,Ue+=he*B,Ue+=j*Qe,Ue+=H*je,me=Ue>>>13,Ue&=8191,Ue+=re*Le,Ue+=te*(5*Ze),Ue+=ae*(5*Xe),Ue+=pe*(5*He),Ue+=Be*(5*r1),me+=Ue>>>13,Ue&=8191,Pe=me,Pe+=Ae*r1,Pe+=_e*a1,Pe+=he*ze,Pe+=j*B,Pe+=H*Qe,me=Pe>>>13,Pe&=8191,Pe+=re*je,Pe+=te*Le,Pe+=ae*(5*Ze),Pe+=pe*(5*Xe),Pe+=Be*(5*He),me+=Pe>>>13,Pe&=8191,xe=me,xe+=Ae*He,xe+=_e*r1,xe+=he*a1,xe+=j*ze,xe+=H*B,me=xe>>>13,xe&=8191,xe+=re*Qe,xe+=te*je,xe+=ae*Le,xe+=pe*(5*Ze),xe+=Be*(5*Xe),me+=xe>>>13,xe&=8191,Ce=me,Ce+=Ae*Xe,Ce+=_e*He,Ce+=he*r1,Ce+=j*a1,Ce+=H*ze,me=Ce>>>13,Ce&=8191,Ce+=re*B,Ce+=te*Qe,Ce+=ae*je,Ce+=pe*Le,Ce+=Be*(5*Ze),me+=Ce>>>13,Ce&=8191,ve=me,ve+=Ae*Ze,ve+=_e*Xe,ve+=he*He,ve+=j*r1,ve+=H*a1,me=ve>>>13,ve&=8191,ve+=re*ze,ve+=te*B,ve+=ae*Qe,ve+=pe*je,ve+=Be*Le,me+=ve>>>13,ve&=8191,me=(me<<2)+me|0,me=me+De|0,De=me&8191,me=me>>>13,Me+=me,Ae=De,_e=Me,he=qe,j=Te,H=Oe,re=Ue,te=Pe,ae=xe,pe=Ce,Be=ve,_+=16,A-=16;this.h[0]=Ae,this.h[1]=_e,this.h[2]=he,this.h[3]=j,this.h[4]=H,this.h[5]=re,this.h[6]=te,this.h[7]=ae,this.h[8]=pe,this.h[9]=Be},w.prototype.finish=function(h,_){var A=new Uint16Array(10),o,N,P,F;if(this.leftover){for(F=this.leftover,this.buffer[F++]=1;F<16;F++)this.buffer[F]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(o=this.h[1]>>>13,this.h[1]&=8191,F=2;F<10;F++)this.h[F]+=o,o=this.h[F]>>>13,this.h[F]&=8191;for(this.h[0]+=o*5,o=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=o,o=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=o,A[0]=this.h[0]+5,o=A[0]>>>13,A[0]&=8191,F=1;F<10;F++)A[F]=this.h[F]+o,o=A[F]>>>13,A[F]&=8191;for(A[9]-=1<<13,N=(o^1)-1,F=0;F<10;F++)A[F]&=N;for(N=~N,F=0;F<10;F++)this.h[F]=this.h[F]&N|A[F];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,P=this.h[0]+this.pad[0],this.h[0]=P&65535,F=1;F<8;F++)P=(this.h[F]+this.pad[F]|0)+(P>>>16)|0,this.h[F]=P&65535;h[_+0]=this.h[0]>>>0&255,h[_+1]=this.h[0]>>>8&255,h[_+2]=this.h[1]>>>0&255,h[_+3]=this.h[1]>>>8&255,h[_+4]=this.h[2]>>>0&255,h[_+5]=this.h[2]>>>8&255,h[_+6]=this.h[3]>>>0&255,h[_+7]=this.h[3]>>>8&255,h[_+8]=this.h[4]>>>0&255,h[_+9]=this.h[4]>>>8&255,h[_+10]=this.h[5]>>>0&255,h[_+11]=this.h[5]>>>8&255,h[_+12]=this.h[6]>>>0&255,h[_+13]=this.h[6]>>>8&255,h[_+14]=this.h[7]>>>0&255,h[_+15]=this.h[7]>>>8&255},w.prototype.update=function(h,_,A){var o,N;if(this.leftover){for(N=16-this.leftover,N>A&&(N=A),o=0;o=16&&(N=A-A%16,this.blocks(h,_,N),_+=N,A-=N),A){for(o=0;o>16&1),P[A-1]&=65535;P[15]=F[15]-32767-(P[14]>>16&1),N=P[15]>>16&1,P[14]&=65535,U(F,P,1-N)}for(A=0;A<16;A++)h[2*A]=F[A]&255,h[2*A+1]=F[A]>>8}function u(h,_){var A=new Uint8Array(32),o=new Uint8Array(32);return M(A,h),M(o,_),G(A,0,o,0)}function D(h){var _=new Uint8Array(32);return M(_,h),_[0]&1}function se(h,_){var A;for(A=0;A<16;A++)h[A]=_[2*A]+(_[2*A+1]<<8);h[15]&=32767}function X(h,_,A){for(var o=0;o<16;o++)h[o]=_[o]+A[o]}function ne(h,_,A){for(var o=0;o<16;o++)h[o]=_[o]-A[o]}function Z(h,_,A){var o,N,P=0,F=0,K=0,W=0,ge=0,ue=0,Fe=0,me=0,De=0,Me=0,qe=0,Te=0,Oe=0,Ue=0,Pe=0,xe=0,Ce=0,ve=0,Ae=0,_e=0,he=0,j=0,H=0,re=0,te=0,ae=0,pe=0,Be=0,Le=0,je=0,Qe=0,B=A[0],ze=A[1],a1=A[2],r1=A[3],He=A[4],Xe=A[5],Ze=A[6],L1=A[7],y1=A[8],q1=A[9],O1=A[10],P1=A[11],H1=A[12],dt=A[13],pt=A[14],nt=A[15];o=_[0],P+=o*B,F+=o*ze,K+=o*a1,W+=o*r1,ge+=o*He,ue+=o*Xe,Fe+=o*Ze,me+=o*L1,De+=o*y1,Me+=o*q1,qe+=o*O1,Te+=o*P1,Oe+=o*H1,Ue+=o*dt,Pe+=o*pt,xe+=o*nt,o=_[1],F+=o*B,K+=o*ze,W+=o*a1,ge+=o*r1,ue+=o*He,Fe+=o*Xe,me+=o*Ze,De+=o*L1,Me+=o*y1,qe+=o*q1,Te+=o*O1,Oe+=o*P1,Ue+=o*H1,Pe+=o*dt,xe+=o*pt,Ce+=o*nt,o=_[2],K+=o*B,W+=o*ze,ge+=o*a1,ue+=o*r1,Fe+=o*He,me+=o*Xe,De+=o*Ze,Me+=o*L1,qe+=o*y1,Te+=o*q1,Oe+=o*O1,Ue+=o*P1,Pe+=o*H1,xe+=o*dt,Ce+=o*pt,ve+=o*nt,o=_[3],W+=o*B,ge+=o*ze,ue+=o*a1,Fe+=o*r1,me+=o*He,De+=o*Xe,Me+=o*Ze,qe+=o*L1,Te+=o*y1,Oe+=o*q1,Ue+=o*O1,Pe+=o*P1,xe+=o*H1,Ce+=o*dt,ve+=o*pt,Ae+=o*nt,o=_[4],ge+=o*B,ue+=o*ze,Fe+=o*a1,me+=o*r1,De+=o*He,Me+=o*Xe,qe+=o*Ze,Te+=o*L1,Oe+=o*y1,Ue+=o*q1,Pe+=o*O1,xe+=o*P1,Ce+=o*H1,ve+=o*dt,Ae+=o*pt,_e+=o*nt,o=_[5],ue+=o*B,Fe+=o*ze,me+=o*a1,De+=o*r1,Me+=o*He,qe+=o*Xe,Te+=o*Ze,Oe+=o*L1,Ue+=o*y1,Pe+=o*q1,xe+=o*O1,Ce+=o*P1,ve+=o*H1,Ae+=o*dt,_e+=o*pt,he+=o*nt,o=_[6],Fe+=o*B,me+=o*ze,De+=o*a1,Me+=o*r1,qe+=o*He,Te+=o*Xe,Oe+=o*Ze,Ue+=o*L1,Pe+=o*y1,xe+=o*q1,Ce+=o*O1,ve+=o*P1,Ae+=o*H1,_e+=o*dt,he+=o*pt,j+=o*nt,o=_[7],me+=o*B,De+=o*ze,Me+=o*a1,qe+=o*r1,Te+=o*He,Oe+=o*Xe,Ue+=o*Ze,Pe+=o*L1,xe+=o*y1,Ce+=o*q1,ve+=o*O1,Ae+=o*P1,_e+=o*H1,he+=o*dt,j+=o*pt,H+=o*nt,o=_[8],De+=o*B,Me+=o*ze,qe+=o*a1,Te+=o*r1,Oe+=o*He,Ue+=o*Xe,Pe+=o*Ze,xe+=o*L1,Ce+=o*y1,ve+=o*q1,Ae+=o*O1,_e+=o*P1,he+=o*H1,j+=o*dt,H+=o*pt,re+=o*nt,o=_[9],Me+=o*B,qe+=o*ze,Te+=o*a1,Oe+=o*r1,Ue+=o*He,Pe+=o*Xe,xe+=o*Ze,Ce+=o*L1,ve+=o*y1,Ae+=o*q1,_e+=o*O1,he+=o*P1,j+=o*H1,H+=o*dt,re+=o*pt,te+=o*nt,o=_[10],qe+=o*B,Te+=o*ze,Oe+=o*a1,Ue+=o*r1,Pe+=o*He,xe+=o*Xe,Ce+=o*Ze,ve+=o*L1,Ae+=o*y1,_e+=o*q1,he+=o*O1,j+=o*P1,H+=o*H1,re+=o*dt,te+=o*pt,ae+=o*nt,o=_[11],Te+=o*B,Oe+=o*ze,Ue+=o*a1,Pe+=o*r1,xe+=o*He,Ce+=o*Xe,ve+=o*Ze,Ae+=o*L1,_e+=o*y1,he+=o*q1,j+=o*O1,H+=o*P1,re+=o*H1,te+=o*dt,ae+=o*pt,pe+=o*nt,o=_[12],Oe+=o*B,Ue+=o*ze,Pe+=o*a1,xe+=o*r1,Ce+=o*He,ve+=o*Xe,Ae+=o*Ze,_e+=o*L1,he+=o*y1,j+=o*q1,H+=o*O1,re+=o*P1,te+=o*H1,ae+=o*dt,pe+=o*pt,Be+=o*nt,o=_[13],Ue+=o*B,Pe+=o*ze,xe+=o*a1,Ce+=o*r1,ve+=o*He,Ae+=o*Xe,_e+=o*Ze,he+=o*L1,j+=o*y1,H+=o*q1,re+=o*O1,te+=o*P1,ae+=o*H1,pe+=o*dt,Be+=o*pt,Le+=o*nt,o=_[14],Pe+=o*B,xe+=o*ze,Ce+=o*a1,ve+=o*r1,Ae+=o*He,_e+=o*Xe,he+=o*Ze,j+=o*L1,H+=o*y1,re+=o*q1,te+=o*O1,ae+=o*P1,pe+=o*H1,Be+=o*dt,Le+=o*pt,je+=o*nt,o=_[15],xe+=o*B,Ce+=o*ze,ve+=o*a1,Ae+=o*r1,_e+=o*He,he+=o*Xe,j+=o*Ze,H+=o*L1,re+=o*y1,te+=o*q1,ae+=o*O1,pe+=o*P1,Be+=o*H1,Le+=o*dt,je+=o*pt,Qe+=o*nt,P+=38*Ce,F+=38*ve,K+=38*Ae,W+=38*_e,ge+=38*he,ue+=38*j,Fe+=38*H,me+=38*re,De+=38*te,Me+=38*ae,qe+=38*pe,Te+=38*Be,Oe+=38*Le,Ue+=38*je,Pe+=38*Qe,N=1,o=P+N+65535,N=Math.floor(o/65536),P=o-N*65536,o=F+N+65535,N=Math.floor(o/65536),F=o-N*65536,o=K+N+65535,N=Math.floor(o/65536),K=o-N*65536,o=W+N+65535,N=Math.floor(o/65536),W=o-N*65536,o=ge+N+65535,N=Math.floor(o/65536),ge=o-N*65536,o=ue+N+65535,N=Math.floor(o/65536),ue=o-N*65536,o=Fe+N+65535,N=Math.floor(o/65536),Fe=o-N*65536,o=me+N+65535,N=Math.floor(o/65536),me=o-N*65536,o=De+N+65535,N=Math.floor(o/65536),De=o-N*65536,o=Me+N+65535,N=Math.floor(o/65536),Me=o-N*65536,o=qe+N+65535,N=Math.floor(o/65536),qe=o-N*65536,o=Te+N+65535,N=Math.floor(o/65536),Te=o-N*65536,o=Oe+N+65535,N=Math.floor(o/65536),Oe=o-N*65536,o=Ue+N+65535,N=Math.floor(o/65536),Ue=o-N*65536,o=Pe+N+65535,N=Math.floor(o/65536),Pe=o-N*65536,o=xe+N+65535,N=Math.floor(o/65536),xe=o-N*65536,P+=N-1+37*(N-1),N=1,o=P+N+65535,N=Math.floor(o/65536),P=o-N*65536,o=F+N+65535,N=Math.floor(o/65536),F=o-N*65536,o=K+N+65535,N=Math.floor(o/65536),K=o-N*65536,o=W+N+65535,N=Math.floor(o/65536),W=o-N*65536,o=ge+N+65535,N=Math.floor(o/65536),ge=o-N*65536,o=ue+N+65535,N=Math.floor(o/65536),ue=o-N*65536,o=Fe+N+65535,N=Math.floor(o/65536),Fe=o-N*65536,o=me+N+65535,N=Math.floor(o/65536),me=o-N*65536,o=De+N+65535,N=Math.floor(o/65536),De=o-N*65536,o=Me+N+65535,N=Math.floor(o/65536),Me=o-N*65536,o=qe+N+65535,N=Math.floor(o/65536),qe=o-N*65536,o=Te+N+65535,N=Math.floor(o/65536),Te=o-N*65536,o=Oe+N+65535,N=Math.floor(o/65536),Oe=o-N*65536,o=Ue+N+65535,N=Math.floor(o/65536),Ue=o-N*65536,o=Pe+N+65535,N=Math.floor(o/65536),Pe=o-N*65536,o=xe+N+65535,N=Math.floor(o/65536),xe=o-N*65536,P+=N-1+37*(N-1),h[0]=P,h[1]=F,h[2]=K,h[3]=W,h[4]=ge,h[5]=ue,h[6]=Fe,h[7]=me,h[8]=De,h[9]=Me,h[10]=qe,h[11]=Te,h[12]=Oe,h[13]=Ue,h[14]=Pe,h[15]=xe}function g(h,_){Z(h,_,_)}function Q(h,_){var A=e(),o;for(o=0;o<16;o++)A[o]=_[o];for(o=253;o>=0;o--)g(A,A),o!==2&&o!==4&&Z(A,A,_);for(o=0;o<16;o++)h[o]=A[o]}function $(h,_){var A=e(),o;for(o=0;o<16;o++)A[o]=_[o];for(o=250;o>=0;o--)g(A,A),o!==1&&Z(A,A,_);for(o=0;o<16;o++)h[o]=A[o]}function k(h,_,A){var o=new Uint8Array(32),N=new Float64Array(80),P,F,K=e(),W=e(),ge=e(),ue=e(),Fe=e(),me=e();for(F=0;F<31;F++)o[F]=_[F];for(o[31]=_[31]&127|64,o[0]&=248,se(N,A),F=0;F<16;F++)W[F]=N[F],ue[F]=K[F]=ge[F]=0;for(K[0]=ue[0]=1,F=254;F>=0;--F)P=o[F>>>3]>>>(F&7)&1,U(K,W,P),U(ge,ue,P),X(Fe,K,ge),ne(K,K,ge),X(ge,W,ue),ne(W,W,ue),g(ue,Fe),g(me,K),Z(K,ge,K),Z(ge,W,Fe),X(Fe,K,ge),ne(K,K,ge),g(W,K),ne(ge,ue,me),Z(K,ge,s),X(K,K,ue),Z(ge,ge,K),Z(K,ue,me),Z(ue,W,N),g(W,Fe),U(K,W,P),U(ge,ue,P);for(F=0;F<16;F++)N[F+16]=K[F],N[F+32]=ge[F],N[F+48]=W[F],N[F+64]=ue[F];var De=N.subarray(32),Me=N.subarray(16);return Q(De,De),Z(Me,Me,De),M(h,Me),0}function ee(h,_){return k(h,_,i)}function ce(h,_){return a(_,32),ee(h,_)}function ie(h,_,A){var o=new Uint8Array(32);return k(o,A,_),ye(h,r,o,Ie)}var de=m,Re=b;function le(h,_,A,o,N,P){var F=new Uint8Array(32);return ie(F,N,P),de(h,_,A,o,F)}function Ee(h,_,A,o,N,P){var F=new Uint8Array(32);return ie(F,N,P),Re(h,_,A,o,F)}var sa=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function w1(h,_,A,o){for(var N=new Int32Array(16),P=new Int32Array(16),F,K,W,ge,ue,Fe,me,De,Me,qe,Te,Oe,Ue,Pe,xe,Ce,ve,Ae,_e,he,j,H,re,te,ae,pe,Be=h[0],Le=h[1],je=h[2],Qe=h[3],B=h[4],ze=h[5],a1=h[6],r1=h[7],He=_[0],Xe=_[1],Ze=_[2],L1=_[3],y1=_[4],q1=_[5],O1=_[6],P1=_[7],H1=0;o>=128;){for(_e=0;_e<16;_e++)he=8*_e+H1,N[_e]=A[he+0]<<24|A[he+1]<<16|A[he+2]<<8|A[he+3],P[_e]=A[he+4]<<24|A[he+5]<<16|A[he+6]<<8|A[he+7];for(_e=0;_e<80;_e++)if(F=Be,K=Le,W=je,ge=Qe,ue=B,Fe=ze,me=a1,De=r1,Me=He,qe=Xe,Te=Ze,Oe=L1,Ue=y1,Pe=q1,xe=O1,Ce=P1,j=r1,H=P1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=(B>>>14|y1<<32-14)^(B>>>18|y1<<32-18)^(y1>>>41-32|B<<32-(41-32)),H=(y1>>>14|B<<32-14)^(y1>>>18|B<<32-18)^(B>>>41-32|y1<<32-(41-32)),re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,j=B&ze^~B&a1,H=y1&q1^~y1&O1,re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,j=sa[_e*2],H=sa[_e*2+1],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,j=N[_e%16],H=P[_e%16],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,ve=ae&65535|pe<<16,Ae=re&65535|te<<16,j=ve,H=Ae,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=(Be>>>28|He<<32-28)^(He>>>34-32|Be<<32-(34-32))^(He>>>39-32|Be<<32-(39-32)),H=(He>>>28|Be<<32-28)^(Be>>>34-32|He<<32-(34-32))^(Be>>>39-32|He<<32-(39-32)),re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,j=Be&Le^Be&je^Le&je,H=He&Xe^He&Ze^Xe&Ze,re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,De=ae&65535|pe<<16,Ce=re&65535|te<<16,j=ge,H=Oe,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=ve,H=Ae,re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,ge=ae&65535|pe<<16,Oe=re&65535|te<<16,Le=F,je=K,Qe=W,B=ge,ze=ue,a1=Fe,r1=me,Be=De,Xe=Me,Ze=qe,L1=Te,y1=Oe,q1=Ue,O1=Pe,P1=xe,He=Ce,_e%16===15)for(he=0;he<16;he++)j=N[he],H=P[he],re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=N[(he+9)%16],H=P[(he+9)%16],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,ve=N[(he+1)%16],Ae=P[(he+1)%16],j=(ve>>>1|Ae<<32-1)^(ve>>>8|Ae<<32-8)^ve>>>7,H=(Ae>>>1|ve<<32-1)^(Ae>>>8|ve<<32-8)^(Ae>>>7|ve<<32-7),re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,ve=N[(he+14)%16],Ae=P[(he+14)%16],j=(ve>>>19|Ae<<32-19)^(Ae>>>61-32|ve<<32-(61-32))^ve>>>6,H=(Ae>>>19|ve<<32-19)^(ve>>>61-32|Ae<<32-(61-32))^(Ae>>>6|ve<<32-6),re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,N[he]=ae&65535|pe<<16,P[he]=re&65535|te<<16;j=Be,H=He,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[0],H=_[0],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[0]=Be=ae&65535|pe<<16,_[0]=He=re&65535|te<<16,j=Le,H=Xe,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[1],H=_[1],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[1]=Le=ae&65535|pe<<16,_[1]=Xe=re&65535|te<<16,j=je,H=Ze,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[2],H=_[2],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[2]=je=ae&65535|pe<<16,_[2]=Ze=re&65535|te<<16,j=Qe,H=L1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[3],H=_[3],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[3]=Qe=ae&65535|pe<<16,_[3]=L1=re&65535|te<<16,j=B,H=y1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[4],H=_[4],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[4]=B=ae&65535|pe<<16,_[4]=y1=re&65535|te<<16,j=ze,H=q1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[5],H=_[5],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[5]=ze=ae&65535|pe<<16,_[5]=q1=re&65535|te<<16,j=a1,H=O1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[6],H=_[6],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[6]=a1=ae&65535|pe<<16,_[6]=O1=re&65535|te<<16,j=r1,H=P1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[7],H=_[7],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[7]=r1=ae&65535|pe<<16,_[7]=P1=re&65535|te<<16,H1+=128,o-=128}return o}function e1(h,_,A){var o=new Int32Array(8),N=new Int32Array(8),P=new Uint8Array(256),F,K=A;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,N[0]=4089235720,N[1]=2227873595,N[2]=4271175723,N[3]=1595750129,N[4]=2917565137,N[5]=725511199,N[6]=4215389547,N[7]=327033209,w1(o,N,_,A),A%=128,F=0;F=0;--N)o=A[N/8|0]>>(N&7)&1,A1(h,_,o),Bt(_,h),Bt(h,h),A1(h,_,o)}function o1(h,_){var A=[e(),e(),e(),e()];E(A[0],I),E(A[1],S),E(A[2],n),Z(A[3],I,S),jt(h,A,_)}function c1(h,_,A){var o=new Uint8Array(64),N=[e(),e(),e(),e()],P;for(A||a(_,32),e1(o,_,32),o[0]&=248,o[31]&=127,o[31]|=64,o1(N,o),u1(h,N),P=0;P<32;P++)_[P+32]=h[P];return 0}var qt=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function h1(h,_){var A,o,N,P;for(o=63;o>=32;--o){for(A=0,N=o-32,P=o-12;N>4)*qt[N],A=_[N]>>8,_[N]&=255;for(N=0;N<32;N++)_[N]-=A*qt[N];for(o=0;o<32;o++)_[o+1]+=_[o]>>8,h[o]=_[o]&255}function m1(h){var _=new Float64Array(64),A;for(A=0;A<64;A++)_[A]=h[A];for(A=0;A<64;A++)h[A]=0;h1(h,_)}function oa(h,_,A,o){var N=new Uint8Array(64),P=new Uint8Array(64),F=new Uint8Array(64),K,W,ge=new Float64Array(64),ue=[e(),e(),e(),e()];e1(N,o,32),N[0]&=248,N[31]&=127,N[31]|=64;var Fe=A+64;for(K=0;K>7&&ne(h[0],d,h[0]),Z(h[3],h[0],h[1]),0)}function v1(h,_,A,o){var N,P=new Uint8Array(32),F=new Uint8Array(64),K=[e(),e(),e(),e()],W=[e(),e(),e(),e()];if(A<64||E1(W,o))return-1;for(N=0;N=0},t.sign.keyPair=function(){var h=new Uint8Array(t1),_=new Uint8Array(i1);return c1(h,_),{publicKey:h,secretKey:_}},t.sign.keyPair.fromSecretKey=function(h){if(Ke(h),h.length!==i1)throw new Error("bad secret key size");for(var _=new Uint8Array(t1),A=0;A<_.length;A++)_[A]=h[32+A];return{publicKey:_,secretKey:new Uint8Array(h)}},t.sign.keyPair.fromSeed=function(h){if(Ke(h),h.length!==Kt)throw new Error("bad seed size");for(var _=new Uint8Array(t1),A=new Uint8Array(i1),o=0;o<32;o++)A[o]=h[o];return c1(_,A,!0),{publicKey:_,secretKey:A}},t.sign.publicKeyLength=t1,t.sign.secretKeyLength=i1,t.sign.seedLength=Kt,t.sign.signatureLength=et,t.hash=function(h){Ke(h);var _=new Uint8Array(g1);return e1(_,h,h.length),_},t.hash.hashLength=g1,t.verify=function(h,_){return Ke(h,_),h.length===0||_.length===0||h.length!==_.length?!1:V(h,0,_,0,h.length)===0},t.setPRNG=function(h){a=h},function(){var h=typeof self<"u"?self.crypto||self.msCrypto:null;if(h&&h.getRandomValues){var _=65536;t.setPRNG(function(A,o){var N,P=new Uint8Array(o);for(N=0;N{l();(function(t,e){"use strict";typeof tp<"u"&&tp.exports?tp.exports=e(Qm()):t.ed2curve=e(t.nacl)})(km,function(t){"use strict";if(!t)throw new Error("tweetnacl not loaded");var e=function(z){var w,p=new Float64Array(16);if(z)for(w=0;w=0;f--)O(p,p),f!==2&&f!==4&&S(p,p,w);for(f=0;f<16;f++)z[f]=p[f]}function V(z,w){var p,f,m,b=e(),E=e();for(p=0;p<16;p++)E[p]=w[p];for(n(E),n(E),n(E),f=0;f<2;f++){for(b[0]=E[0]-65517,p=1;p<15;p++)b[p]=E[p]-65535-(b[p-1]>>16&1),b[p-1]&=65535;b[15]=E[15]-32767-(b[14]>>16&1),m=b[15]>>16&1,b[14]&=65535,s(E,b,1-m)}for(p=0;p<16;p++)z[2*p]=E[p]&255,z[2*p+1]=E[p]>>8}function L(z){var w=new Uint8Array(32);return V(w,z),w[0]&1}function G(z,w,p,f,m){var b,E=0;for(b=0;b>>8)-1}function J(z,w,p,f){return G(z,w,p,f,32)}function fe(z,w){var p=new Uint8Array(32),f=new Uint8Array(32);return V(p,z),V(f,w),J(p,0,f,0)}function oe(z,w){var p=e(),f;for(f=0;f<16;f++)p[f]=w[f];for(f=250;f>=0;f--)O(p,p),f!==1&&S(p,p,w);for(f=0;f<16;f++)z[f]=p[f]}function ye(z,w){var p;for(p=0;p<16;p++)z[p]=w[p]|0}function Ie(z,w){var p=e(),f=e(),m=e(),b=e(),E=e(),q=e(),U=e();return ye(z[2],r),c(z[1],w),O(m,z[1]),S(b,m,i),I(m,m,z[2]),v(b,z[2],b),O(E,b),O(q,E),S(U,q,E),S(p,U,m),S(p,p,b),oe(p,p),S(p,p,m),S(p,p,b),S(p,p,b),S(z[0],p,b),O(f,z[0]),S(f,f,b),fe(f,m)&&S(z[0],z[0],d),O(f,z[0]),S(f,f,b),fe(f,m)?-1:(L(z[0])===w[31]>>7&&I(z[0],a,z[0]),S(z[3],z[0],z[1]),0)}function we(z){var w=new Uint8Array(32),p=[e(),e(),e(),e()],f=e(),m=e();if(Ie(p,z))return null;var b=p[1];return v(f,r,b),I(m,r,b),R(m,m),S(f,f,m),V(w,f),w}function Ne(z){var w=new Uint8Array(64),p=new Uint8Array(32),f;for(t.lowlevel.crypto_hash(w,z,32),w[0]&=248,w[31]&=127,w[31]|=64,f=0;f<32;f++)p[f]=w[f];for(f=0;f<64;f++)w[f]=0;return p}function be(z){var w=we(z.publicKey);return w?{publicKey:w,secretKey:Ne(z.secretKey)}:null}return{convertPublicKey:we,convertSecretKey:Ne,convertKeyPair:be}})});var Wm=T(ls=>{"use strict";l();Object.defineProperty(ls,"__esModule",{value:!0});function RM(t){var e=4,a=t.length,r=a%e;if(!r)return t;var i=a,d=e-r,n=a+d,s=C.alloc(n);for(s.write(t);d--;)s.write("=",i++);return s.toString()}ls.default=RM});var Xm=T(hs=>{"use strict";l();Object.defineProperty(hs,"__esModule",{value:!0});var FM=Wm();function Jm(t,e){return e===void 0&&(e="utf8"),C.isBuffer(t)?us(t.toString("base64")):us(C.from(t,e).toString("base64"))}function LM(t,e){return e===void 0&&(e="utf8"),C.from(cs(t),"base64").toString(e)}function cs(t){return t=t.toString(),FM.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function us(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function QM(t){return C.from(cs(t),"base64")}var Ki=Jm;Ki.encode=Jm;Ki.decode=LM;Ki.toBase64=cs;Ki.fromBase64=us;Ki.toBuffer=QM;hs.default=Ki});var Zm=T((JQ,cp)=>{l();cp.exports=Xm().default;cp.exports.default=cp.exports});l();l();var Ga=la(Dp(),1),Ei=la(g4(),1);var mc={};xs(mc,{concatUint8Arrays:()=>x1,decodeInt32:()=>y4,encodeInt32:()=>wa,encodeInt64:()=>T2,fromBigInt:()=>CC,hexToUint8Array:()=>d1,isHex:()=>We,originPrivateKey:()=>SC,toBigInt:()=>EC,toByteArray:()=>xr,uint8ArrayToHex:()=>S1});l();var hc=[];for(let t=0;t<=255;++t){let e=t.toString(16).padStart(2,"0");hc.push(e)}var SC="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function We(t){return/^([0-9A-Fa-f])*$/.test(t)}function d1(t){return new Uint8Array(t.match(/.{1,2}/g).map(e=>parseInt(e,16)))}function S1(t){let e=new Uint8Array(t),a=new Array(e.length);for(let r=0;rr+i.byteLength,0),{buffer:a}=t.reduce(({buffer:r,pos:i},d)=>(r.set(new Uint8Array(d),i),{buffer:r,pos:i+d.byteLength}),{buffer:new Uint8Array(e),pos:0});return a}function wa(t){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,t,!0),new Uint8Array(e).reverse()}function T2(t){let e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,BigInt(t),!0),new Uint8Array(e).reverse()}function y4(t){let e=0;for(let a=0;a=256;)t=t>>>8,e.unshift(t&255);return e}async function vc(t){let e=new URL("/api",t);return(0,Ga.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { nearestEndpoints { ip, port } - }`})}).then(xr).then(a=>a.errors||a.data.nearestEndpoints==null?[]:a.data.nearestEndpoints)}async function vc(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!We(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=S1(t));let a=new URL("/api",e);return(0,$a.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(wr).then(a=>a.errors||a.data.nearestEndpoints==null?[]:a.data.nearestEndpoints)}async function bc(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!We(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=S1(t));let a=new URL("/api",e);return(0,Ga.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { lastTransaction(address: "${t}") { chainLength } - }`})}).then(xr).then(r=>r.errors||r.data.lastTransaction==null?0:r.data.lastTransaction.chainLength)}async function bc(t){let e=new URL("/api",t);return(0,$a.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(wr).then(r=>r.errors||r.data.lastTransaction==null?0:r.data.lastTransaction.chainLength)}async function gc(t){let e=new URL("/api",t);return(0,Ga.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { sharedSecrets { storageNoncePublicKey } - }`})}).then(xr).then(a=>a.errors||a.data.sharedSecrets==null?"":a.data.sharedSecrets.storageNoncePublicKey)}async function gc(t,e){let a=new URL("/api/transaction_fee",e);return(0,$a.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(xr)}async function yc(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!We(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=S1(t));let a=new URL("/api",e);return(0,$a.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(wr).then(a=>a.errors||a.data.sharedSecrets==null?"":a.data.sharedSecrets.storageNoncePublicKey)}async function yc(t,e){let a=new URL("/api/transaction_fee",e);return(0,Ga.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(wr)}async function xc(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!We(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=S1(t));let a=new URL("/api",e);return(0,Ga.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { transaction(address: "${t}") { data { ownerships { @@ -32,12 +32,12 @@ var Zm=Object.create;var fp=Object.defineProperty;var ev=Object.getOwnPropertyDe } } } - }`})}).then(xr).then(r=>r.errors||r.data==null?[]:r.data.transaction.data.ownerships)}async function xc(t,e){if(typeof t!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"&&!We(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=S1(t));let a=new URL("/api",e);return(0,$a.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(wr).then(r=>r.errors||r.data==null?[]:r.data.transaction.data.ownerships)}async function wc(t,e){if(typeof t!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"&&!We(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=S1(t));let a=new URL("/api",e);return(0,Ga.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { token(address: "${t}") { genesis, name, symbol, supply, type properties, collection, id, decimals } - }`})}).then(xr).then(r=>r.errors||r.data==null?[]:r.data.token)}async function Ac(t,e,a){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof t=="string"&&!We(t))throw"'originPublicKey' must be in hexadecimal form if it's string";if(t instanceof Uint8Array&&(t=S1(t)),typeof e!="string")throw"'certificate' must be a string";let r=new URL("/api/origin_key",a);return(0,$a.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:t,certificate:e})}).then(xr)}async function wc(t,e=void 0){let a;e===void 0?a=`query { + }`})}).then(wr).then(r=>r.errors||r.data==null?[]:r.data.token)}async function Ac(t,e,a){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof t=="string"&&!We(t))throw"'originPublicKey' must be in hexadecimal form if it's string";if(t instanceof Uint8Array&&(t=S1(t)),typeof e!="string")throw"'certificate' must be a string";let r=new URL("/api/origin_key",a);return(0,Ga.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:t,certificate:e})}).then(wr)}async function _c(t,e=void 0){let a;e===void 0?a=`query { oracleData { timestamp, services { @@ -56,7 +56,7 @@ var Zm=Object.create;var fp=Object.defineProperty;var ev=Object.getOwnPropertyDe } } } - }`;let r=new URL("/api",t);return(0,$a.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:a})}).then(xr).then(i=>i.data.oracleData==null?{}:i.data.oracleData)}async function _c(t,e){let{host:a,protocol:r}=new URL(t),i=r=="https:"?"wss":"ws",d=(0,Ei.absintheCreate)(`${i}://${a}/socket`),f=(0,Ei.absintheSend)(d,` + }`;let r=new URL("/api",t);return(0,Ga.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:a})}).then(wr).then(i=>i.data.oracleData==null?{}:i.data.oracleData)}async function Ic(t,e){let{host:a,protocol:r}=new URL(t),i=r=="https:"?"wss":"ws",d=(0,Ei.absintheCreate)(`${i}://${a}/socket`),s=(0,Ei.absintheSend)(d,` subscription { oracleUpdate { timestamp, @@ -68,21 +68,21 @@ var Zm=Object.create;var fp=Object.defineProperty;var ev=Object.getOwnPropertyDe } } } - `);return(0,Ei.absintheObserve)(d,f,h=>{e(h.data.oracelUpdate)})}async function xr(t){return new Promise(function(e,a){t.status>=200&&t.status<=299?t.json().then(e):a(t.statusText)})}var Km={};vs(Km,{IDToCurve:()=>ns,IDToHashAlgo:()=>ps,aesDecrypt:()=>pp,aesEncrypt:()=>dp,curveToID:()=>ji,deriveAddress:()=>pi,deriveKeyPair:()=>ni,ecDecrypt:()=>ip,ecEncrypt:()=>rp,generateDeterministicKeyPair:()=>ap,getHashDigest:()=>Hm,hash:()=>tp,hashAlgoToID:()=>ep,randomSecretKey:()=>Z2,sign:()=>Hi,verify:()=>JD});l();var Lm=fa(Xh(),1),Qm=fa(Zh(),1),km=fa(wm(),1),ad=fa(Vm(),1),as=fa(Fm(),1);import{createHash as qr,createHmac as es,createECDH as X2,createCipheriv as HD,randomBytes as ts,createDecipheriv as KD}from"crypto";var{ec:jm,eddsa:zD}=Lm.default,rs=new zD("ed25519"),is=new jm("p256"),ds=new jm("secp256k1"),{sha3_512:$D,sha3_256:GD}=Qm.default,YD=1;function Z2(){return new Uint8Array(ts(32))}function ep(t){switch(t){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function ps(t){switch(t){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function ji(t){switch(t){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function ns(t){switch(t){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function pi(t,e,a="ed25519",r="sha256"){let{publicKey:i}=ni(t,e,a),d=ji(a),n=tp(i,r);return y1([Uint8Array.from([d]),Uint8Array.from(n)])}function tp(t,e="sha256"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof t=="string"&&(We(t)?t=d1(t):t=new TextEncoder().encode(t));let a=ep(e),r=Hm(t,e);return y1([Uint8Array.from([a]),Uint8Array.from(r)])}function Hm(t,e){switch(e){case"sha256":{let a=qr(e);return a.update(t),a.digest()}case"sha512":{let a=qr(e);return a.update(t),a.digest()}case"sha3-256":{let a=GD.create();return a.update(t),a.digest()}case"sha3-512":{let a=$D.create();return a.update(t),a.digest()}case"blake2b":{let a=new Uint8Array(64),r=(0,km.default)(64);return r.update(t),r.digest(a),a}default:throw"Hash algorithm not supported"}}function ni(t,e,a="ed25519"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'seed must be a string";if(typeof e!="number"||e<0)throw"'index' must be a positive number";let r=XD(t,e);return ap(r,a,YD)}function ap(t,e,a){let r=ji(e),{publicKey:i,privateKey:d}=WD(t,e);return{privateKey:y1([Uint8Array.from([r]),Uint8Array.from([a]),d]),publicKey:y1([Uint8Array.from([r]),Uint8Array.from([a]),i])}}function WD(t,e){switch(e){case"ed25519":{let a=rs.keyFromSecret(t),r=new Uint8Array(a.pubBytes());return{privateKey:t,publicKey:r}}case"P256":{let a=is.keyFromPrivate(t),r=d1(a.getPublic().encode("hex"));return{privateKey:t,publicKey:r}}case"secp256k1":{let a=ds.keyFromPrivate(t),r=d1(a.getPublic().encode("hex"));return{privateKey:t,publicKey:r}}default:throw"Curve not supported"}}function Hi(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof t=="string"&&(We(t)?t=d1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(We(e))e=d1(e);else throw"'privateKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let i=rs.keyFromSecret(r);return Uint8Array.from(i.sign(t).toBytes())}case 1:{let i=qr("sha256").update(t).digest(),d=is.keyFromPrivate(r);return Uint8Array.from(d.sign(i).toDER())}case 2:{let i=qr("sha256").update(t).digest(),d=ds.keyFromPrivate(r);return Uint8Array.from(d.sign(i).toDER())}default:throw"Curve not supported"}}function JD(t,e,a){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string")if(We(t))t=d1(t);else throw"'signature' must be an hexadecimal string";if(typeof e=="string"&&(We(e)?e=d1(e):e=new TextEncoder().encode(e)),typeof a=="string")if(We(a))a=d1(a);else throw"'publicKey' must be an hexadecimal string";let r=a.slice(0,1),i=a.slice(2,a.length);switch(r[0]){case 0:return rs.keyFromPublic(Array.from(i)).verify(e,Array.from(t));case 1:{let d=qr("sha256").update(e).digest();return is.keyFromPublic(i).verify(d,t)}case 2:{let d=qr("sha256").update(e).digest();return ds.keyFromPublic(i).verify(d,t)}default:throw"Curve not supported"}}function rp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string"&&(We(t)?t=d1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(We(e))e=d1(e);else throw"'publicKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let{public:i,private:d}=ad.generateKeyPair(ts(32)),n=as.default.convertPublicKey(r),f=ad.sharedKey(d,n),{aesKey:h,iv:v}=ki(f),{tag:I,encrypted:S}=W2(t,h,v);return y1([Uint8Array.from(i),I,S])}case 1:{let i=X2("prime256v1");i.generateKeys();let d=i.computeSecret(r),{aesKey:n,iv:f}=ki(d),{tag:h,encrypted:v}=W2(t,n,f);return y1([Uint8Array.from(i.getPublicKey()),h,v])}case 2:{let i=X2("secp256k1");i.generateKeys();let d=i.computeSecret(r),{aesKey:n,iv:f}=ki(d),{tag:h,encrypted:v}=W2(t,n,f);return y1([Uint8Array.from(i.getPublicKey()),h,v])}default:throw"Curve not supported"}}function ip(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string")if(We(t))t=d1(t);else throw"'ciphertext' must be an hexadecimal string";if(typeof e=="string")if(We(e))e=d1(e);else throw"'privateKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let i=t.slice(0,32),d=t.slice(32,32+16),n=t.slice(32+16,t.length),f=as.default.convertSecretKey(r),h=ad.sharedKey(f,i),{aesKey:v,iv:I}=ki(h);return J2(n,v,I,d)}case 1:{let i=t.slice(0,65),d=t.slice(65,65+16),n=t.slice(65+16,t.length),f=X2("prime256v1");f.setPrivateKey(r);let h=f.computeSecret(i),{aesKey:v,iv:I}=ki(h);return J2(n,v,I,d)}case 2:{let i=t.slice(0,65),d=t.slice(65,65+16),n=t.slice(65+16,t.length),f=X2("secp256k1");f.setPrivateKey(r);let h=f.computeSecret(i),{aesKey:v,iv:I}=ki(h);return J2(n,v,I,d)}default:throw"Curve not supported"}}function dp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string"&&(We(t)?t=d1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(We(e))e=d1(e);else throw"'key' must be an hexadecimal string";let a=ts(12),{tag:r,encrypted:i}=W2(t,e,a);return y1([new Uint8Array(a),r,i])}function pp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string")if(We(t))t=d1(t);else throw"'cipherText' must be an hexadecimal string";if(typeof e=="string")if(We(e))e=d1(e);else throw"'key' must be an be hexadecimal string";let a=t.slice(0,12),r=t.slice(12,12+16),i=t.slice(28,t.length);return J2(i,e,a,r)}function XD(t,e){We(t)&&(t=d1(t));let a=qr("sha512").update(t).digest(),r=a.subarray(0,32),i=a.subarray(32,64),d=ya(e),n=y1([r,d]);return es("sha512",i).update(n).digest().subarray(0,32)}function ki(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof t=="string")if(We(t))t=d1(t);else throw"'sharedKey' must be an hexadecimal string";let e=qr("sha256").update(t).digest(),a=es("sha256",e).update("0").digest().subarray(0,32),r=es("sha256",a).update("1").digest().subarray(0,32);return{iv:a,aesKey:r}}function W2(t,e,a){let r=HD("aes-256-gcm",e,a),i=r.update(t);return i=y1([i,r.final()]),{tag:new Uint8Array(r.getAuthTag()),encrypted:i}}function J2(t,e,a,r){let i=KD("aes-256-gcm",e,a);i.setAuthTag(r);let d=[i.update(t)];return d.push(i.final()),y1(d)}l();l();var $i=fa(Ym(),1);import{createHmac as rM,createHash as iM}from"crypto";var dM=0,Or=class{constructor(e,a=1){e instanceof Uint8Array||(e=new TextEncoder().encode(e)),this.version=a,this.seed=e,this.services={}}addService(e,a,r="ed25519",i="sha256"){return this.services[e]={derivationPath:a,curve:r,hashAlgo:i},this}encode(){let e=[];for(let a in this.services){let{derivationPath:r,curve:i,hashAlgo:d}=this.services[a];e.push(y1([Uint8Array.from([a.length]),new TextEncoder().encode(a),Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([ji(i)]),Uint8Array.from([ep(d)])]))}return y1([ya(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),y1(e)])}deriveKeypair(e,a=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:r,curve:i}=this.services[e];return us(this.seed,r,a,i)}deriveAddress(e,a=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:r,curve:i,hashAlgo:d}=this.services[e],{publicKey:n}=us(this.seed,r,a,i),f=ji(i),h=tp(n,d);return y1([Uint8Array.from([f]),Uint8Array.from(h)])}buildTransaction(e,a,r){let i=this.deriveKeypair(a,r),d=this.deriveAddress(a,r+1);e.setAddress(d);let n=e.previousSignaturePayload(),f=Hi(n,i.privateKey);return e.setPreviousSignatureAndPreviousPublicKey(f,i.publicKey),e}static decode(e){var n=0,{bytes:a,pos:n}=sp(e,n,4),{byte:r,pos:n}=zi(e,n,1),{bytes:i,pos:n}=sp(e,n,r),{byte:d,pos:n}=zi(e,n,1);let f=new Or(i,m4(a));for(let V=0;Vv.replace("'","")).at(1);if(h=="650"){let{publicKey:v}=us(this.seed,n,0,f);r.push({id:`did:archethic:${a}#${d}`,type:"JsonWebKey2020",publicKeyJwk:nM(v,d),controller:`did:archethic:${a}`}),i.push(`did:archethic:${a}#${d}`)}else throw"Purpose '"+h+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${a}`,authentication:i,verificationMethod:r}}};function zi(t,e,a){return{byte:t.slice(e,e+a)[0],pos:e+a}}function sp(t,e,a){return{bytes:t.slice(e,e+a),pos:e+a}}function us(t,e,a,r="ed25519"){let i=iM("sha256").update(pM(e,a)).digest(),d=rM("sha512",t).update(i).digest().subarray(0,32);return ap(d,r,dM)}function pM(t,e){return t.split("/").slice(0,-1).concat(`${e}`).join("/")}function nM(t,e){let a=t[0],r=t.slice(2,t.length);switch(a){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,$i.default)(r),kid:e};case 1:return x=r.subarray(16),y=r.subarray(-16),{kty:"EC",crv:"P-256",x:(0,$i.default)(x),y:(0,$i.default)(y),kid:e};case 2:return x=r.subarray(16),y=r.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,$i.default)(x),y:(0,$i.default)(y),kid:e}}}var rd=class{constructor(e){this.core=e}newKeychainTransaction(e,a){let r=new Or(e);r.addService("uco","m/650'/0/0");let i=Z2(),d=a.map(n=>({publicKey:n,encryptedSecretKey:rp(i,n)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(r.toDID())).addOwnership(dp(r.encode(),i),d).build(e,0)}newAccessTransaction(e,a){let r=Z2(),{publicKey:i}=ni(e,0),d=rp(r,i),n=[{publicKey:i,encryptedSecretKey:d}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(dp(a,r),n).build(e,0)}async getKeychain(e){let{publicKey:a,privateKey:r}=ni(e,0),i=pi(e,1),d=await this.core.transaction.getTransactionOwnerships(i);if(d.length==0)throw"Keychain doesn't exist";let{secret:n,authorizedPublicKeys:f}=d[0],{encryptedSecretKey:h}=f.find(X=>X.publicKey.toLocaleUpperCase()==S1(a).toLocaleUpperCase()),v=ip(h,r),I=pp(n,v),S=await this.core.transaction.getTransactionOwnerships(I),{secret:O,authorizedPublicKeys:R}=S[0],{encryptedSecretKey:V}=R.find(({publicKey:X})=>X.toUpperCase()==S1(a).toUpperCase()),L=ip(V,r),$=pp(O,L);return Or.decode($)}};l();var id=class{constructor(e){this.core=e}async getStorageNoncePublicKey(){return this.core.requestNode(e=>bc(e))}async addOriginKey(e,a){return this.core.requestNode(r=>Ac(e,a,r))}async getOracleData(e=void 0){return this.core.requestNode(a=>wc(a,e))}async subscribeToOracleUpdates(e,a){return this.core.requestNode(r=>_c(r,e,a))}async getToken(e){return this.core.requestNode(a=>xc(e,a))}};l();l();var Wm=1,Jm={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,code_proposal:7,code_approval:8},dd=class{constructor(e){this.version=Wm,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(e){if(!Object.keys(Jm).includes(e))throw"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'";return this.type=e,this}setCode(e){if(typeof e!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(e),this}setContent(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof e=="string"&&(e=new TextEncoder().encode(e)),this.data.content=e,this}addOwnership(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof e=="string"&&(We(e)?e=d1(e):e=new TextEncoder().encode(e)),typeof a!="object"&&!(a instanceof Array))throw"'authorizedKeys must be an array";let r=[];return a.reduce((i,{publicKey:d,encryptedSecretKey:n})=>{if(typeof d!="string"&&!(d instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof d=="string"){if(!We(d))throw"Authorized public key must be an hexadecimal";d=d1(d)}if(typeof n!="string"&&!(n instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof n=="string"){if(!We(n))throw"Encrypted secret key must be an hexadecimal";n=d1(n)}return i[d]||(r.push({publicKey:d,encryptedSecretKey:n}),i[d]=n),i},{}),this.data.ownerships.push({secret:e,authorizedKeys:r}),this}addUCOTransfer(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'to' must be in hexadecimal form if it's string";e=d1(e)}if(isNaN(a)||a<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:e,amount:a}),this}addTokenTransfer(e,a,r,i=0){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'to' must be in hexadecimal form if it's string";e=d1(e)}if(isNaN(a)||a<=0)throw"Token transfer amount must be a positive number";if(typeof r=="string"){if(!We(r))throw"'tokenAddress' must be in hexadecimal form if it's string";r=d1(r)}if(isNaN(i)||i<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:e,amount:a,token:r,tokenId:i}),this}addRecipient(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'to' must be in hexadecimal form if it's string";e=d1(e)}return this.data.recipients.push(e),this}setPreviousSignatureAndPreviousPublicKey(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'previous Signature' must be in hexadecimal form if it's string";e=d1(e)}if(typeof a=="string"){if(!We(a))throw"'previous Public Key' must be in hexadecimal form if it's string";a=d1(a)}return this.previousPublicKey=a,this.previousSignature=e,this}setAddress(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'addr' must be in hexadecimal form if it's string";e=d1(e)}return this.address=e,this}build(e,a,r,i){let d=ni(e,a,r),n=pi(e,a+1,r,i);this.address=n,this.previousPublicKey=d.publicKey;let f=this.previousSignaturePayload();return this.previousSignature=Hi(f,d.privateKey),this}originSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string"&&!We(e))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=Hi(this.originSignaturePayload(),e),this}setOriginSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'Signature' must be in hexadecimal form if it's string";e=d1(e)}return this.originSignature=e,this}toJSON(){return JSON.stringify({version:this.version,address:S1(this.address),type:this.type,data:{content:S1(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:e,authorizedKeys:a})=>({secret:S1(e),authorizedKeys:a.map(({publicKey:r,encryptedSecretKey:i})=>({publicKey:S1(r),encryptedSecretKey:S1(i)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(e=>({to:S1(e.to),amount:e.amount}))},token:{transfers:this.data.ledger.token.transfers.map(e=>({to:S1(e.to),amount:e.amount,tokenAddress:S1(e.token),tokenId:e.tokenId}))}},recipients:this.data.recipients.map(S1)},previousPublicKey:S1(this.previousPublicKey),previousSignature:S1(this.previousSignature),originSignature:this.originSignature&&S1(this.originSignature)})}previousSignaturePayload(){let e=ya(this.data.code.length),a=this.data.content.length;this.data.content instanceof ArrayBuffer&&(a=this.data.content.byteLength);let r=ya(a),i=this.data.ownerships.map(({secret:S,authorizedKeys:O})=>{let R=Uint8Array.from(yr(O.length)),V=[Uint8Array.from([R.length]),R];return O.sort((L,$)=>S1(L.publicKey).localeCompare(S1($.publicKey))),O.forEach(({publicKey:L,encryptedSecretKey:$})=>{V.push(L),V.push($)}),y1([ya(S.byteLength),S,y1(V)])}),d=this.data.ledger.uco.transfers.map(function(S){return y1([S.to,E2(S.amount)])}),n=this.data.ledger.token.transfers.map(function(S){let O=Uint8Array.from(yr(S.tokenId));return y1([S.token,S.to,E2(S.amount),Uint8Array.from([O.length]),O])}),f=Uint8Array.from(yr(this.data.ownerships.length)),h=Uint8Array.from(yr(this.data.ledger.uco.transfers.length)),v=Uint8Array.from(yr(this.data.ledger.token.transfers.length)),I=Uint8Array.from(yr(this.data.recipients.length));return y1([ya(Wm),this.address,Uint8Array.from([Jm[this.type]]),e,this.data.code,r,this.data.content,Uint8Array.from([f.length]),f,y1(i),Uint8Array.from([h.length]),h,y1(d),Uint8Array.from([v.length]),v,y1(n),Uint8Array.from([I.length]),I,y1(this.data.recipients)])}originSignaturePayload(){let e=this.previousSignaturePayload();return y1([e,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};l();var Xm=fa(_p(),1);var q1=fa(h4(),1),cs="SENDER",pd=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(e,a){if(typeof e!="string")throw"'event' must be a string";if(typeof a!="function")throw"'func' must be a function";switch(e){case"sent":this.onSent.push(a);break;case"confirmation":this.onConfirmation.push(a);break;case"requiredConfirmation":this.onRequiredConfirmation.push(a);break;case"fullConfirmation":this.onFullConfirmation.push(a);break;case"error":this.onError.push(a);break;case"timeout":this.onTimeout.push(a);break;default:throw"Event "+e+" is not supported"}return this}async send(e,a,r=100,i=60){if(typeof e!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof a!="string")throw"'endpoint' must be a string";if(typeof r!="number"||r<0&&r>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof i!="number"||i<=0)throw"'timeout' must be an integer greater than 0";let d=S1(e.address),{host:n,protocol:f}=new URL(a),h=f=="https:"?"wss":"ws";this.absintheSocket=(0,q1.absintheCreate)(`${h}://${n}/socket`);try{this.confirmationNotifier=await sM(d,this.absintheSocket,(v,I)=>oM.call(this,r,v,I)),this.errorNotifier=await fM(d,this.absintheSocket,lM.bind(this))}catch(v){return this.onError.forEach(I=>I(cs,v.message,this)),this}return(0,Xm.default)(a+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(v=>uM.call(this,i,v)).catch(v=>this.onError.forEach(I=>I(cs,v,this))),this}unsubscribe(e=void 0){if(e)switch(e){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+e+" is not supported"}else(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function sM(t,e,a){let r=` + `);return(0,Ei.absintheObserve)(d,s,c=>{e(c.data.oracelUpdate)})}async function wr(t){return new Promise(function(e,a){t.status>=200&&t.status<=299?t.json().then(e):a(t.statusText)})}var Ym={};xs(Ym,{IDToCurve:()=>fs,IDToHashAlgo:()=>os,aesDecrypt:()=>up,aesEncrypt:()=>lp,curveToID:()=>ji,deriveAddress:()=>ni,deriveKeyPair:()=>si,ecDecrypt:()=>fp,ecEncrypt:()=>op,generateDeterministicKeyPair:()=>sp,getHashDigest:()=>Gm,hash:()=>np,hashAlgoToID:()=>pp,randomSecretKey:()=>dp,sign:()=>Hi,verify:()=>UM});l();var Hm=la(Zh(),1),Km=la(em(),1),zm=la(Em(),1),id=la(Lm(),1),ds=la(jm(),1);import{createHash as qr,createHmac as rs,createECDH as ip,createCipheriv as DM,randomBytes as is,createDecipheriv as MM}from"crypto";var{ec:$m,eddsa:TM}=Hm.default,ps=new TM("ed25519"),ns=new $m("p256"),ss=new $m("secp256k1"),{sha3_512:BM,sha3_256:qM}=Km.default,OM=1;function dp(){return new Uint8Array(is(32))}function pp(t){switch(t){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function os(t){switch(t){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function ji(t){switch(t){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function fs(t){switch(t){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function ni(t,e,a="ed25519",r="sha256"){let{publicKey:i}=si(t,e,a),d=ji(a),n=np(i,r);return x1([Uint8Array.from([d]),Uint8Array.from(n)])}function np(t,e="sha256"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof t=="string"&&(We(t)?t=d1(t):t=new TextEncoder().encode(t));let a=pp(e),r=Gm(t,e);return x1([Uint8Array.from([a]),Uint8Array.from(r)])}function Gm(t,e){switch(e){case"sha256":{let a=qr(e);return a.update(t),a.digest()}case"sha512":{let a=qr(e);return a.update(t),a.digest()}case"sha3-256":{let a=qM.create();return a.update(t),a.digest()}case"sha3-512":{let a=BM.create();return a.update(t),a.digest()}case"blake2b":{let a=new Uint8Array(64),r=(0,zm.default)(64);return r.update(t),r.digest(a),a}default:throw"Hash algorithm not supported"}}function si(t,e,a="ed25519"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'seed must be a string";if(typeof e!="number"||e<0)throw"'index' must be a positive number";let r=VM(t,e);return sp(r,a,OM)}function sp(t,e,a){let r=ji(e),{publicKey:i,privateKey:d}=PM(t,e);return{privateKey:x1([Uint8Array.from([r]),Uint8Array.from([a]),d]),publicKey:x1([Uint8Array.from([r]),Uint8Array.from([a]),i])}}function PM(t,e){switch(e){case"ed25519":{let a=ps.keyFromSecret(t),r=new Uint8Array(a.pubBytes());return{privateKey:t,publicKey:r}}case"P256":{let a=ns.keyFromPrivate(t),r=d1(a.getPublic().encode("hex"));return{privateKey:t,publicKey:r}}case"secp256k1":{let a=ss.keyFromPrivate(t),r=d1(a.getPublic().encode("hex"));return{privateKey:t,publicKey:r}}default:throw"Curve not supported"}}function Hi(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof t=="string"&&(We(t)?t=d1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(We(e))e=d1(e);else throw"'privateKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let i=ps.keyFromSecret(r);return Uint8Array.from(i.sign(t).toBytes())}case 1:{let i=qr("sha256").update(t).digest(),d=ns.keyFromPrivate(r);return Uint8Array.from(d.sign(i).toDER())}case 2:{let i=qr("sha256").update(t).digest(),d=ss.keyFromPrivate(r);return Uint8Array.from(d.sign(i).toDER())}default:throw"Curve not supported"}}function UM(t,e,a){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string")if(We(t))t=d1(t);else throw"'signature' must be an hexadecimal string";if(typeof e=="string"&&(We(e)?e=d1(e):e=new TextEncoder().encode(e)),typeof a=="string")if(We(a))a=d1(a);else throw"'publicKey' must be an hexadecimal string";let r=a.slice(0,1),i=a.slice(2,a.length);switch(r[0]){case 0:return ps.keyFromPublic(Array.from(i)).verify(e,Array.from(t));case 1:{let d=qr("sha256").update(e).digest();return ns.keyFromPublic(i).verify(d,t)}case 2:{let d=qr("sha256").update(e).digest();return ss.keyFromPublic(i).verify(d,t)}default:throw"Curve not supported"}}function op(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string"&&(We(t)?t=d1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(We(e))e=d1(e);else throw"'publicKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let{public:i,private:d}=id.generateKeyPair(is(32)),n=ds.default.convertPublicKey(r),s=id.sharedKey(d,n),{aesKey:c,iv:v}=ki(s),{tag:I,encrypted:S}=ap(t,c,v);return x1([Uint8Array.from(i),I,S])}case 1:{let i=ip("prime256v1");i.generateKeys();let d=i.computeSecret(r),{aesKey:n,iv:s}=ki(d),{tag:c,encrypted:v}=ap(t,n,s);return x1([Uint8Array.from(i.getPublicKey()),c,v])}case 2:{let i=ip("secp256k1");i.generateKeys();let d=i.computeSecret(r),{aesKey:n,iv:s}=ki(d),{tag:c,encrypted:v}=ap(t,n,s);return x1([Uint8Array.from(i.getPublicKey()),c,v])}default:throw"Curve not supported"}}function fp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string")if(We(t))t=d1(t);else throw"'ciphertext' must be an hexadecimal string";if(typeof e=="string")if(We(e))e=d1(e);else throw"'privateKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let i=t.slice(0,32),d=t.slice(32,32+16),n=t.slice(32+16,t.length),s=ds.default.convertSecretKey(r),c=id.sharedKey(s,i),{aesKey:v,iv:I}=ki(c);return rp(n,v,I,d)}case 1:{let i=t.slice(0,65),d=t.slice(65,65+16),n=t.slice(65+16,t.length),s=ip("prime256v1");s.setPrivateKey(r);let c=s.computeSecret(i),{aesKey:v,iv:I}=ki(c);return rp(n,v,I,d)}case 2:{let i=t.slice(0,65),d=t.slice(65,65+16),n=t.slice(65+16,t.length),s=ip("secp256k1");s.setPrivateKey(r);let c=s.computeSecret(i),{aesKey:v,iv:I}=ki(c);return rp(n,v,I,d)}default:throw"Curve not supported"}}function lp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string"&&(We(t)?t=d1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(We(e))e=d1(e);else throw"'key' must be an hexadecimal string";let a=is(12),{tag:r,encrypted:i}=ap(t,e,a);return x1([new Uint8Array(a),r,i])}function up(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string")if(We(t))t=d1(t);else throw"'cipherText' must be an hexadecimal string";if(typeof e=="string")if(We(e))e=d1(e);else throw"'key' must be an be hexadecimal string";let a=t.slice(0,12),r=t.slice(12,12+16),i=t.slice(28,t.length);return rp(i,e,a,r)}function VM(t,e){We(t)&&(t=d1(t));let a=qr("sha512").update(t).digest(),r=a.subarray(0,32),i=a.subarray(32,64),d=wa(e),n=x1([r,d]);return rs("sha512",i).update(n).digest().subarray(0,32)}function ki(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof t=="string")if(We(t))t=d1(t);else throw"'sharedKey' must be an hexadecimal string";let e=qr("sha256").update(t).digest(),a=rs("sha256",e).update("0").digest().subarray(0,32),r=rs("sha256",a).update("1").digest().subarray(0,32);return{iv:a,aesKey:r}}function ap(t,e,a){let r=DM("aes-256-gcm",e,a),i=r.update(t);return i=x1([i,r.final()]),{tag:new Uint8Array(r.getAuthTag()),encrypted:i}}function rp(t,e,a,r){let i=MM("aes-256-gcm",e,a);i.setAuthTag(r);let d=[i.update(t)];return d.push(i.final()),x1(d)}l();l();var $i=la(Zm(),1);import{createHmac as kM,createHash as jM}from"crypto";var HM=0,Or=class{constructor(e,a=1){e instanceof Uint8Array||(e=new TextEncoder().encode(e)),this.version=a,this.seed=e,this.services={}}addService(e,a,r="ed25519",i="sha256"){return this.services[e]={derivationPath:a,curve:r,hashAlgo:i},this}encode(){let e=[];for(let a in this.services){let{derivationPath:r,curve:i,hashAlgo:d}=this.services[a];e.push(x1([Uint8Array.from([a.length]),new TextEncoder().encode(a),Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([ji(i)]),Uint8Array.from([pp(d)])]))}return x1([wa(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),x1(e)])}deriveKeypair(e,a=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:r,curve:i}=this.services[e];return ms(this.seed,r,a,i)}deriveAddress(e,a=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:r,curve:i,hashAlgo:d}=this.services[e],{publicKey:n}=ms(this.seed,r,a,i),s=ji(i),c=np(n,d);return x1([Uint8Array.from([s]),Uint8Array.from(c)])}buildTransaction(e,a,r){let i=this.deriveKeypair(a,r),d=this.deriveAddress(a,r+1);e.setAddress(d);let n=e.previousSignaturePayload(),s=Hi(n,i.privateKey);return e.setPreviousSignatureAndPreviousPublicKey(s,i.publicKey),e}static decode(e){var n=0,{bytes:a,pos:n}=hp(e,n,4),{byte:r,pos:n}=zi(e,n,1),{bytes:i,pos:n}=hp(e,n,r),{byte:d,pos:n}=zi(e,n,1);let s=new Or(i,y4(a));for(let V=0;Vv.replace("'","")).at(1);if(c=="650"){let{publicKey:v}=ms(this.seed,n,0,s);r.push({id:`did:archethic:${a}#${d}`,type:"JsonWebKey2020",publicKeyJwk:zM(v,d),controller:`did:archethic:${a}`}),i.push(`did:archethic:${a}#${d}`)}else throw"Purpose '"+c+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${a}`,authentication:i,verificationMethod:r}}};function zi(t,e,a){return{byte:t.slice(e,e+a)[0],pos:e+a}}function hp(t,e,a){return{bytes:t.slice(e,e+a),pos:e+a}}function ms(t,e,a,r="ed25519"){let i=jM("sha256").update(KM(e,a)).digest(),d=kM("sha512",t).update(i).digest().subarray(0,32);return sp(d,r,HM)}function KM(t,e){return t.split("/").slice(0,-1).concat(`${e}`).join("/")}function zM(t,e){let a=t[0],r=t.slice(2,t.length);switch(a){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,$i.default)(r),kid:e};case 1:return x=r.subarray(16),y=r.subarray(-16),{kty:"EC",crv:"P-256",x:(0,$i.default)(x),y:(0,$i.default)(y),kid:e};case 2:return x=r.subarray(16),y=r.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,$i.default)(x),y:(0,$i.default)(y),kid:e}}}var dd=class{constructor(e){this.core=e}newKeychainTransaction(e,a){let r=new Or(e);r.addService("uco","m/650'/0/0");let i=dp(),d=a.map(n=>({publicKey:n,encryptedSecretKey:op(i,n)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(r.toDID())).addOwnership(lp(r.encode(),i),d).build(e,0)}newAccessTransaction(e,a){let r=dp(),{publicKey:i}=si(e,0),d=op(r,i),n=[{publicKey:i,encryptedSecretKey:d}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(lp(a,r),n).build(e,0)}async getKeychain(e){let{publicKey:a,privateKey:r}=si(e,0),i=ni(e,1),d=await this.core.transaction.getTransactionOwnerships(i);if(d.length==0)throw"Keychain doesn't exist";let{secret:n,authorizedPublicKeys:s}=d[0],{encryptedSecretKey:c}=s.find(J=>J.publicKey.toLocaleUpperCase()==S1(a).toLocaleUpperCase()),v=fp(c,r),I=up(n,v),S=await this.core.transaction.getTransactionOwnerships(I),{secret:O,authorizedPublicKeys:R}=S[0],{encryptedSecretKey:V}=R.find(({publicKey:J})=>J.toUpperCase()==S1(a).toUpperCase()),L=fp(V,r),G=up(O,L);return Or.decode(G)}};l();var pd=class{constructor(e){this.core=e}async getStorageNoncePublicKey(){return this.core.requestNode(e=>gc(e))}async addOriginKey(e,a){return this.core.requestNode(r=>Ac(e,a,r))}async getOracleData(e=void 0){return this.core.requestNode(a=>_c(a,e))}async subscribeToOracleUpdates(e,a){return this.core.requestNode(r=>Ic(r,e,a))}async getToken(e){return this.core.requestNode(a=>wc(e,a))}};l();l();var ev=1,vs={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,data:250,contract:249,code_proposal:7,code_approval:8},nd=class{constructor(e){this.version=ev,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(e){if(!Object.keys(vs).includes(e))throw"Transaction type must be in "+Object.keys(vs).map(a=>`'${a}'`).join(", ");return this.type=e,this}setCode(e){if(typeof e!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(e),this}setContent(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof e=="string"&&(e=new TextEncoder().encode(e)),this.data.content=e,this}addOwnership(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof e=="string"&&(We(e)?e=d1(e):e=new TextEncoder().encode(e)),typeof a!="object"&&!(a instanceof Array))throw"'authorizedKeys must be an array";let r=[];return a.reduce((i,{publicKey:d,encryptedSecretKey:n})=>{if(typeof d!="string"&&!(d instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof d=="string"){if(!We(d))throw"Authorized public key must be an hexadecimal";d=d1(d)}if(typeof n!="string"&&!(n instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof n=="string"){if(!We(n))throw"Encrypted secret key must be an hexadecimal";n=d1(n)}return i[d]||(r.push({publicKey:d,encryptedSecretKey:n}),i[d]=n),i},{}),this.data.ownerships.push({secret:e,authorizedKeys:r}),this}addUCOTransfer(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'to' must be in hexadecimal form if it's string";e=d1(e)}if(isNaN(a)||a<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:e,amount:a}),this}addTokenTransfer(e,a,r,i=0){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'to' must be in hexadecimal form if it's string";e=d1(e)}if(isNaN(a)||a<=0)throw"Token transfer amount must be a positive number";if(typeof r=="string"){if(!We(r))throw"'tokenAddress' must be in hexadecimal form if it's string";r=d1(r)}if(isNaN(i)||i<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:e,amount:a,token:r,tokenId:i}),this}addRecipient(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'to' must be in hexadecimal form if it's string";e=d1(e)}return this.data.recipients.push(e),this}setPreviousSignatureAndPreviousPublicKey(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'previous Signature' must be in hexadecimal form if it's string";e=d1(e)}if(typeof a=="string"){if(!We(a))throw"'previous Public Key' must be in hexadecimal form if it's string";a=d1(a)}return this.previousPublicKey=a,this.previousSignature=e,this}setAddress(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'addr' must be in hexadecimal form if it's string";e=d1(e)}return this.address=e,this}build(e,a,r,i){let d=si(e,a,r),n=ni(e,a+1,r,i);this.address=n,this.previousPublicKey=d.publicKey;let s=this.previousSignaturePayload();return this.previousSignature=Hi(s,d.privateKey),this}originSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string"&&!We(e))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=Hi(this.originSignaturePayload(),e),this}setOriginSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof e=="string"){if(!We(e))throw"'Signature' must be in hexadecimal form if it's string";e=d1(e)}return this.originSignature=e,this}toJSON(){return JSON.stringify({version:this.version,address:S1(this.address),type:this.type,data:{content:S1(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:e,authorizedKeys:a})=>({secret:S1(e),authorizedKeys:a.map(({publicKey:r,encryptedSecretKey:i})=>({publicKey:S1(r),encryptedSecretKey:S1(i)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(e=>({to:S1(e.to),amount:e.amount}))},token:{transfers:this.data.ledger.token.transfers.map(e=>({to:S1(e.to),amount:e.amount,tokenAddress:S1(e.token),tokenId:e.tokenId}))}},recipients:this.data.recipients.map(S1)},previousPublicKey:S1(this.previousPublicKey),previousSignature:S1(this.previousSignature),originSignature:this.originSignature&&S1(this.originSignature)})}previousSignaturePayload(){let e=wa(this.data.code.length),a=this.data.content.length;this.data.content instanceof ArrayBuffer&&(a=this.data.content.byteLength);let r=wa(a),i=this.data.ownerships.map(({secret:S,authorizedKeys:O})=>{let R=Uint8Array.from(xr(O.length)),V=[Uint8Array.from([R.length]),R];return O.sort((L,G)=>S1(L.publicKey).localeCompare(S1(G.publicKey))),O.forEach(({publicKey:L,encryptedSecretKey:G})=>{V.push(L),V.push(G)}),x1([wa(S.byteLength),S,x1(V)])}),d=this.data.ledger.uco.transfers.map(function(S){return x1([S.to,T2(S.amount)])}),n=this.data.ledger.token.transfers.map(function(S){let O=Uint8Array.from(xr(S.tokenId));return x1([S.token,S.to,T2(S.amount),Uint8Array.from([O.length]),O])}),s=Uint8Array.from(xr(this.data.ownerships.length)),c=Uint8Array.from(xr(this.data.ledger.uco.transfers.length)),v=Uint8Array.from(xr(this.data.ledger.token.transfers.length)),I=Uint8Array.from(xr(this.data.recipients.length));return x1([wa(ev),this.address,Uint8Array.from([vs[this.type]]),e,this.data.code,r,this.data.content,Uint8Array.from([s.length]),s,x1(i),Uint8Array.from([c.length]),c,x1(d),Uint8Array.from([v.length]),v,x1(n),Uint8Array.from([I.length]),I,x1(this.data.recipients)])}originSignaturePayload(){let e=this.previousSignaturePayload();return x1([e,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};l();var tv=la(Dp(),1);var B1=la(g4(),1),bs="SENDER",sd=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(e,a){if(typeof e!="string")throw"'event' must be a string";if(typeof a!="function")throw"'func' must be a function";switch(e){case"sent":this.onSent.push(a);break;case"confirmation":this.onConfirmation.push(a);break;case"requiredConfirmation":this.onRequiredConfirmation.push(a);break;case"fullConfirmation":this.onFullConfirmation.push(a);break;case"error":this.onError.push(a);break;case"timeout":this.onTimeout.push(a);break;default:throw"Event "+e+" is not supported"}return this}async send(e,a,r=100,i=60){if(typeof e!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof a!="string")throw"'endpoint' must be a string";if(typeof r!="number"||r<0&&r>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof i!="number"||i<=0)throw"'timeout' must be an integer greater than 0";let d=S1(e.address),{host:n,protocol:s}=new URL(a),c=s=="https:"?"wss":"ws";this.absintheSocket=(0,B1.absintheCreate)(`${c}://${n}/socket`);try{this.confirmationNotifier=await $M(d,this.absintheSocket,(v,I)=>YM.call(this,r,v,I)),this.errorNotifier=await GM(d,this.absintheSocket,WM.bind(this))}catch(v){return this.onError.forEach(I=>I(bs,v.message,this)),this}return(0,tv.default)(a+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(v=>JM.call(this,i,v)).catch(v=>this.onError.forEach(I=>I(bs,v,this))),this}unsubscribe(e=void 0){if(e)switch(e){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+e+" is not supported"}else(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function $M(t,e,a){let r=` subscription { transactionConfirmed(address: "${t}") { nbConfirmations, maxConfirmations } } - `,i=(0,q1.absintheSend)(e,r);return(0,q1.absintheObserve)(e,i,d=>{if(d.data.transactionConfirmed){let{nbConfirmations:n,maxConfirmations:f}=d.data.transactionConfirmed;a(n,f)}})}async function fM(t,e,a){let r=` + `,i=(0,B1.absintheSend)(e,r);return(0,B1.absintheObserve)(e,i,d=>{if(d.data.transactionConfirmed){let{nbConfirmations:n,maxConfirmations:s}=d.data.transactionConfirmed;a(n,s)}})}async function GM(t,e,a){let r=` subscription { transactionError(address: "${t}") { context, reason } } - `,i=(0,q1.absintheSend)(e,r);return(0,q1.absintheObserve)(e,i,d=>{if(d.data.transactionError){let{context:n,reason:f}=d.data.transactionError;a(n,f)}})}function oM(t,e,a){this.nbConfirmationReceived=e,e==1&&(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(r=>r(e,a,this)),a*(t/100)<=e&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(r=>r(e,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),e==a&&(clearTimeout(this.timeout),(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(r=>r(a,this)))}function lM(t,e){clearTimeout(this.timeout),(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(a=>a(t,e,this))}function uM(t,e){e.status>=200&&e.status<=299?(this.onSent.forEach(a=>a(this)),this.timeout=setTimeout(()=>{(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(a=>a(this.nbConfirmationReceived,this))},t*1e3)):((0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),e.json().then(a=>this.onError.forEach(r=>r(cs,a.status,this))))}var nd=class{constructor(e){this.core=e,this.builder=hs}new(){return new this.builder(this.core)}getTransactionIndex(e){return this.core.requestNode(a=>vc(e,a))}getTransactionFee(e){return this.core.requestNode(a=>gc(e,a))}getTransactionOwnerships(e){return this.core.requestNode(a=>yc(e,a))}},hs=class extends dd{constructor(e){super(),this.core=e,this.sender=new pd}send(e,a){this.core.requestNode(r=>this.sender.send(this,r,e,a))}on(e,a){return this.sender.on(e,a),this}unsubscribe(e){return this.sender.unsubscribe(e),this}};var ms=class{constructor(e){this.endpoint=new URL(e),this.transaction=new nd(this),this.account=new rd(this),this.network=new id(this)}async connect(){let e=await mc(this.endpoint);return this.nearestEndpoints=e.map(({ip:a,port:r})=>`http://${a}:${r}`),this}async requestNode(e){let a=this.nearestEndpoints[0];try{return await e(a)}catch(r){if(console.error(r),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(e)}}};export{Km as Crypto,hc as Utils,ms as default}; + `,i=(0,B1.absintheSend)(e,r);return(0,B1.absintheObserve)(e,i,d=>{if(d.data.transactionError){let{context:n,reason:s}=d.data.transactionError;a(n,s)}})}function YM(t,e,a){this.nbConfirmationReceived=e,e==1&&(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(r=>r(e,a,this)),a*(t/100)<=e&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(r=>r(e,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),e==a&&(clearTimeout(this.timeout),(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(r=>r(a,this)))}function WM(t,e){clearTimeout(this.timeout),(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(a=>a(t,e,this))}function JM(t,e){e.status>=200&&e.status<=299?(this.onSent.forEach(a=>a(this)),this.timeout=setTimeout(()=>{(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(a=>a(this.nbConfirmationReceived,this))},t*1e3)):((0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),e.json().then(a=>this.onError.forEach(r=>r(bs,a.status,this))))}var od=class{constructor(e){this.core=e,this.builder=gs}new(){return new this.builder(this.core)}getTransactionIndex(e){return this.core.requestNode(a=>bc(e,a))}getTransactionFee(e){return this.core.requestNode(a=>yc(e,a))}getTransactionOwnerships(e){return this.core.requestNode(a=>xc(e,a))}},gs=class extends nd{constructor(e){super(),this.core=e,this.sender=new sd}send(e,a){this.core.requestNode(r=>this.sender.send(this,r,e,a))}on(e,a){return this.sender.on(e,a),this}unsubscribe(e){return this.sender.unsubscribe(e),this}};var ys=class{constructor(e){this.endpoint=new URL(e),this.transaction=new od(this),this.account=new dd(this),this.network=new pd(this)}async connect(){let e=await vc(this.endpoint);return this.nearestEndpoints=e.map(({ip:a,port:r})=>`http://${a}:${r}`),this}async requestNode(e){let a=this.nearestEndpoints[0];try{return await e(a)}catch(r){if(console.error(r),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(e)}}};export{Ym as Crypto,mc as Utils,ys as default}; /** * [js-sha3]{@link https://github.com/emn178/js-sha3} * diff --git a/dist/archethic-node.mjs.map b/dist/archethic-node.mjs.map index bb2f957..48586bc 100644 --- a/dist/archethic-node.mjs.map +++ b/dist/archethic-node.mjs.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../esbuild.inject.js", "../node_modules/webidl-conversions/lib/index.js", "../node_modules/whatwg-url/lib/utils.js", "../node_modules/tr46/index.js", "../node_modules/whatwg-url/lib/url-state-machine.js", "../node_modules/whatwg-url/lib/URL-impl.js", "../node_modules/whatwg-url/lib/URL.js", "../node_modules/whatwg-url/lib/public-api.js", "../node_modules/node-fetch/lib/index.js", "../node_modules/cross-fetch/dist/node-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/ws/lib/constants.js", "../node_modules/ws/lib/buffer-util.js", "../node_modules/ws/lib/limiter.js", "../node_modules/ws/lib/permessage-deflate.js", "../node_modules/ws/lib/validation.js", "../node_modules/ws/lib/receiver.js", "../node_modules/ws/lib/sender.js", "../node_modules/ws/lib/event-target.js", "../node_modules/ws/lib/extension.js", "../node_modules/ws/lib/websocket.js", "../node_modules/ws/lib/stream.js", "../node_modules/ws/lib/subprotocol.js", "../node_modules/ws/lib/websocket-server.js", "../node_modules/ws/index.js", "../node_modules/isomorphic-ws/node.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/bn.js/lib/bn.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/brorand/index.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/inherits/inherits.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], - "sourcesContent": ["export let Buffer = require(\"buffer\").Buffer", "\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n", "const nodeFetch = require('node-fetch')\nconst realFetch = nodeFetch.default || nodeFetch\n\nconst fetch = function (url, options) {\n // Support schemaless URIs on the server for parity with the browser.\n // Ex: //github.com/ -> https://github.com/\n if (/^\\/\\//.test(url)) {\n url = 'https:' + url\n }\n return realFetch.call(this, url, options)\n}\n\nfetch.ponyfill = true\n\nmodule.exports = exports = fetch\nexports.fetch = fetch\nexports.Headers = nodeFetch.Headers\nexports.Request = nodeFetch.Request\nexports.Response = nodeFetch.Response\n\n// Needed for TypeScript consumers without esModuleInterop.\nexports.default = fetch\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || this\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => { callback && callback(null) }\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(){\n this.close()\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry()\n }\n\n poll(){\n if(!(this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting)){ return }\n\n Ajax.request(\"GET\", this.endpointURL(), \"application/json\", null, this.timeout, this.ontimeout.bind(this), (resp) => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => {\n this.onmessage({data: msg})\n }, 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen()\n this.poll()\n break\n case 403:\n this.onerror()\n this.close()\n break\n case 0:\n case 500:\n this.onerror()\n this.closeAndRetry()\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n Ajax.request(\"POST\", this.endpointURL(), \"application/json\", body, this.timeout, this.onerror.bind(this, \"timeout\"), (resp) => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry()\n }\n })\n }\n\n close(_code, _reason){\n this.readyState = SOCKET_STATES.closed\n this.onclose()\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millsec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millsec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.disconnect()\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualifed socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n this.connectClock++\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * @private\n */\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.abnormalClose(\"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n clearTimeout(this.heartbeatTimer)\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n clearTimeout(this.heartbeatTimer)\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n abnormalClose(reason){\n this.closeWasClean = false\n if(this.isConnected()){ this.conn.close(WS_CLOSE_NORMAL, reason) }\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n clearTimeout(this.heartbeatTimer)\n this.pendingHeartbeatRef = null\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}\n", "'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n },\n tokenChars\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n };\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data, true);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf, false);\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf);\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n randomFillSync(mask, 0, 4);\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(data, {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1: false\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const params = this._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options = {}) {\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = listener;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n this._sender = new Sender(socket, this._extensions, options.generateMask);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n\n websocket._url = address;\n }\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n let invalidURLMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isUnixSocket) {\n invalidURLMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", or \"ws+unix:\"';\n } else if (isUnixSocket && !parsedUrl.pathname) {\n invalidURLMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidURLMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidURLMessage) {\n const err = new SyntaxError(invalidURLMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalHost = parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (parsedUrl.host !== websocket._originalHost) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n delete opts.headers.host;\n opts.auth = undefined;\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n}\n\n/**\n * Emit the `'error'` and `'close'` event.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key']\n : false;\n const version = +req.headers['sec-websocket-version'];\n\n if (\n req.method !== 'GET' ||\n req.headers.upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n", "\"use strict\";\n\nmodule.exports = require('ws');", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\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", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "assert.notEqual = notEqual\nassert.notOk = notOk\nassert.equal = equal\nassert.ok = assert\n\nmodule.exports = assert\n\nfunction equal (a, b, m) {\n assert(a == b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notEqual (a, b, m) {\n assert(a != b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notOk (t, m) {\n assert(!t, m)\n}\n\nfunction assert (t, m) {\n if (!t) throw new Error(m || 'AssertionError')\n}\n", "\nmodule.exports = loadWebAssembly\n\nloadWebAssembly.supported = typeof WebAssembly !== 'undefined'\n\nfunction loadWebAssembly (opts) {\n if (!loadWebAssembly.supported) return null\n\n var imp = opts && opts.imports\n var wasm = toUint8Array('AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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')\n var ready = null\n\n var mod = {\n buffer: wasm,\n memory: null,\n exports: null,\n realloc: realloc,\n onload: onload\n }\n\n onload(function () {})\n\n return mod\n\n function realloc (size) {\n mod.exports.memory.grow(Math.ceil(Math.abs(size - mod.memory.length) / 65536))\n mod.memory = new Uint8Array(mod.exports.memory.buffer)\n }\n\n function onload (cb) {\n if (mod.exports) return cb()\n\n if (ready) {\n ready.then(cb.bind(null, null)).catch(cb)\n return\n }\n\n try {\n if (opts && opts.async) throw new Error('async')\n setup({instance: new WebAssembly.Instance(new WebAssembly.Module(wasm), imp)})\n } catch (err) {\n ready = WebAssembly.instantiate(wasm, imp).then(setup)\n }\n\n onload(cb)\n }\n\n function setup (w) {\n mod.exports = w.instance.exports\n mod.memory = mod.exports.memory && mod.exports.memory.buffer && new Uint8Array(mod.exports.memory.buffer)\n }\n}\n\nfunction toUint8Array (s) {\n if (typeof atob === 'function') return new Uint8Array(atob(s).split('').map(charCodeAt))\n return new (require('buf' + 'fer').Buffer)(s, 'base64')\n}\n\nfunction charCodeAt (c) {\n return c.charCodeAt(0)\n}\n", "var assert = require('nanoassert')\nvar wasm = require('./blake2b')()\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!(wasm && wasm.exports)) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n\n wasm.memory.fill(0, 0, 64)\n wasm.memory[0] = this.digestLength\n wasm.memory[1] = key ? key.length : 0\n wasm.memory[2] = 1 // fanout\n wasm.memory[3] = 1 // depth\n\n if (salt) wasm.memory.set(salt, 32)\n if (personal) wasm.memory.set(personal, 48)\n\n if (this.pointer + 216 > wasm.memory.length) wasm.realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.exports.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n wasm.memory.fill(0, head, head + key.length) // whiteout key\n wasm.memory[this.pointer + 200] = 128\n }\n}\n\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input, 'input must be TypedArray or Buffer')\n\n if (head + input.length > wasm.memory.length) wasm.realloc(head + input.length)\n wasm.memory.set(input, head)\n wasm.exports.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.exports.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return wasm.memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (enc === 'hex') {\n return hexSlice(wasm.memory, this.pointer + 128, this.digestLength)\n }\n\n assert(enc.length >= this.digestLength, 'input must be TypedArray or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = wasm.memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm && wasm.buffer\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasm) return cb(new Error('WebAssembly not supported'))\n\n // backwards compat, can be removed in a new major\n var p = new Promise(function (reject, resolve) {\n wasm.onload(function (err) {\n if (err) resolve()\n else reject()\n cb(err)\n })\n })\n\n return p\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nfunction noop () {}\n\nfunction hexSlice (buf, start, len) {\n var str = ''\n for (var i = 0; i < len; i++) str += toHex(buf[start + i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input != null, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n Proto = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'\"\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({publicKey, encryptedSecretKey})\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({to, amount})\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], - "mappings": "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AO,CAAC,EAC9B,KAAK,MAAM,OAAOA,CAAG,CAC9B,IC9CA,IAAAG,GAAAC,EAAAC,IAAA,CAAAC,IAAA,IAAIC,GAAOF,GAEXE,GAAK,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAE,GAAAC,EAAAC,IAAA,cAAAC,IAEA,IAAIC,GAASF,GAETG,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAE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IAAMsB,EAAEtB,GACdW,EAAEX,EAAI,IAAM0B,EAAE1B,GACdW,EAAEX,EAAI,IAAM8B,EAAE9B,GACdW,EAAEX,EAAI,IAAMmB,EAAEnB,GAElB,IAAI+F,EAAMpF,EAAE,SAAS,EAAE,EACnBqF,EAAMrF,EAAE,SAAS,EAAE,EACvB,OAAA8E,GAASM,EAAKA,CAAG,EACjBvD,GAAEwD,EAAKA,EAAKD,CAAG,EACf/D,GAAUH,EAAGmE,CAAG,EACT,CACX,CACA,SAASC,GAAuBpE,EAAGX,EAAG,CAClC,OAAOyE,GAAkB9D,EAAGX,EAAGrB,EAAE,CACrC,CACA,IAAIqG,GAAI,CACJ,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAAqBC,EAAIC,EAAInE,EAA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", - "names": ["Buffer", "init_esbuild_inject", "__esmMin", "require_lib", "__commonJSMin", "exports", "module", "init_esbuild_inject", "conversions", "sign", "x", "evenRound", "createNumberConversion", "bitLength", "typeOpts", "lowerBound", "upperBound", "moduloVal", "moduloBound", "V", "opts", "val", "c", "S", "n", "U", "d", "a", "b", "require_utils", "__commonJSMin", "exports", "module", "init_esbuild_inject", "target", "source", "keys", "impl", "wrapper", "require_tr46", "__commonJSMin", "exports", "module", "init_esbuild_inject", "punycode", "mappingTable", "PROCESSING_OPTIONS", "normalize", "str", "s", "findStatus", "val", "start", "end", "mid", "target", "regexAstralSymbols", "countSymbols", "string", "mapChars", "domain_name", "useSTD3", "processing_option", "hasError", "processed", "len", "i", "codePoint", "status", "combiningMarksRegex", "validateLabel", "label", "error", "processing", "result", "labels", "validation", "verifyDnsLength", "l", "total", "require_url_state_machine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "punycode", "tr46", "specialSchemes", "failure", "countSymbols", "str", "at", "input", "idx", "c", "isASCIIDigit", "isASCIIAlpha", "isASCIIAlphanumeric", "isASCIIHex", "isSingleDot", "buffer", "isDoubleDot", "isWindowsDriveLetterCodePoints", "cp1", "cp2", "isWindowsDriveLetterString", "string", "isNormalizedWindowsDriveLetterString", "containsForbiddenHostCodePoint", "containsForbiddenHostCodePointExcludingPercent", "isSpecialScheme", "scheme", "isSpecial", "url", "defaultPort", "percentEncode", "hex", "utf8PercentEncode", "buf", "Buffer", "i", "utf8PercentDecode", "output", "isC0ControlPercentEncode", "extraPathPercentEncodeSet", "isPathPercentEncode", "extraUserinfoPercentEncodeSet", "isUserinfoPercentEncode", "percentEncodeChar", "encodeSetPredicate", "cStr", "parseIPv4Number", "R", "parseIPv4", "parts", "numbers", "part", "ipv4", "counter", "n", "serializeIPv4", "address", "parseIPv6", "pieceIndex", "compress", "pointer", "value", "length", "numbersSeen", "ipv4Piece", "number", "swaps", "temp", "serializeIPv6", "findLongestZeroSequence", "ignore0", "parseHost", "isSpecialArg", "parseOpaqueHost", "domain", "asciiDomain", "ipv4Host", "decoded", "arr", "maxIdx", "maxLen", "currStart", "currLen", "serializeHost", "host", "trimControlChars", "trimTabAndNewline", "shortenPath", "path", "isNormalizedWindowsDriveLetter", "includesCredentials", "cannotHaveAUsernamePasswordPort", "URLStateMachine", "base", "encodingOverride", "stateOverride", "res", "ret", "len", "codePoint", "encodedCodePoints", "port", "fileOtherwiseCodePoints", "serializeURL", "excludeFragment", "serializeOrigin", "tuple", "result", "options", "usm", "username", "password", "integer", "require_URL_impl", "__commonJSMin", "exports", "init_esbuild_inject", "usm", "constructorArgs", "url", "base", "parsedBase", "parsedURL", "v", "input", "require_URL", "__commonJSMin", "exports", "module", "init_esbuild_inject", "conversions", "utils", "Impl", "impl", "URL", "url", "args", "i", "V", "obj", "constructorArgs", "privateData", "require_public_api", "__commonJSMin", "exports", "init_esbuild_inject", "require_lib", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_interopDefault", "ex", "Stream", "http", "Url", "whatwgUrl", "https", "zlib", "Readable", "BUFFER", "TYPE", "Blob", "blobParts", "options", "buffers", "size", "a", "length", "i", "element", "buffer", "Buffer", "type", "buf", "ab", "readable", "start", "end", "relativeStart", "relativeEnd", "span", "slicedBuffer", "blob", "FetchError", "message", "systemError", "convert", "INTERNALS", "PassThrough", "Body", "body", "_this", "_ref", "_ref$size", "_ref$timeout", "timeout", "isURLSearchParams", "isBlob", "err", "error", "consumeBody", "ct", "_this2", "_this3", "convertBody", "proto", "name", "desc", "_this4", "accum", "accumBytes", "abort", "resolve", "reject", "resTimeout", "chunk", "headers", "charset", "res", "str", "obj", "clone", "instance", "p1", "p2", "extractContentType", "getTotalBytes", "writeToStream", "dest", "invalidTokenRegex", "invalidHeaderCharRegex", "validateName", "validateValue", "value", "find", "map", "key", "MAP", "Headers", "init", "rawHeaders", "headerNames", "headerName", "method", "pairs", "pair", "callback", "thisArg", "getHeaders", "_pairs$i", "createHeadersIterator", "kind", "k", "INTERNAL", "target", "iterator", "HeadersIteratorPrototype", "_INTERNAL", "index", "values", "len", "exportNodeCompatibleHeaders", "hostHeaderKey", "createHeadersLenient", "val", "INTERNALS$1", "STATUS_CODES", "Response", "opts", "status", "contentType", "INTERNALS$2", "URL", "parse_url", "format_url", "parseURL", "urlStr", "streamDestructionSupported", "isRequest", "input", "isAbortSignal", "signal", "Request", "parsedURL", "inputBody", "getNodeRequestOptions", "request", "contentLengthValue", "totalBytes", "agent", "AbortError", "URL$1", "PassThrough$1", "isDomainOrSubdomain", "destination", "original", "orig", "fetch", "url", "send", "response", "abortAndFinalize", "finalize", "req", "reqTimeout", "socket", "location", "locationURL", "requestOpts", "response_options", "codings", "zlibOptions", "code", "require_node_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nodeFetch", "realFetch", "fetch", "url", "options", "__export", "exports", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "token", "messages", "msg", "_code", "_reason", "opts", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "code", "error", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_constants", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "require_buffer_util", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EMPTY_BUFFER", "concat", "list", "totalLength", "target", "Buffer", "offset", "buf", "_mask", "source", "mask", "output", "length", "i", "_unmask", "buffer", "toArrayBuffer", "toBuffer", "data", "bufferUtil", "require_limiter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "kDone", "kRun", "Limiter", "concurrency", "job", "require_permessage_deflate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "zlib", "bufferUtil", "Limiter", "kStatusCode", "TRAILER", "Buffer", "kPerMessageDeflate", "kTotalLength", "kCallback", "kBuffers", "kError", "zlibLimiter", "PerMessageDeflate", "options", "isServer", "maxPayload", "concurrency", "params", "configurations", "callback", "offers", "opts", "accepted", "response", "key", "value", "num", "data", "fin", "done", "err", "result", "endpoint", "windowBits", "inflateOnError", "inflateOnData", "deflateOnData", "chunk", "require_validation", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "isValidStatusCode", "code", "_isValidUTF8", "buf", "len", "i", "isValidUTF8", "require_receiver", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "PerMessageDeflate", "BINARY_TYPES", "EMPTY_BUFFER", "kStatusCode", "kWebSocket", "concat", "toArrayBuffer", "unmask", "isValidStatusCode", "isValidUTF8", "GET_INFO", "GET_PAYLOAD_LENGTH_16", "GET_PAYLOAD_LENGTH_64", "GET_MASK", "GET_DATA", "INFLATING", "Receiver", "options", "chunk", "encoding", "cb", "n", "buf", "dst", "Buffer", "offset", "err", "error", "compressed", "num", "data", "er", "messageLength", "fragments", "code", "ErrorCtor", "message", "prefix", "statusCode", "errorCode", "require_sender", "__commonJSMin", "exports", "module", "init_esbuild_inject", "net", "tls", "randomFillSync", "PerMessageDeflate", "EMPTY_BUFFER", "isValidStatusCode", "applyMask", "toBuffer", "kByteLength", "maskBuffer", "Buffer", "Sender", "socket", "extensions", "generateMask", "data", "options", "mask", "merge", "offset", "skipMasking", "dataLength", "payloadLength", "target", "code", "cb", "buf", "length", "byteLength", "readOnly", "perMessageDeflate", "opcode", "rsv1", "opts", "compress", "_", "err", "i", "params", "callback", "list", "require_event_target", "__commonJSMin", "exports", "module", "init_esbuild_inject", "kForOnEventAttribute", "kListener", "kCode", "kData", "kError", "kMessage", "kReason", "kTarget", "kType", "kWasClean", "Event", "type", "CloseEvent", "options", "ErrorEvent", "MessageEvent", "EventTarget", "listener", "wrapper", "data", "isBinary", "event", "code", "message", "error", "handler", "require_extension", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "push", "dest", "name", "elem", "parse", "header", "offers", "params", "mustUnescape", "isEscaping", "inQuotes", "extensionName", "paramName", "start", "code", "end", "i", "value", "token", "format", "extensions", "extension", "configurations", "k", "values", "v", "require_websocket", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EventEmitter", "https", "http", "net", "tls", "randomBytes", "createHash", "Readable", "URL", "PerMessageDeflate", "Receiver", "Sender", "BINARY_TYPES", "EMPTY_BUFFER", "GUID", "kForOnEventAttribute", "kListener", "kStatusCode", "kWebSocket", "NOOP", "addEventListener", "removeEventListener", "format", "parse", "toBuffer", "readyStates", "subprotocolRegex", "protocolVersions", "closeTimeout", "WebSocket", "address", "protocols", "options", "initAsClient", "type", "socket", "head", "receiver", "receiverOnConclude", "receiverOnDrain", "receiverOnError", "receiverOnMessage", "receiverOnPing", "receiverOnPong", "socketOnClose", "socketOnData", "socketOnEnd", "socketOnError", "code", "data", "msg", "abortHandshake", "err", "mask", "cb", "sendAfterClose", "opts", "property", "method", "listener", "handler", "websocket", "parsedUrl", "isSecure", "isUnixSocket", "invalidURLMessage", "emitErrorAndClose", "defaultPort", "key", "get", "protocolSet", "perMessageDeflate", "tlsConnect", "netConnect", "protocol", "parts", "headers", "value", "Buffer", "req", "res", "location", "statusCode", "addr", "digest", "serverProt", "protError", "secWebSocketExtensions", "extensions", "extensionNames", "stream", "message", "length", "reason", "resume", "receiverOnFinish", "isBinary", "chunk", "require_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Duplex", "emitClose", "stream", "duplexOnEnd", "duplexOnError", "err", "createWebSocketStream", "ws", "options", "terminateOnDestroy", "duplex", "msg", "isBinary", "data", "callback", "called", "chunk", "encoding", "require_subprotocol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "parse", "header", "protocols", "start", "end", "code", "protocol", "require_websocket_server", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EventEmitter", "http", "https", "net", "tls", "createHash", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "GUID", "kWebSocket", "keyRegex", "RUNNING", "CLOSING", "CLOSED", "WebSocketServer", "options", "callback", "req", "res", "body", "emitConnection", "addListeners", "socket", "head", "cb", "emitClose", "server", "index", "socketOnError", "key", "version", "abortHandshake", "secWebSocketProtocol", "protocols", "secWebSocketExtensions", "extensions", "perMessageDeflate", "offers", "info", "verified", "code", "message", "headers", "digest", "ws", "protocol", "params", "value", "map", "event", "Buffer", "h", "require_ws", "__commonJSMin", "exports", "module", "init_esbuild_inject", "WebSocket", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "l", "a", "b", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "i", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "i", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "e", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "l", "a", "b", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "i", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "e", "enqueue", "fn", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex", "str", "end", "r", "len", "c", "parseBase", "mul", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "r", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "r", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "init_esbuild_inject", "util", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h2", "h3", "nz", "h", "pow", "a", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "nx", "ny", "nt", "nz", "j", "f", "p", "h", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "notEqual", "notOk", "equal", "a", "b", "m", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "loadWebAssembly", "opts", "imp", "wasm", "toUint8Array", "ready", "mod", "realloc", "onload", "size", "cb", "setup", "w", "s", "charCodeAt", "c", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "wasm", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "input", "enc", "hexSlice", "i", "cb", "noop", "p", "reject", "resolve", "err", "buf", "start", "len", "str", "toHex", "n", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "r", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_32", "set25519", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "b", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "m", "par25519", "d", "vn", "x", "xi", "y", "yi", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "i", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "createHash", "createHmac", "createECDH", "createCipheriv", "randomBytes", "createDecipheriv", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "randomBytes", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "createHash", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "createECDH", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "createHmac", "pseudoRandomKey", "cipher", "createCipheriv", "decipher", "createDecipheriv", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_base64url", "createHmac", "createHash", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "t", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] + "sources": ["../esbuild.inject.js", "../node_modules/webidl-conversions/lib/index.js", "../node_modules/whatwg-url/lib/utils.js", "../node_modules/tr46/index.js", "../node_modules/whatwg-url/lib/url-state-machine.js", "../node_modules/whatwg-url/lib/URL-impl.js", "../node_modules/whatwg-url/lib/URL.js", "../node_modules/whatwg-url/lib/public-api.js", "../node_modules/node-fetch/lib/index.js", "../node_modules/cross-fetch/dist/node-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/ws/lib/constants.js", "../node_modules/ws/lib/buffer-util.js", "../node_modules/ws/lib/limiter.js", "../node_modules/ws/lib/permessage-deflate.js", "../node_modules/ws/lib/validation.js", "../node_modules/ws/lib/receiver.js", "../node_modules/ws/lib/sender.js", "../node_modules/ws/lib/event-target.js", "../node_modules/ws/lib/extension.js", "../node_modules/ws/lib/websocket.js", "../node_modules/ws/lib/stream.js", "../node_modules/ws/lib/subprotocol.js", "../node_modules/ws/lib/websocket-server.js", "../node_modules/ws/index.js", "../node_modules/isomorphic-ws/node.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/elliptic/node_modules/bn.js/lib/bn.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/brorand/index.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/inherits/inherits.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/b4a/index.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], + "sourcesContent": ["export let Buffer = require(\"buffer\").Buffer", "\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n", "const nodeFetch = require('node-fetch')\nconst realFetch = nodeFetch.default || nodeFetch\n\nconst fetch = function (url, options) {\n // Support schemaless URIs on the server for parity with the browser.\n // Ex: //github.com/ -> https://github.com/\n if (/^\\/\\//.test(url)) {\n url = 'https:' + url\n }\n return realFetch.call(this, url, options)\n}\n\nfetch.ponyfill = true\n\nmodule.exports = exports = fetch\nexports.fetch = fetch\nexports.Headers = nodeFetch.Headers\nexports.Request = nodeFetch.Request\nexports.Response = nodeFetch.Response\n\n// Needed for TypeScript consumers without esModuleInterop.\nexports.default = fetch\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || global\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n return this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n return this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n return req\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => callback && callback(null)\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n return req\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.reqs = new Set()\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(code, reason, wasClean){\n this.close(code, reason, wasClean)\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry(1005, \"timeout\", false)\n }\n\n isActive(){ return this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting }\n\n poll(){\n this.ajax(\"GET\", null, () => this.ontimeout(), resp => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => this.onmessage({data: msg}), 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen({})\n this.poll()\n break\n case 403:\n this.onerror(403)\n this.close(1008, \"forbidden\", false)\n break\n case 0:\n case 500:\n this.onerror(500)\n this.closeAndRetry(1011, \"internal server error\", 500)\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n this.ajax(\"POST\", body, () => this.onerror(\"timeout\"), resp => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry(1011, \"internal server error\", false)\n }\n })\n }\n\n close(code, reason, wasClean){\n for(let req of this.reqs){ req.abort() }\n this.readyState = SOCKET_STATES.closed\n let opts = Object.assign({code: 1000, reason: undefined, wasClean: true}, {code, reason, wasClean})\n if(typeof(CloseEvent) !== \"undefined\"){\n this.onclose(new CloseEvent(\"close\", opts))\n } else {\n this.onclose(opts)\n }\n }\n\n ajax(method, body, onCallerTimeout, callback){\n let req\n let ontimeout = () => {\n this.reqs.delete(req)\n onCallerTimeout()\n }\n req = Ajax.request(method, this.endpointURL(), \"application/json\", body, this.timeout, ontimeout, resp => {\n this.reqs.delete(req)\n if(this.isActive()){ callback(resp) }\n })\n this.reqs.add(req)\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millisec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millisec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimeoutTimer = null\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Returns the LongPoll transport reference\n */\n getLongPollTransport(){ return LongPoll }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.sendBuffer = []\n if(this.conn){\n this.conn.close()\n this.conn = null\n }\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualified socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n\n this.connectClock++\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * Pings the server and invokes the callback with the RTT in milliseconds\n * @param {Function} callback\n *\n * Returns true if the ping was pushed or false if unable to be pushed.\n */\n ping(callback){\n if(!this.isConnected()){ return false }\n let ref = this.makeRef()\n let startTime = Date.now()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: ref})\n let onMsgRef = this.onMessage(msg => {\n if(msg.ref === ref){\n this.off([onMsgRef])\n callback(Date.now() - startTime)\n }\n })\n return true\n }\n\n /**\n * @private\n */\n\n clearHeartbeats(){\n clearTimeout(this.heartbeatTimer)\n clearTimeout(this.heartbeatTimeoutTimer)\n }\n\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.triggerChanError()\n this.closeWasClean = false\n this.teardown(() => this.reconnectTimer.scheduleTimeout(), WS_CLOSE_NORMAL, \"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n this.clearHeartbeats()\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onopen = function (){ } // noop\n this.conn.onerror = function (){ } // noop\n this.conn.onmessage = function (){ } // noop\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n this.clearHeartbeats()\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimeoutTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n this.clearHeartbeats()\n this.pendingHeartbeatRef = null\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}", "'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data, true);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf, false);\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf);\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n randomFillSync(mask, 0, 4);\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(data, {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1: false\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const params = this._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n this._sender = new Sender(socket, this._extensions, options.generateMask);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n\n websocket._url = address;\n }\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n if (res.headers.upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n req.end();\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (req.headers.upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!key || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 8 && version !== 13) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message);\n }\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n", "\"use strict\";\n\nmodule.exports = require('ws');", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\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", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "module.exports = assert\n\nclass AssertionError extends Error {}\nAssertionError.prototype.name = 'AssertionError'\n\n/**\n * Minimal assert function\n * @param {any} t Value to check if falsy\n * @param {string=} m Optional assertion error message\n * @throws {AssertionError}\n */\nfunction assert (t, m) {\n if (!t) {\n var err = new AssertionError(m)\n if (Error.captureStackTrace) Error.captureStackTrace(err, assert)\n throw err\n }\n}\n", "function isBuffer (value) {\n return Buffer.isBuffer(value) || value instanceof Uint8Array\n}\n\nfunction isEncoding (encoding) {\n return Buffer.isEncoding(encoding)\n}\n\nfunction alloc (size, fill, encoding) {\n return Buffer.alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n return Buffer.allocUnsafe(size)\n}\n\nfunction allocUnsafeSlow (size) {\n return Buffer.allocUnsafeSlow(size)\n}\n\nfunction byteLength (string, encoding) {\n return Buffer.byteLength(string, encoding)\n}\n\nfunction compare (a, b) {\n return Buffer.compare(a, b)\n}\n\nfunction concat (buffers, totalLength) {\n return Buffer.concat(buffers, totalLength)\n}\n\nfunction copy (source, target, targetStart, start, end) {\n return toBuffer(source).copy(target, targetStart, start, end)\n}\n\nfunction equals (a, b) {\n return toBuffer(a).equals(b)\n}\n\nfunction fill (buffer, value, offset, end, encoding) {\n return toBuffer(buffer).fill(value, offset, end, encoding)\n}\n\nfunction from (value, encodingOrOffset, length) {\n return Buffer.from(value, encodingOrOffset, length)\n}\n\nfunction includes (buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).includes(value, byteOffset, encoding)\n}\n\nfunction indexOf (buffer, value, byfeOffset, encoding) {\n return toBuffer(buffer).indexOf(value, byfeOffset, encoding)\n}\n\nfunction lastIndexOf (buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).lastIndexOf(value, byteOffset, encoding)\n}\n\nfunction swap16 (buffer) {\n return toBuffer(buffer).swap16()\n}\n\nfunction swap32 (buffer) {\n return toBuffer(buffer).swap32()\n}\n\nfunction swap64 (buffer) {\n return toBuffer(buffer).swap64()\n}\n\nfunction toBuffer (buffer) {\n if (Buffer.isBuffer(buffer)) return buffer\n return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nfunction toString (buffer, encoding, start, end) {\n return toBuffer(buffer).toString(encoding, start, end)\n}\n\nfunction write (buffer, string, offset, length, encoding) {\n return toBuffer(buffer).write(string, offset, length, encoding)\n}\n\nfunction writeDoubleLE (buffer, value, offset) {\n return toBuffer(buffer).writeDoubleLE(value, offset)\n}\n\nfunction writeFloatLE (buffer, value, offset) {\n return toBuffer(buffer).writeFloatLE(value, offset)\n}\n\nfunction writeUInt32LE (buffer, value, offset) {\n return toBuffer(buffer).writeUInt32LE(value, offset)\n}\n\nfunction writeInt32LE (buffer, value, offset) {\n return toBuffer(buffer).writeInt32LE(value, offset)\n}\n\nfunction readDoubleLE (buffer, offset) {\n return toBuffer(buffer).readDoubleLE(offset)\n}\n\nfunction readFloatLE (buffer, offset) {\n return toBuffer(buffer).readFloatLE(offset)\n}\n\nfunction readUInt32LE (buffer, offset) {\n return toBuffer(buffer).readUInt32LE(offset)\n}\n\nfunction readInt32LE (buffer, offset) {\n return toBuffer(buffer).readInt32LE(offset)\n}\n\nmodule.exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n writeDoubleLE,\n writeFloatLE,\n writeUInt32LE,\n writeInt32LE,\n readDoubleLE,\n readFloatLE,\n readUInt32LE,\n readInt32LE\n}\n", "var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __toBinary = /* @__PURE__ */ (() => {\n var table = new Uint8Array(128);\n for (var i = 0; i < 64; i++)\n table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i;\n return (base64) => {\n var n = base64.length, bytes2 = new Uint8Array((n - (base64[n - 1] == \"=\") - (base64[n - 2] == \"=\")) * 3 / 4 | 0);\n for (var i2 = 0, j = 0; i2 < n; ) {\n var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)];\n var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)];\n bytes2[j++] = c0 << 2 | c1 >> 4;\n bytes2[j++] = c1 << 4 | c2 >> 2;\n bytes2[j++] = c2 << 6 | c3;\n }\n return bytes2;\n };\n})();\n\n// wasm-binary:./blake2b.wat\nvar require_blake2b = __commonJS({\n \"wasm-binary:./blake2b.wat\"(exports2, module2) {\n module2.exports = __toBinary(\"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\");\n }\n});\n\n// wasm-module:./blake2b.wat\nvar bytes = require_blake2b();\nvar compiled = WebAssembly.compile(bytes);\nmodule.exports = async (imports) => {\n const instance = await WebAssembly.instantiate(await compiled, imports);\n return instance.exports;\n};\n", "var assert = require('nanoassert')\nvar b4a = require('b4a')\n\nvar wasm = null\nvar wasmPromise = typeof WebAssembly !== \"undefined\" && require('./blake2b')().then(mod => {\n wasm = mod\n})\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!wasm) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) {\n assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')\n assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n }\n if (salt != null) {\n assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')\n assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n }\n if (personal != null) {\n assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')\n assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n this._memory = new Uint8Array(wasm.memory.buffer)\n\n this._memory.fill(0, 0, 64)\n this._memory[0] = this.digestLength\n this._memory[1] = key ? key.length : 0\n this._memory[2] = 1 // fanout\n this._memory[3] = 1 // depth\n\n if (salt) this._memory.set(salt, 32)\n if (personal) this._memory.set(personal, 48)\n\n if (this.pointer + 216 > this._memory.length) this._realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n this._memory.fill(0, head, head + key.length) // whiteout key\n this._memory[this.pointer + 200] = 128\n }\n}\n\nBlake2b.prototype._realloc = function (size) {\n wasm.memory.grow(Math.max(0, Math.ceil(Math.abs(size - this._memory.length) / 65536)))\n this._memory = new Uint8Array(wasm.memory.buffer)\n}\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')\n\n if (head + input.length > this._memory.length) this._realloc(head + input.length)\n this._memory.set(input, head)\n wasm.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return this._memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (typeof enc === 'string') {\n return b4a.toString(this._memory, enc, this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n assert(enc instanceof Uint8Array && enc.length >= this.digestLength, 'input must be Uint8Array or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = this._memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasmPromise) return cb(new Error('WebAssembly not supported'))\n return wasmPromise.then(() => cb(), cb)\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nBlake2b.prototype.getPartialHash = function () {\n return this._memory.slice(this.pointer, this.pointer + 216);\n}\n\nBlake2b.prototype.setPartialHash = function (ph) {\n this._memory.set(ph, this.pointer);\n}\n\nfunction noop () {}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf instanceof Uint8Array, 'out must be \"binary\", \"hex\", Uint8Array, or Buffer')\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) {\n assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')\n assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n }\n if (salt != null) {\n assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')\n assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n }\n if (personal != null) {\n assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')\n assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n module.exports = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n \"data\": 250,\n \"contract\": 249,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be in \" + Object.keys(txTypes).map(t => `'${t}'`).join(\", \")\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({ publicKey, encryptedSecretKey })\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({ to, amount })\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], + "mappings": "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AAGA,EAAIF,EAAI,OAAQE,IAC1BF,EAAIE,IAAM,IACZ,KAAK,MAAQ,IAAI,KAAK,KAAK,EAAE,OAAOF,CAAG,CACzC,EAEAF,GAAK,UAAU,OAAS,SAAgBK,EAAKF,EAAK,CAChD,YAAK,MAAM,OAAOE,EAAKF,CAAG,EACnB,IACT,EAEAH,GAAK,UAAU,OAAS,SAAgBG,EAAK,CAC3C,YAAK,MAAM,OAAO,KAAK,MAAM,OAAO,CAAC,EAC9B,KAAK,MAAM,OAAOA,CAAG,CAC9B,IC9CA,IAAAG,GAAAC,EAAAC,IAAA,CAAAC,IAAA,IAAIC,GAAOF,GAEXE,GAAK,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,k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A,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAAqBC,EAAIC,EAAInE,EAAGhB,EAAG,CAIxC,QAHIoF,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAIC,GAAIzH,GAAGiC,EAAGrB,EAAGC,EAAGS,EAAGQ,EAAGJ,EAAGP,EAC/JuG,EAAMtB,EAAG,GAAIuB,EAAMvB,EAAG,GAAIwB,EAAMxB,EAAG,GAAIyB,EAAMzB,EAAG,GAAI0B,EAAM1B,EAAG,GAAI2B,GAAM3B,EAAG,GAAI4B,EAAM5B,EAAG,GAAI6B,GAAM7B,EAAG,GAAI8B,EAAM7B,EAAG,GAAI8B,EAAM9B,EAAG,GAAI+B,EAAM/B,EAAG,GAAIgC,EAAMhC,EAAG,GAAIiC,EAAMjC,EAAG,GAAIkC,GAAMlC,EAAG,GAAImC,GAAMnC,EAAG,GAAIoC,GAAMpC,EAAG,GAC5MqC,GAAM,EACHxH,GAAK,KAAK,CA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", + "names": ["Buffer", "init_esbuild_inject", "__esmMin", "require_lib", "__commonJSMin", "exports", "module", "init_esbuild_inject", "conversions", "sign", "x", "evenRound", "createNumberConversion", "bitLength", "typeOpts", "lowerBound", "upperBound", "moduloVal", "moduloBound", "V", "opts", "val", "c", "S", "n", "U", "d", "a", "b", "require_utils", "__commonJSMin", "exports", "module", "init_esbuild_inject", "target", "source", "keys", "impl", "wrapper", "require_tr46", "__commonJSMin", "exports", "module", "init_esbuild_inject", "punycode", "mappingTable", "PROCESSING_OPTIONS", "normalize", "str", "s", "findStatus", "val", "start", "end", "mid", "target", "regexAstralSymbols", "countSymbols", "string", "mapChars", "domain_name", "useSTD3", "processing_option", "hasError", "processed", "len", "i", "codePoint", "status", "combiningMarksRegex", "validateLabel", "label", "error", "processing", "result", "labels", "validation", "verifyDnsLength", "l", "total", "require_url_state_machine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "punycode", "tr46", "specialSchemes", "failure", "countSymbols", "str", "at", "input", "idx", "c", "isASCIIDigit", "isASCIIAlpha", "isASCIIAlphanumeric", "isASCIIHex", "isSingleDot", "buffer", "isDoubleDot", "isWindowsDriveLetterCodePoints", "cp1", "cp2", "isWindowsDriveLetterString", "string", "isNormalizedWindowsDriveLetterString", "containsForbiddenHostCodePoint", "containsForbiddenHostCodePointExcludingPercent", "isSpecialScheme", "scheme", "isSpecial", "url", "defaultPort", "percentEncode", "hex", "utf8PercentEncode", "buf", "Buffer", "i", "utf8PercentDecode", "output", "isC0ControlPercentEncode", "extraPathPercentEncodeSet", "isPathPercentEncode", "extraUserinfoPercentEncodeSet", "isUserinfoPercentEncode", "percentEncodeChar", "encodeSetPredicate", "cStr", "parseIPv4Number", "R", "parseIPv4", "parts", "numbers", "part", "ipv4", "counter", "n", "serializeIPv4", "address", "parseIPv6", "pieceIndex", "compress", "pointer", "value", "length", "numbersSeen", "ipv4Piece", "number", "swaps", "temp", "serializeIPv6", "findLongestZeroSequence", "ignore0", "parseHost", "isSpecialArg", "parseOpaqueHost", "domain", "asciiDomain", "ipv4Host", "decoded", "arr", "maxIdx", "maxLen", "currStart", "currLen", "serializeHost", "host", "trimControlChars", "trimTabAndNewline", "shortenPath", "path", "isNormalizedWindowsDriveLetter", "includesCredentials", "cannotHaveAUsernamePasswordPort", "URLStateMachine", "base", "encodingOverride", "stateOverride", "res", "ret", "len", "codePoint", "encodedCodePoints", "port", "fileOtherwiseCodePoints", "serializeURL", "excludeFragment", "serializeOrigin", "tuple", "result", "options", "usm", "username", "password", "integer", "require_URL_impl", "__commonJSMin", "exports", "init_esbuild_inject", "usm", "constructorArgs", "url", "base", "parsedBase", "parsedURL", "v", "input", "require_URL", "__commonJSMin", "exports", "module", "init_esbuild_inject", "conversions", "utils", "Impl", "impl", "URL", "url", "args", "i", "V", "obj", "constructorArgs", "privateData", "require_public_api", "__commonJSMin", "exports", "init_esbuild_inject", "require_lib", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_interopDefault", "ex", "Stream", "http", "Url", "whatwgUrl", "https", "zlib", "Readable", "BUFFER", "TYPE", "Blob", "blobParts", "options", "buffers", "size", "a", "length", "i", "element", "buffer", "Buffer", "type", "buf", "ab", "readable", "start", "end", "relativeStart", "relativeEnd", "span", "slicedBuffer", "blob", "FetchError", "message", "systemError", "convert", "INTERNALS", "PassThrough", "Body", "body", "_this", "_ref", "_ref$size", "_ref$timeout", "timeout", "isURLSearchParams", "isBlob", "err", "error", "consumeBody", "ct", "_this2", "_this3", "convertBody", "proto", "name", "desc", "_this4", "accum", "accumBytes", "abort", "resolve", "reject", "resTimeout", "chunk", "headers", "charset", "res", "str", "obj", "clone", "instance", "p1", "p2", "extractContentType", "getTotalBytes", "writeToStream", "dest", "invalidTokenRegex", "invalidHeaderCharRegex", "validateName", "validateValue", "value", "find", "map", "key", "MAP", "Headers", "init", "rawHeaders", "headerNames", "headerName", "method", "pairs", "pair", "callback", "thisArg", "getHeaders", "_pairs$i", "createHeadersIterator", "kind", "k", "INTERNAL", "target", "iterator", "HeadersIteratorPrototype", "_INTERNAL", "index", "values", "len", "exportNodeCompatibleHeaders", "hostHeaderKey", "createHeadersLenient", "val", "INTERNALS$1", "STATUS_CODES", "Response", "opts", "status", "contentType", "INTERNALS$2", "URL", "parse_url", "format_url", "parseURL", "urlStr", "streamDestructionSupported", "isRequest", "input", "isAbortSignal", "signal", "Request", "parsedURL", "inputBody", "getNodeRequestOptions", "request", "contentLengthValue", "totalBytes", "agent", "AbortError", "URL$1", "PassThrough$1", "isDomainOrSubdomain", "destination", "original", "orig", "fetch", "url", "send", "response", "abortAndFinalize", "finalize", "req", "reqTimeout", "socket", "location", "locationURL", "requestOpts", "response_options", "codings", "zlibOptions", "code", "require_node_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nodeFetch", "realFetch", "fetch", "url", "options", "phoenix_exports", "__export", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "module", "__toCommonJS", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "code", "wasClean", "token", "messages", "msg", "opts", "onCallerTimeout", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "error", "startTime", "onMsgRef", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_constants", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "require_buffer_util", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EMPTY_BUFFER", "concat", "list", "totalLength", "target", "Buffer", "offset", "buf", "_mask", "source", "mask", "output", "length", "i", "_unmask", "buffer", "toArrayBuffer", "toBuffer", "data", "bufferUtil", "require_limiter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "kDone", "kRun", "Limiter", "concurrency", "job", "require_permessage_deflate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "zlib", "bufferUtil", "Limiter", "kStatusCode", "TRAILER", "Buffer", "kPerMessageDeflate", "kTotalLength", "kCallback", "kBuffers", "kError", "zlibLimiter", "PerMessageDeflate", "options", "isServer", "maxPayload", "concurrency", "params", "configurations", "callback", "offers", "opts", "accepted", "response", "key", "value", "num", "data", "fin", "done", "err", "result", "endpoint", "windowBits", "inflateOnError", "inflateOnData", "deflateOnData", "chunk", "require_validation", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "isValidStatusCode", "code", "_isValidUTF8", "buf", "len", "i", "isValidUTF8", "require_receiver", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "PerMessageDeflate", "BINARY_TYPES", "EMPTY_BUFFER", "kStatusCode", "kWebSocket", "concat", "toArrayBuffer", "unmask", "isValidStatusCode", "isValidUTF8", "GET_INFO", "GET_PAYLOAD_LENGTH_16", "GET_PAYLOAD_LENGTH_64", "GET_MASK", "GET_DATA", "INFLATING", "Receiver", "options", "chunk", "encoding", "cb", "n", "buf", "dst", "Buffer", "offset", "err", "error", "compressed", "num", "data", "er", "messageLength", "fragments", "code", "ErrorCtor", "message", "prefix", "statusCode", "errorCode", "require_sender", "__commonJSMin", "exports", "module", "init_esbuild_inject", "net", "tls", "randomFillSync", "PerMessageDeflate", "EMPTY_BUFFER", "isValidStatusCode", "applyMask", "toBuffer", "kByteLength", "maskBuffer", "Buffer", "Sender", "socket", "extensions", "generateMask", "data", "options", "mask", "merge", "offset", "skipMasking", "dataLength", "payloadLength", "target", "code", "cb", "buf", "length", "byteLength", "readOnly", "perMessageDeflate", "opcode", "rsv1", "opts", "compress", "_", "err", "i", "params", "callback", "list", "require_event_target", "__commonJSMin", "exports", "module", "init_esbuild_inject", "kForOnEventAttribute", "kListener", "kCode", "kData", "kError", "kMessage", "kReason", "kTarget", "kType", "kWasClean", "Event", "type", "CloseEvent", "options", "ErrorEvent", "MessageEvent", "EventTarget", "handler", "listener", "wrapper", "data", "isBinary", "event", "callListener", "code", "message", "error", "thisArg", "require_extension", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "push", "dest", "name", "elem", "parse", "header", "offers", "params", "mustUnescape", "isEscaping", "inQuotes", "extensionName", "paramName", "start", "code", "end", "i", "value", "token", "format", "extensions", "extension", "configurations", "k", "values", "v", "require_websocket", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EventEmitter", "https", "http", "net", "tls", "randomBytes", "createHash", "Readable", "URL", "PerMessageDeflate", "Receiver", "Sender", "BINARY_TYPES", "EMPTY_BUFFER", "GUID", "kForOnEventAttribute", "kListener", "kStatusCode", "kWebSocket", "NOOP", "addEventListener", "removeEventListener", "format", "parse", "toBuffer", "closeTimeout", "kAborted", "protocolVersions", "readyStates", "subprotocolRegex", "WebSocket", "address", "protocols", "options", "initAsClient", "type", "socket", "head", "receiver", "receiverOnConclude", "receiverOnDrain", "receiverOnError", "receiverOnMessage", "receiverOnPing", "receiverOnPong", "socketOnClose", "socketOnData", "socketOnEnd", "socketOnError", "code", "data", "msg", "abortHandshake", "err", "mask", "cb", "sendAfterClose", "opts", "property", "method", "listener", "handler", "websocket", "parsedUrl", "isSecure", "isIpcUrl", "invalidUrlMessage", "emitErrorAndClose", "defaultPort", "key", "request", "protocolSet", "perMessageDeflate", "tlsConnect", "netConnect", "protocol", "parts", "req", "headers", "value", "isSameHost", "Buffer", "res", "location", "statusCode", "addr", "digest", "serverProt", "protError", "secWebSocketExtensions", "extensions", "extensionNames", "stream", "message", "length", "reason", "resume", "receiverOnFinish", "isBinary", "chunk", "require_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Duplex", "emitClose", "stream", "duplexOnEnd", "duplexOnError", "err", "createWebSocketStream", "ws", "options", "terminateOnDestroy", "duplex", "msg", "isBinary", "data", "callback", "called", "chunk", "encoding", "require_subprotocol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "parse", "header", "protocols", "start", "end", "code", "protocol", "require_websocket_server", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EventEmitter", "http", "https", "net", "tls", "createHash", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "GUID", "kWebSocket", "keyRegex", "RUNNING", "CLOSING", "CLOSED", "WebSocketServer", "options", "callback", "req", "res", "body", "emitConnection", "addListeners", "socket", "head", "cb", "emitClose", "server", "index", "socketOnError", "key", "version", "abortHandshakeOrEmitwsClientError", "abortHandshake", "secWebSocketProtocol", "protocols", "secWebSocketExtensions", "extensions", "perMessageDeflate", "offers", "info", "verified", "code", "message", "headers", "ws", "protocol", "params", "value", "map", "event", "Buffer", "h", "err", "require_ws", "__commonJSMin", "exports", "module", "init_esbuild_inject", "WebSocket", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "l", "a", "b", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "i", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "i", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "e", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "l", "a", "b", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "i", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "e", "enqueue", "fn", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "r", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "r", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "init_esbuild_inject", "util", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "a", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "AssertionError", "m", "err", "require_b4a", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isBuffer", "value", "Buffer", "isEncoding", "encoding", "alloc", "size", "fill", "allocUnsafe", "allocUnsafeSlow", "byteLength", "string", "compare", "a", "b", "concat", "buffers", "totalLength", "copy", "source", "target", "targetStart", "start", "end", "toBuffer", "equals", "buffer", "offset", "from", "encodingOrOffset", "length", "includes", "byteOffset", "indexOf", "byfeOffset", "lastIndexOf", "swap16", "swap32", "swap64", "toString", "write", "writeDoubleLE", "writeFloatLE", "writeUInt32LE", "writeInt32LE", "readDoubleLE", "readFloatLE", "readUInt32LE", "readInt32LE", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "__commonJS", "cb", "mod", "__toBinary", "table", "i", "base64", "n", "bytes2", "i2", "j", "c0", "c1", "c2", "c3", "exports2", "module2", "bytes", "compiled", "imports", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b4a", "wasm", "wasmPromise", "mod", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "size", "input", "enc", "i", "cb", "noop", "ph", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "r", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_32", "set25519", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "b", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "m", "par25519", "d", "vn", "x", "xi", "y", "yi", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "i", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "createHash", "createHmac", "createECDH", "createCipheriv", "randomBytes", "createDecipheriv", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "randomBytes", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "createHash", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "createECDH", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "createHmac", "pseudoRandomKey", "cipher", "createCipheriv", "decipher", "createDecipheriv", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_base64url", "createHmac", "createHash", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "t", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] } diff --git a/dist/archethic.cjs b/dist/archethic.cjs index 5925c6b..99007d2 100644 --- a/dist/archethic.cjs +++ b/dist/archethic.cjs @@ -1,25 +1,25 @@ -var Jm=Object.create;var nd=Object.defineProperty;var Xm=Object.getOwnPropertyDescriptor;var Zm=Object.getOwnPropertyNames;var ev=Object.getPrototypeOf,tv=Object.prototype.hasOwnProperty;var av=(t,e)=>()=>(t&&(e=t(t=0)),e);var T=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),op=(t,e)=>{for(var a in e)nd(t,a,{get:e[a],enumerable:!0})},vs=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Zm(e))!tv.call(t,i)&&i!==a&&nd(t,i,{get:()=>e[i],enumerable:!(r=Xm(e,i))||r.enumerable});return t};var fa=(t,e,a)=>(a=t!=null?Jm(ev(t)):{},vs(e||!t||!t.__esModule?nd(a,"default",{value:t,enumerable:!0}):a,t)),rv=t=>vs(nd({},"__esModule",{value:!0}),t);var N,l=av(()=>{N=require("buffer").Buffer});var ys=T((oM,gs)=>{"use strict";l();var U1={};gs.exports=U1;function bs(t){return t<0?-1:1}function iv(t){return t%1===.5&&(t&1)===0?Math.floor(t):Math.round(t)}function tr(t,e){e.unsigned||--t;let a=e.unsigned?0:-Math.pow(2,t),r=Math.pow(2,t)-1,i=e.moduloBitLength?Math.pow(2,e.moduloBitLength):Math.pow(2,t),d=e.moduloBitLength?Math.pow(2,e.moduloBitLength-1):Math.pow(2,t-1);return function(n,f){f||(f={});let h=+n;if(f.enforceRange){if(!Number.isFinite(h))throw new TypeError("Argument is not a finite number");if(h=bs(h)*Math.floor(Math.abs(h)),hr)throw new TypeError("Argument is not in byte range");return h}if(!isNaN(h)&&f.clamp)return h=iv(h),hr&&(h=r),h;if(!Number.isFinite(h)||h===0)return 0;if(h=bs(h)*Math.floor(Math.abs(h)),h=h%i,!e.unsigned&&h>=d)return h-i;if(e.unsigned){if(h<0)h+=i;else if(h===-0)return 0}return h}}U1.void=function(){};U1.boolean=function(t){return!!t};U1.byte=tr(8,{unsigned:!1});U1.octet=tr(8,{unsigned:!0});U1.short=tr(16,{unsigned:!1});U1["unsigned short"]=tr(16,{unsigned:!0});U1.long=tr(32,{unsigned:!1});U1["unsigned long"]=tr(32,{unsigned:!0});U1["long long"]=tr(32,{unsigned:!1,moduloBitLength:64});U1["unsigned long long"]=tr(32,{unsigned:!0,moduloBitLength:64});U1.double=function(t){let e=+t;if(!Number.isFinite(e))throw new TypeError("Argument is not a finite floating-point value");return e};U1["unrestricted double"]=function(t){let e=+t;if(isNaN(e))throw new TypeError("Argument is NaN");return e};U1.float=U1.double;U1["unrestricted float"]=U1["unrestricted double"];U1.DOMString=function(t,e){return e||(e={}),e.treatNullAsEmptyString&&t===null?"":String(t)};U1.ByteString=function(t,e){let a=String(t),r;for(let i=0;(r=a.codePointAt(i))!==void 0;++i)if(r>255)throw new TypeError("Argument is not a valid bytestring");return a};U1.USVString=function(t){let e=String(t),a=e.length,r=[];for(let i=0;i57343)r.push(String.fromCodePoint(d));else if(56320<=d&&d<=57343)r.push(String.fromCodePoint(65533));else if(i===a-1)r.push(String.fromCodePoint(65533));else{let n=e.charCodeAt(i+1);if(56320<=n&&n<=57343){let f=d&1023,h=n&1023;r.push(String.fromCodePoint((2<<15)+(2<<9)*f+h)),++i}else r.push(String.fromCodePoint(65533))}}return r.join("")};U1.Date=function(t,e){if(!(t instanceof Date))throw new TypeError("Argument is not a Date object");if(!isNaN(t))return t};U1.RegExp=function(t,e){return t instanceof RegExp||(t=new RegExp(t)),t}});var xs=T((uM,ar)=>{"use strict";l();ar.exports.mixin=function(e,a){let r=Object.getOwnPropertyNames(a);for(let i=0;i{dv.exports=[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1e3,1e3],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6e3],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8e3,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8e3]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9e3],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[3e4]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13e3,13e3],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43e3,43e3],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64e3,64e3],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66e3,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[12e4,12e4],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128e3,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23e3]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149e3]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32e3]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195e3,195e3],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[4e4]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918e3,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]});var Cs=T((mM,fd)=>{"use strict";l();var _s=require("punycode"),ws=As(),ni={TRANSITIONAL:0,NONTRANSITIONAL:1};function Is(t){return t.split("\0").map(function(e){return e.normalize("NFC")}).join("\0")}function Ss(t){for(var e=0,a=ws.length-1;e<=a;){var r=Math.floor((e+a)/2),i=ws[r];if(i[0][0]<=t&&i[0][1]>=t)return i;i[0][0]>t?a=r-1:e=r+1}return null}var pv=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function Es(t){return t.replace(pv,"_").length}function nv(t,e,a){for(var r=!1,i="",d=Es(t),n=0;n253||n.length===0)&&(i.error=!0);for(var f=0;f63||d.length===0){i.error=!0;break}}return i.error?null:d.join(".")};fd.exports.toUnicode=function(t,e){var a=sd(t,e,ni.NONTRANSITIONAL);return{domain:a.string,error:a.error}};fd.exports.PROCESSING_OPTIONS=ni});var oa=T((bM,_t)=>{"use strict";l();var si=require("punycode"),Ns=Cs(),Bs={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},Ge=Symbol("failure");function Ds(t){return si.ucs2.decode(t).length}function Ms(t,e){let a=t[e];return isNaN(a)?void 0:String.fromCodePoint(a)}function $i(t){return t>=48&&t<=57}function Gi(t){return t>=65&&t<=90||t>=97&&t<=122}function ov(t){return Gi(t)||$i(t)}function Kt(t){return $i(t)||t>=65&&t<=70||t>=97&&t<=102}function Ts(t){return t==="."||t.toLowerCase()==="%2e"}function lv(t){return t=t.toLowerCase(),t===".."||t==="%2e."||t===".%2e"||t==="%2e%2e"}function uv(t,e){return Gi(t)&&(e===58||e===124)}function qs(t){return t.length===2&&Gi(t.codePointAt(0))&&(t[1]===":"||t[1]==="|")}function cv(t){return t.length===2&&Gi(t.codePointAt(0))&&t[1]===":"}function hv(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/)!==-1}function mv(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/)!==-1}function lp(t){return Bs[t]!==void 0}function K1(t){return lp(t.scheme)}function vv(t){return Bs[t]}function Os(t){let e=t.toString(16).toUpperCase();return e.length===1&&(e="0"+e),"%"+e}function bv(t){let e=new N(t),a="";for(let r=0;r126}var yv=new Set([32,34,35,60,62,63,96,123,125]);function Ps(t){return od(t)||yv.has(t)}var xv=new Set([47,58,59,61,64,91,92,93,94,124]);function cp(t){return Ps(t)||xv.has(t)}function Or(t,e){let a=String.fromCodePoint(t);return e(t)?bv(a):a}function Av(t){let e=10;return t.length>=2&&t.charAt(0)==="0"&&t.charAt(1).toLowerCase()==="x"?(t=t.substring(2),e=16):t.length>=2&&t.charAt(0)==="0"&&(t=t.substring(1),e=8),t===""?0:(e===10?/[^0-9]/:e===16?/[^0-9A-Fa-f]/:/[^0-7]/).test(t)?Ge:parseInt(t,e)}function wv(t){let e=t.split(".");if(e[e.length-1]===""&&e.length>1&&e.pop(),e.length>4)return t;let a=[];for(let d of e){if(d==="")return t;let n=Av(d);if(n===Ge)return t;a.push(n)}for(let d=0;d255)return Ge;if(a[a.length-1]>=Math.pow(256,5-a.length))return Ge;let r=a.pop(),i=0;for(let d of a)r+=d*Math.pow(256,3-i),++i;return r}function _v(t){let e="",a=t;for(let r=1;r<=4;++r)e=String(a%256)+e,r!==4&&(e="."+e),a=Math.floor(a/256);return e}function Iv(t){let e=[0,0,0,0,0,0,0,0],a=0,r=null,i=0;if(t=si.ucs2.decode(t),t[i]===58){if(t[i+1]!==58)return Ge;i+=2,++a,r=a}for(;i6))return Ge;let f=0;for(;t[i]!==void 0;){let h=null;if(f>0)if(t[i]===46&&f<4)++i;else return Ge;if(!$i(t[i]))return Ge;for(;$i(t[i]);){let v=parseInt(Ms(t,i));if(h===null)h=v;else{if(h===0)return Ge;h=h*10+v}if(h>255)return Ge;++i}e[a]=e[a]*256+h,++f,(f===2||f===4)&&++a}if(f!==4)return Ge;break}else if(t[i]===58){if(++i,t[i]===void 0)return Ge}else if(t[i]!==void 0)return Ge;e[a]=d,++a}if(r!==null){let d=a-r;for(a=7;a!==0&&d>0;){let n=e[r+d-1];e[r+d-1]=e[a],e[a]=n,--a,--d}}else if(r===null&&a!==8)return Ge;return e}function Sv(t){let e="",r=Cv(t).idx,i=!1;for(let d=0;d<=7;++d)if(!(i&&t[d]===0)){if(i&&(i=!1),r===d){e+=d===0?"::":":",i=!0;continue}e+=t[d].toString(16),d!==7&&(e+=":")}return e}function up(t,e){if(t[0]==="[")return t[t.length-1]!=="]"?Ge:Iv(t.substring(1,t.length-1));if(!e)return Ev(t);let a=gv(t),r=Ns.toASCII(a,!1,Ns.PROCESSING_OPTIONS.NONTRANSITIONAL,!1);if(r===null||hv(r))return Ge;let i=wv(r);return typeof i=="number"||i===Ge?i:r}function Ev(t){if(mv(t))return Ge;let e="",a=si.ucs2.decode(t);for(let r=0;ra&&(e=r,a=i),r=null,i=0):(r===null&&(r=d),++i);return i>a&&(e=r,a=i),{idx:e,len:a}}function hp(t){return typeof t=="number"?_v(t):t instanceof Array?"["+Sv(t)+"]":t}function Nv(t){return t.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,"")}function Dv(t){return t.replace(/\u0009|\u000A|\u000D/g,"")}function Vs(t){let e=t.path;e.length!==0&&(t.scheme==="file"&&e.length===1&&Tv(e[0])||e.pop())}function Us(t){return t.username!==""||t.password!==""}function Mv(t){return t.host===null||t.host===""||t.cannotBeABaseURL||t.scheme==="file"}function Tv(t){return/^[A-Za-z]:$/.test(t)}function R1(t,e,a,r,i){if(this.pointer=0,this.input=t,this.base=e||null,this.encodingOverride=a||"utf-8",this.stateOverride=i,this.url=r,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};let n=Nv(this.input);n!==this.input&&(this.parseError=!0),this.input=n}let d=Dv(this.input);for(d!==this.input&&(this.parseError=!0),this.input=d,this.state=i||"scheme start",this.buffer="",this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=si.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){let n=this.input[this.pointer],f=isNaN(n)?void 0:String.fromCodePoint(n),h=this["parse "+this.state](n,f);if(h){if(h===Ge){this.failure=!0;break}}else break}}R1.prototype["parse scheme start"]=function(e,a){if(Gi(e))this.buffer+=a.toLowerCase(),this.state="scheme";else if(!this.stateOverride)this.state="no scheme",--this.pointer;else return this.parseError=!0,Ge;return!0};R1.prototype["parse scheme"]=function(e,a){if(ov(e)||e===43||e===45||e===46)this.buffer+=a.toLowerCase();else if(e===58){if(this.stateOverride&&(K1(this.url)&&!lp(this.buffer)||!K1(this.url)&&lp(this.buffer)||(Us(this.url)||this.url.port!==null)&&this.buffer==="file"||this.url.scheme==="file"&&(this.url.host===""||this.url.host===null))||(this.url.scheme=this.buffer,this.buffer="",this.stateOverride))return!1;this.url.scheme==="file"?((this.input[this.pointer+1]!==47||this.input[this.pointer+2]!==47)&&(this.parseError=!0),this.state="file"):K1(this.url)&&this.base!==null&&this.base.scheme===this.url.scheme?this.state="special relative or authority":K1(this.url)?this.state="special authority slashes":this.input[this.pointer+1]===47?(this.state="path or authority",++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(""),this.state="cannot-be-a-base-URL path")}else if(!this.stateOverride)this.buffer="",this.state="no scheme",this.pointer=-1;else return this.parseError=!0,Ge;return!0};R1.prototype["parse no scheme"]=function(e){return this.base===null||this.base.cannotBeABaseURL&&e!==35?Ge:(this.base.cannotBeABaseURL&&e===35?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.url.cannotBeABaseURL=!0,this.state="fragment"):this.base.scheme==="file"?(this.state="file",--this.pointer):(this.state="relative",--this.pointer),!0)};R1.prototype["parse special relative or authority"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="relative",--this.pointer),!0};R1.prototype["parse path or authority"]=function(e){return e===47?this.state="authority":(this.state="path",--this.pointer),!0};R1.prototype["parse relative"]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===47?this.state="relative slash":e===63?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):K1(this.url)&&e===92?(this.parseError=!0,this.state="relative slash"):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state="path",--this.pointer),!0};R1.prototype["parse relative slash"]=function(e){return K1(this.url)&&(e===47||e===92)?(e===92&&(this.parseError=!0),this.state="special authority ignore slashes"):e===47?this.state="authority":(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state="path",--this.pointer),!0};R1.prototype["parse special authority slashes"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="special authority ignore slashes",--this.pointer),!0};R1.prototype["parse special authority ignore slashes"]=function(e){return e!==47&&e!==92?(this.state="authority",--this.pointer):this.parseError=!0,!0};R1.prototype["parse authority"]=function(e,a){if(e===64){this.parseError=!0,this.atFlag&&(this.buffer="%40"+this.buffer),this.atFlag=!0;let r=Ds(this.buffer);for(let i=0;iMath.pow(2,16)-1)return this.parseError=!0,Ge;this.url.port=r===vv(this.url.scheme)?null:r,this.buffer=""}if(this.stateOverride)return!1;this.state="path start",--this.pointer}else return this.parseError=!0,Ge;return!0};var Bv=new Set([47,92,63,35]);R1.prototype["parse file"]=function(e){return this.url.scheme="file",e===47||e===92?(e===92&&(this.parseError=!0),this.state="file slash"):this.base!==null&&this.base.scheme==="file"?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===63?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):(this.input.length-this.pointer-1===0||!uv(e,this.input[this.pointer+1])||this.input.length-this.pointer-1>=2&&!Bv.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),Vs(this.url)):this.parseError=!0,this.state="path",--this.pointer):(this.state="path",--this.pointer),!0};R1.prototype["parse file slash"]=function(e){return e===47||e===92?(e===92&&(this.parseError=!0),this.state="file host"):(this.base!==null&&this.base.scheme==="file"&&(cv(this.base.path[0])?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state="path",--this.pointer),!0};R1.prototype["parse file host"]=function(e,a){if(isNaN(e)||e===47||e===92||e===63||e===35)if(--this.pointer,!this.stateOverride&&qs(this.buffer))this.parseError=!0,this.state="path";else if(this.buffer===""){if(this.url.host="",this.stateOverride)return!1;this.state="path start"}else{let r=up(this.buffer,K1(this.url));if(r===Ge)return Ge;if(r==="localhost"&&(r=""),this.url.host=r,this.stateOverride)return!1;this.buffer="",this.state="path start"}else this.buffer+=a;return!0};R1.prototype["parse path start"]=function(e){return K1(this.url)?(e===92&&(this.parseError=!0),this.state="path",e!==47&&e!==92&&--this.pointer):!this.stateOverride&&e===63?(this.url.query="",this.state="query"):!this.stateOverride&&e===35?(this.url.fragment="",this.state="fragment"):e!==void 0&&(this.state="path",e!==47&&--this.pointer),!0};R1.prototype["parse path"]=function(e){if(isNaN(e)||e===47||K1(this.url)&&e===92||!this.stateOverride&&(e===63||e===35)){if(K1(this.url)&&e===92&&(this.parseError=!0),lv(this.buffer)?(Vs(this.url),e!==47&&!(K1(this.url)&&e===92)&&this.url.path.push("")):Ts(this.buffer)&&e!==47&&!(K1(this.url)&&e===92)?this.url.path.push(""):Ts(this.buffer)||(this.url.scheme==="file"&&this.url.path.length===0&&qs(this.buffer)&&(this.url.host!==""&&this.url.host!==null&&(this.parseError=!0,this.url.host=""),this.buffer=this.buffer[0]+":"),this.url.path.push(this.buffer)),this.buffer="",this.url.scheme==="file"&&(e===void 0||e===63||e===35))for(;this.url.path.length>1&&this.url.path[0]==="";)this.parseError=!0,this.url.path.shift();e===63&&(this.url.query="",this.state="query"),e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!Kt(this.input[this.pointer+1])||!Kt(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=Or(e,Ps);return!0};R1.prototype["parse cannot-be-a-base-URL path"]=function(e){return e===63?(this.url.query="",this.state="query"):e===35?(this.url.fragment="",this.state="fragment"):(!isNaN(e)&&e!==37&&(this.parseError=!0),e===37&&(!Kt(this.input[this.pointer+1])||!Kt(this.input[this.pointer+2]))&&(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+Or(e,od))),!0};R1.prototype["parse query"]=function(e,a){if(isNaN(e)||!this.stateOverride&&e===35){(!K1(this.url)||this.url.scheme==="ws"||this.url.scheme==="wss")&&(this.encodingOverride="utf-8");let r=new N(this.buffer);for(let i=0;i126||r[i]===34||r[i]===35||r[i]===60||r[i]===62?this.url.query+=Os(r[i]):this.url.query+=String.fromCodePoint(r[i]);this.buffer="",e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!Kt(this.input[this.pointer+1])||!Kt(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=a;return!0};R1.prototype["parse fragment"]=function(e){return isNaN(e)||(e===0?this.parseError=!0:(e===37&&(!Kt(this.input[this.pointer+1])||!Kt(this.input[this.pointer+2]))&&(this.parseError=!0),this.url.fragment+=Or(e,od))),!0};function qv(t,e){let a=t.scheme+":";if(t.host!==null?(a+="//",(t.username!==""||t.password!=="")&&(a+=t.username,t.password!==""&&(a+=":"+t.password),a+="@"),a+=hp(t.host),t.port!==null&&(a+=":"+t.port)):t.host===null&&t.scheme==="file"&&(a+="//"),t.cannotBeABaseURL)a+=t.path[0];else for(let r of t.path)a+="/"+r;return t.query!==null&&(a+="?"+t.query),!e&&t.fragment!==null&&(a+="#"+t.fragment),a}function Ov(t){let e=t.scheme+"://";return e+=hp(t.host),t.port!==null&&(e+=":"+t.port),e}_t.exports.serializeURL=qv;_t.exports.serializeURLOrigin=function(t){switch(t.scheme){case"blob":try{return _t.exports.serializeURLOrigin(_t.exports.parseURL(t.path[0]))}catch{return"null"}case"ftp":case"gopher":case"http":case"https":case"ws":case"wss":return Ov({scheme:t.scheme,host:t.host,port:t.port});case"file":return"file://";default:return"null"}};_t.exports.basicURLParse=function(t,e){e===void 0&&(e={});let a=new R1(t,e.baseURL,e.encodingOverride,e.url,e.stateOverride);return a.failure?"failure":a.url};_t.exports.setTheUsername=function(t,e){t.username="";let a=si.ucs2.decode(e);for(let r=0;r{"use strict";l();var F1=oa();Rs.implementation=class{constructor(e){let a=e[0],r=e[1],i=null;if(r!==void 0&&(i=F1.basicURLParse(r),i==="failure"))throw new TypeError("Invalid base URL");let d=F1.basicURLParse(a,{baseURL:i});if(d==="failure")throw new TypeError("Invalid URL");this._url=d}get href(){return F1.serializeURL(this._url)}set href(e){let a=F1.basicURLParse(e);if(a==="failure")throw new TypeError("Invalid URL");this._url=a}get origin(){return F1.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+":"}set protocol(e){F1.basicURLParse(e+":",{url:this._url,stateOverride:"scheme start"})}get username(){return this._url.username}set username(e){F1.cannotHaveAUsernamePasswordPort(this._url)||F1.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){F1.cannotHaveAUsernamePasswordPort(this._url)||F1.setThePassword(this._url,e)}get host(){let e=this._url;return e.host===null?"":e.port===null?F1.serializeHost(e.host):F1.serializeHost(e.host)+":"+F1.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||F1.basicURLParse(e,{url:this._url,stateOverride:"host"})}get hostname(){return this._url.host===null?"":F1.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||F1.basicURLParse(e,{url:this._url,stateOverride:"hostname"})}get port(){return this._url.port===null?"":F1.serializeInteger(this._url.port)}set port(e){F1.cannotHaveAUsernamePasswordPort(this._url)||(e===""?this._url.port=null:F1.basicURLParse(e,{url:this._url,stateOverride:"port"}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:this._url.path.length===0?"":"/"+this._url.path.join("/")}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],F1.basicURLParse(e,{url:this._url,stateOverride:"path start"}))}get search(){return this._url.query===null||this._url.query===""?"":"?"+this._url.query}set search(e){let a=this._url;if(e===""){a.query=null;return}let r=e[0]==="?"?e.substring(1):e;a.query="",F1.basicURLParse(r,{url:a,stateOverride:"query"})}get hash(){return this._url.fragment===null||this._url.fragment===""?"":"#"+this._url.fragment}set hash(e){if(e===""){this._url.fragment=null;return}let a=e[0]==="#"?e.substring(1):e;this._url.fragment="",F1.basicURLParse(a,{url:this._url,stateOverride:"fragment"})}toJSON(){return this.href}}});var ks=T((wM,Yi)=>{"use strict";l();var Mt=ys(),Qs=xs(),Ls=Fs(),N1=Qs.implSymbol;function G1(t){if(!this||this[N1]||!(this instanceof G1))throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");if(arguments.length<1)throw new TypeError("Failed to construct 'URL': 1 argument required, but only "+arguments.length+" present.");let e=[];for(let a=0;a{"use strict";l();la.URL=ks().interface;la.serializeURL=oa().serializeURL;la.serializeURLOrigin=oa().serializeURLOrigin;la.basicURLParse=oa().basicURLParse;la.setTheUsername=oa().setTheUsername;la.setThePassword=oa().setThePassword;la.serializeHost=oa().serializeHost;la.serializeInteger=oa().serializeInteger;la.parseURL=oa().parseURL});var t3=T((ca,e3)=>{"use strict";l();Object.defineProperty(ca,"__esModule",{value:!0});function li(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var zt=li(require("stream")),$s=li(require("http")),ud=li(require("url")),Gs=li(js()),Pv=li(require("https")),Pr=li(require("zlib")),Vv=zt.Readable,Ta=Symbol("buffer"),mp=Symbol("type"),dr=class{constructor(){this[mp]="";let e=arguments[0],a=arguments[1],r=[],i=0;if(e){let n=e,f=Number(n.length);for(let h=0;h1&&arguments[1]!==void 0?arguments[1]:{},r=a.size;let i=r===void 0?0:r;var d=a.timeout;let n=d===void 0?0:d;t==null?t=null:Ys(t)?t=N.from(t.toString()):Xi(t)||N.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=N.from(t):ArrayBuffer.isView(t)?t=N.from(t.buffer,t.byteOffset,t.byteLength):t instanceof zt||(t=N.from(String(t)))),this[qa]={body:t,disturbed:!1,error:null},this.size=i,this.timeout=n,t instanceof zt&&t.on("error",function(f){let h=f.name==="AbortError"?f:new et(`Invalid response body while trying to fetch ${e.url}: ${f.message}`,"system",f);e[qa].error=h})}Y1.prototype={get body(){return this[qa].body},get bodyUsed(){return this[qa].disturbed},arrayBuffer(){return fi.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return fi.call(this).then(function(e){return Object.assign(new dr([],{type:t.toLowerCase()}),{[Ta]:e})})},json(){var t=this;return fi.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(a){return Y1.Promise.reject(new et(`invalid json response body at ${t.url} reason: ${a.message}`,"invalid-json"))}})},text(){return fi.call(this).then(function(t){return t.toString()})},buffer(){return fi.call(this)},textConverted(){var t=this;return fi.call(this).then(function(e){return Uv(e,t.headers)})}};Object.defineProperties(Y1.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});Y1.mixIn=function(t){for(let e of Object.getOwnPropertyNames(Y1.prototype))if(!(e in t)){let a=Object.getOwnPropertyDescriptor(Y1.prototype,e);Object.defineProperty(t,e,a)}};function fi(){var t=this;if(this[qa].disturbed)return Y1.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[qa].disturbed=!0,this[qa].error)return Y1.Promise.reject(this[qa].error);let e=this.body;if(e===null)return Y1.Promise.resolve(N.alloc(0));if(Xi(e)&&(e=e.stream()),N.isBuffer(e))return Y1.Promise.resolve(e);if(!(e instanceof zt))return Y1.Promise.resolve(N.alloc(0));let a=[],r=0,i=!1;return new Y1.Promise(function(d,n){let f;t.timeout&&(f=setTimeout(function(){i=!0,n(new et(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(h){h.name==="AbortError"?(i=!0,n(h)):n(new et(`Invalid response body while trying to fetch ${t.url}: ${h.message}`,"system",h))}),e.on("data",function(h){if(!(i||h===null)){if(t.size&&r+h.length>t.size){i=!0,n(new et(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}r+=h.length,a.push(h)}}),e.on("end",function(){if(!i){clearTimeout(f);try{d(N.concat(a,r))}catch(h){n(new et(`Could not create Buffer from response body for ${t.url}: ${h.message}`,"system",h))}}})})}function Uv(t,e){if(typeof gp!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let a=e.get("content-type"),r="utf-8",i,d;return a&&(i=/charset=([^;]*)/i.exec(a)),d=t.slice(0,1024).toString(),!i&&d&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[k1]=Object.create(null),e instanceof mt){let a=e.raw(),r=Object.keys(a);for(let i of r)for(let d of a[i])this.append(i,d);return}if(e!=null)if(typeof e=="object"){let a=e[Symbol.iterator];if(a!=null){if(typeof a!="function")throw new TypeError("Header pairs must be iterable");let r=[];for(let i of e){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");r.push(Array.from(i))}for(let i of r){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(let r of Object.keys(e)){let i=e[r];this.append(r,i)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,Wi(e);let a=oi(this[k1],e);return a===void 0?null:this[k1][a].join(", ")}forEach(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,r=xp(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[k1]).sort().map(e==="key"?function(r){return r.toLowerCase()}:e==="value"?function(r){return t[k1][r].join(", ")}:function(r){return[r.toLowerCase(),t[k1][r].join(", ")]})}var Ap=Symbol("internal");function vp(t,e){let a=Object.create(_p);return a[Ap]={target:t,kind:e,index:0},a}var _p=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==_p)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[Ap];let e=t.target,a=t.kind,r=t.index,i=xp(e,a),d=i.length;return r>=d?{value:void 0,done:!0}:(this[Ap].index=r+1,{value:i[r],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(_p,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function Fv(t){let e=Object.assign({__proto__:null},t[k1]),a=oi(t[k1],"Host");return a!==void 0&&(e[a]=e[a][0]),e}function Lv(t){let e=new mt;for(let a of Object.keys(t))if(!Zs.test(a))if(Array.isArray(t[a]))for(let r of t[a])yp.test(r)||(e[k1][a]===void 0?e[k1][a]=[r]:e[k1][a].push(r));else yp.test(t[a])||(e[k1][a]=[t[a]]);return e}var rr=Symbol("Response internals"),Qv=$s.STATUS_CODES,It=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Y1.call(this,e,a);let r=a.status||200,i=new mt(a.headers);if(e!=null&&!i.has("Content-Type")){let d=Js(e);d&&i.append("Content-Type",d)}this[rr]={url:a.url,status:r,statusText:a.statusText||Qv[r],headers:i,counter:a.counter}}get url(){return this[rr].url||""}get status(){return this[rr].status}get ok(){return this[rr].status>=200&&this[rr].status<300}get redirected(){return this[rr].counter>0}get statusText(){return this[rr].statusText}get headers(){return this[rr].headers}clone(){return new It(Ws(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};Y1.mixIn(It.prototype);Object.defineProperties(It.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(It.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var Ba=Symbol("Request internals"),kv=ud.URL||Gs.URL,jv=ud.parse,Hv=ud.format;function bp(t){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(t)&&(t=new kv(t).toString()),jv(t)}var Kv="destroy"in zt.Readable.prototype;function ld(t){return typeof t=="object"&&typeof t[Ba]=="object"}function zv(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var ua=class{constructor(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r;ld(e)?r=bp(e.url):(e&&e.href?r=bp(e.href):r=bp(`${e}`),e={});let i=a.method||e.method||"GET";if(i=i.toUpperCase(),(a.body!=null||ld(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let d=a.body!=null?a.body:ld(e)&&e.body!==null?Ws(e):null;Y1.call(this,d,{timeout:a.timeout||e.timeout||0,size:a.size||e.size||0});let n=new mt(a.headers||e.headers||{});if(d!=null&&!n.has("Content-Type")){let h=Js(d);h&&n.append("Content-Type",h)}let f=ld(e)?e.signal:null;if("signal"in a&&(f=a.signal),f!=null&&!zv(f))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[Ba]={method:i,redirect:a.redirect||e.redirect||"follow",headers:n,parsedURL:r,signal:f},this.follow=a.follow!==void 0?a.follow:e.follow!==void 0?e.follow:20,this.compress=a.compress!==void 0?a.compress:e.compress!==void 0?e.compress:!0,this.counter=a.counter||e.counter||0,this.agent=a.agent||e.agent}get method(){return this[Ba].method}get url(){return Hv(this[Ba].parsedURL)}get headers(){return this[Ba].headers}get redirect(){return this[Ba].redirect}get signal(){return this[Ba].signal}clone(){return new ua(this)}};Y1.mixIn(ua.prototype);Object.defineProperty(ua.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(ua.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function $v(t){let e=t[Ba].parsedURL,a=new mt(t[Ba].headers);if(a.has("Accept")||a.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof zt.Readable&&!Kv)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let r=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(r="0"),t.body!=null){let d=Xs(t);typeof d=="number"&&(r=String(d))}r&&a.set("Content-Length",r),a.has("User-Agent")||a.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!a.has("Accept-Encoding")&&a.set("Accept-Encoding","gzip,deflate");let i=t.agent;return typeof i=="function"&&(i=i(e)),!a.has("Connection")&&!i&&a.set("Connection","close"),Object.assign({},e,{method:t.method,headers:Fv(a),agent:i})}function Ji(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}Ji.prototype=Object.create(Error.prototype);Ji.prototype.constructor=Ji;Ji.prototype.name="AbortError";var wp=ud.URL||Gs.URL,zs=zt.PassThrough,Gv=function(e,a){let r=new wp(a).hostname,i=new wp(e).hostname;return r===i||r[r.length-i.length-1]==="."&&r.endsWith(i)};function ir(t,e){if(!ir.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Y1.Promise=ir.Promise,new ir.Promise(function(a,r){let i=new ua(t,e),d=$v(i),n=(d.protocol==="https:"?Pv:$s).request,f=i.signal,h=null,v=function(){let L=new Ji("The user aborted a request.");r(L),i.body&&i.body instanceof zt.Readable&&i.body.destroy(L),!(!h||!h.body)&&h.body.emit("error",L)};if(f&&f.aborted){v();return}let I=function(){v(),R()},S=n(d),O;f&&f.addEventListener("abort",I);function R(){S.abort(),f&&f.removeEventListener("abort",I),clearTimeout(O)}i.timeout&&S.once("socket",function(V){O=setTimeout(function(){r(new et(`network timeout at: ${i.url}`,"request-timeout")),R()},i.timeout)}),S.on("error",function(V){r(new et(`request to ${i.url} failed, reason: ${V.message}`,"system",V)),R()}),S.on("response",function(V){clearTimeout(O);let L=Lv(V.headers);if(ir.isRedirect(V.statusCode)){let we=L.get("Location"),Ie=null;try{Ie=we===null?null:new wp(we,i.url).toString()}catch{if(i.redirect!=="manual"){r(new et(`uri requested responds with an invalid redirect URL: ${we}`,"invalid-redirect")),R();return}}switch(i.redirect){case"error":r(new et(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),R();return;case"manual":if(Ie!==null)try{L.set("Location",Ie)}catch(ce){r(ce)}break;case"follow":if(Ie===null)break;if(i.counter>=i.follow){r(new et(`maximum redirect reached at: ${i.url}`,"max-redirect")),R();return}let ye={headers:new mt(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:i.body,signal:i.signal,timeout:i.timeout,size:i.size};if(!Gv(i.url,Ie))for(let ce of["authorization","www-authenticate","cookie","cookie2"])ye.headers.delete(ce);if(V.statusCode!==303&&i.body&&Xs(i)===null){r(new et("Cannot follow redirect with body being a readable stream","unsupported-redirect")),R();return}(V.statusCode===303||(V.statusCode===301||V.statusCode===302)&&i.method==="POST")&&(ye.method="GET",ye.body=void 0,ye.headers.delete("content-length")),a(ir(new ua(Ie,ye))),R();return}}V.once("end",function(){f&&f.removeEventListener("abort",I)});let $=V.pipe(new zs),X={url:i.url,status:V.statusCode,statusText:V.statusMessage,headers:L,size:i.size,timeout:i.timeout,counter:i.counter},ie=L.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||ie===null||V.statusCode===204||V.statusCode===304){h=new It($,X),a(h);return}let oe={flush:Pr.Z_SYNC_FLUSH,finishFlush:Pr.Z_SYNC_FLUSH};if(ie=="gzip"||ie=="x-gzip"){$=$.pipe(Pr.createGunzip(oe)),h=new It($,X),a(h);return}if(ie=="deflate"||ie=="x-deflate"){V.pipe(new zs).once("data",function(Ie){(Ie[0]&15)===8?$=$.pipe(Pr.createInflate()):$=$.pipe(Pr.createInflateRaw()),h=new It($,X),a(h)});return}if(ie=="br"&&typeof Pr.createBrotliDecompress=="function"){$=$.pipe(Pr.createBrotliDecompress()),h=new It($,X),a(h);return}h=new It($,X),a(h)}),Rv(S,i)})}ir.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};ir.Promise=global.Promise;e3.exports=ca=ir;Object.defineProperty(ca,"__esModule",{value:!0});ca.default=ca;ca.Headers=mt;ca.Request=ua;ca.Response=It;ca.FetchError=et});var Ip=T((Vr,a3)=>{l();var Zi=t3(),Yv=Zi.default||Zi,cd=function(t,e){return/^\/\//.test(t)&&(t="https:"+t),Yv.call(this,t,e)};cd.ponyfill=!0;a3.exports=Vr=cd;Vr.fetch=cd;Vr.Headers=Zi.Headers;Vr.Request=Zi.Request;Vr.Response=Zi.Response;Vr.default=cd});var Cp=T(p3=>{l();var r3=Object.defineProperty,Wv=t=>r3(t,"__esModule",{value:!0}),Jv=(t,e)=>{Wv(t);for(var a in e)r3(t,a,{get:e[a],enumerable:!0})};Jv(p3,{Channel:()=>d3,LongPoll:()=>Ep,Presence:()=>t0,Serializer:()=>a0,Socket:()=>rb});var r0=t=>typeof t=="function"?t:function(){return t},Xv=typeof self<"u"?self:null,e0=typeof window<"u"?window:null,md=Xv||e0||void 0,Zv="2.0.0",ha={connecting:0,open:1,closing:2,closed:3},eb=1e4,tb=1e3,St={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},Oa={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Sp={longpoll:"longpoll",websocket:"websocket"},ab={complete:4},hd=class{constructor(t,e,a,r){this.channel=t,this.event=e,this.payload=a||function(){return{}},this.receivedResp=null,this.timeout=r,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:t,response:e,_ref:a}){this.recHooks.filter(r=>r.status===t).forEach(r=>r.callback(e))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},i3=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},d3=class{constructor(t,e,a){this.state=St.closed,this.topic=t,this.params=r0(e||{}),this.socket=a,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new hd(this,Oa.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new i3(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=St.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(r=>r.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=St.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=St.closed,this.socket.remove(this)}),this.onError(r=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,r),this.isJoining()&&this.joinPush.reset(),this.state=St.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new hd(this,Oa.leave,r0({}),this.timeout).send(),this.state=St.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(Oa.reply,(r,i)=>{this.trigger(this.replyEventName(i),r)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(t){this.on(Oa.close,t)}onError(t){return this.on(Oa.error,e=>t(e))}on(t,e){let a=this.bindingRef++;return this.bindings.push({event:t,ref:a,callback:e}),a}off(t,e){this.bindings=this.bindings.filter(a=>!(a.event===t&&(typeof e>"u"||e===a.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,a=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let r=new hd(this,t,function(){return e},a);return this.canPush()?r.send():(r.startTimeout(),this.pushBuffer.push(r)),r}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=St.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(Oa.close,"leave")},a=new hd(this,Oa.leave,r0({}),t);return a.receive("ok",()=>e()).receive("timeout",()=>e()),a.send(),this.canPush()||a.trigger("ok",{}),a}onMessage(t,e,a){return e}isMember(t,e,a,r){return this.topic!==t?!1:r&&r!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:a,joinRef:r}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=St.joining,this.joinPush.resend(t))}trigger(t,e,a,r){let i=this.onMessage(t,e,a,r);if(e&&!i)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let d=this.bindings.filter(n=>n.event===t);for(let n=0;n{let f=this.parseJSON(t.responseText);n&&n(f)},d&&(t.ontimeout=d),t.onprogress=()=>{},t.send(r)}static xhrRequest(t,e,a,r,i,d,n,f){t.open(e,a,!0),t.timeout=d,t.setRequestHeader("Content-Type",r),t.onerror=()=>{f&&f(null)},t.onreadystatechange=()=>{if(t.readyState===ab.complete&&f){let h=this.parseJSON(t.responseText);f(h)}},n&&(t.ontimeout=n),t.send(i)}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let a=[];for(var r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let i=e?`${e}[${r}]`:r,d=t[r];typeof d=="object"?a.push(this.serialize(d,i)):a.push(encodeURIComponent(i)+"="+encodeURIComponent(d))}return a.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let a=t.match(/\?/)?"&":"?";return`${t}${a}${this.serialize(e)}`}},Ep=class{constructor(t){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=ha.connecting,this.poll()}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Sp.websocket),"$1/"+Sp.longpoll)}endpointURL(){return i0.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(){this.close(),this.readyState=ha.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry()}poll(){(this.readyState===ha.open||this.readyState===ha.connecting)&&i0.request("GET",this.endpointURL(),"application/json",null,this.timeout,this.ontimeout.bind(this),t=>{if(t){var{status:e,token:a,messages:r}=t;this.token=a}else e=0;switch(e){case 200:r.forEach(i=>{setTimeout(()=>{this.onmessage({data:i})},0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=ha.open,this.onopen(),this.poll();break;case 403:this.onerror(),this.close();break;case 0:case 500:this.onerror(),this.closeAndRetry();break;default:throw new Error(`unhandled poll status ${e}`)}})}send(t){i0.request("POST",this.endpointURL(),"application/json",t,this.timeout,this.onerror.bind(this,"timeout"),e=>{(!e||e.status!==200)&&(this.onerror(e&&e.status),this.closeAndRetry())})}close(t,e){this.readyState=ha.closed,this.onclose()}},t0=class{constructor(t,e={}){let a=e.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(a.state,r=>{let{onJoin:i,onLeave:d,onSync:n}=this.caller;this.joinRef=this.channel.joinRef(),this.state=t0.syncState(this.state,r,i,d),this.pendingDiffs.forEach(f=>{this.state=t0.syncDiff(this.state,f,i,d)}),this.pendingDiffs=[],n()}),this.channel.on(a.diff,r=>{let{onJoin:i,onLeave:d,onSync:n}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=t0.syncDiff(this.state,r,i,d),n())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return t0.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,e,a,r){let i=this.clone(t),d={},n={};return this.map(i,(f,h)=>{e[f]||(n[f]=h)}),this.map(e,(f,h)=>{let v=i[f];if(v){let I=h.metas.map(V=>V.phx_ref),S=v.metas.map(V=>V.phx_ref),O=h.metas.filter(V=>S.indexOf(V.phx_ref)<0),R=v.metas.filter(V=>I.indexOf(V.phx_ref)<0);O.length>0&&(d[f]=h,d[f].metas=O),R.length>0&&(n[f]=this.clone(v),n[f].metas=R)}else d[f]=h}),this.syncDiff(i,{joins:d,leaves:n},a,r)}static syncDiff(t,e,a,r){let{joins:i,leaves:d}=this.clone(e);return a||(a=function(){}),r||(r=function(){}),this.map(i,(n,f)=>{let h=t[n];if(t[n]=this.clone(f),h){let v=t[n].metas.map(S=>S.phx_ref),I=h.metas.filter(S=>v.indexOf(S.phx_ref)<0);t[n].metas.unshift(...I)}a(n,h,f)}),this.map(d,(n,f)=>{let h=t[n];if(!h)return;let v=f.metas.map(I=>I.phx_ref);h.metas=h.metas.filter(I=>v.indexOf(I.phx_ref)<0),r(n,h,f),h.metas.length===0&&delete t[n]}),t}static list(t,e){return e||(e=function(a,r){return r}),this.map(t,(a,r)=>e(a,r))}static map(t,e){return Object.getOwnPropertyNames(t).map(a=>e(a,t[a]))}static clone(t){return JSON.parse(JSON.stringify(t))}},a0={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let a=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(a))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[a,r,i,d,n]=JSON.parse(t);return e({join_ref:a,ref:r,topic:i,event:d,payload:n})}},binaryEncode(t){let{join_ref:e,ref:a,event:r,topic:i,payload:d}=t,n=this.META_LENGTH+e.length+a.length+i.length+r.length,f=new ArrayBuffer(this.HEADER_LENGTH+n),h=new DataView(f),v=0;h.setUint8(v++,this.KINDS.push),h.setUint8(v++,e.length),h.setUint8(v++,a.length),h.setUint8(v++,i.length),h.setUint8(v++,r.length),Array.from(e,S=>h.setUint8(v++,S.charCodeAt(0))),Array.from(a,S=>h.setUint8(v++,S.charCodeAt(0))),Array.from(i,S=>h.setUint8(v++,S.charCodeAt(0))),Array.from(r,S=>h.setUint8(v++,S.charCodeAt(0)));var I=new Uint8Array(f.byteLength+d.byteLength);return I.set(new Uint8Array(f),0),I.set(new Uint8Array(d),f.byteLength),I.buffer},binaryDecode(t){let e=new DataView(t),a=e.getUint8(0),r=new TextDecoder;switch(a){case this.KINDS.push:return this.decodePush(t,e,r);case this.KINDS.reply:return this.decodeReply(t,e,r);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,r)}},decodePush(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=e.getUint8(3),n=this.HEADER_LENGTH+this.META_LENGTH-1,f=a.decode(t.slice(n,n+r));n=n+r;let h=a.decode(t.slice(n,n+i));n=n+i;let v=a.decode(t.slice(n,n+d));n=n+d;let I=t.slice(n,t.byteLength);return{join_ref:f,ref:null,topic:h,event:v,payload:I}},decodeReply(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=e.getUint8(3),n=e.getUint8(4),f=this.HEADER_LENGTH+this.META_LENGTH,h=a.decode(t.slice(f,f+r));f=f+r;let v=a.decode(t.slice(f,f+i));f=f+i;let I=a.decode(t.slice(f,f+d));f=f+d;let S=a.decode(t.slice(f,f+n));f=f+n;let O=t.slice(f,t.byteLength),R={status:S,response:O};return{join_ref:h,ref:v,topic:I,event:Oa.reply,payload:R}},decodeBroadcast(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=this.HEADER_LENGTH+2,n=a.decode(t.slice(d,d+r));d=d+r;let f=a.decode(t.slice(d,d+i));d=d+i;let h=t.slice(d,t.byteLength);return{join_ref:null,ref:null,topic:n,event:f,payload:h}}},rb=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=e.timeout||eb,this.transport=e.transport||md.WebSocket||Ep,this.establishedConnections=0,this.defaultEncoder=a0.encode.bind(a0),this.defaultDecoder=a0.decode.bind(a0),this.closeWasClean=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.transport!==Ep?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let a=null;e0&&e0.addEventListener&&(e0.addEventListener("pagehide",r=>{this.conn&&(this.disconnect(),a=this.connectClock)}),e0.addEventListener("pageshow",r=>{a===this.connectClock&&(a=null,this.connect())})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.rejoinAfterMs=r=>e.rejoinAfterMs?e.rejoinAfterMs(r):[1e3,2e3,5e3][r-1]||1e4,this.reconnectAfterMs=r=>e.reconnectAfterMs?e.reconnectAfterMs(r):[10,50,100,150,200,250,500,1e3,2e3][r-1]||5e3,this.logger=e.logger||null,this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=r0(e.params||{}),this.endPoint=`${t}/${Sp.websocket}`,this.vsn=e.vsn||Zv,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new i3(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}replaceTransport(t){this.disconnect(),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=i0.appendParams(i0.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,a){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(t,e,a)}connect(t){this.connectClock++,t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=r0(t)),!this.conn&&(this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(t,e,a){this.logger(t,e,a)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,t])=>t())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.abnormalClose("heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,clearTimeout(this.heartbeatTimer),setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,a){if(!this.conn)return t&&t();this.waitForBufferDone(()=>{this.conn&&(e?this.conn.close(e,a||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e=1){if(e===5||!this.conn||!this.conn.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(t,e+1)},150*e)}waitForSocketClosed(t,e=1){if(e===5||!this.conn||this.conn.readyState===ha.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(t,e+1)},150*e)}onConnClose(t){let e=t&&t.code;this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(),clearTimeout(this.heartbeatTimer),!this.closeWasClean&&e!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,a])=>a(t))}onConnError(t){this.hasLogger()&&this.log("transport",t);let e=this.transport,a=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,r])=>{r(t,e,a)}),(e===this.transport||a>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(Oa.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case ha.connecting:return"connecting";case ha.open:return"open";case ha.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e.joinRef()!==t.joinRef())}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([a])=>t.indexOf(a)===-1)}channel(t,e={}){let a=new d3(t,e,this);return this.channels.push(a),a}push(t){if(this.hasLogger()){let{topic:e,event:a,payload:r,ref:i,join_ref:d}=t;this.log("push",`${e} ${a} (${d}, ${i})`,r)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}abnormalClose(t){this.closeWasClean=!1,this.isConnected()&&this.conn.close(tb,t)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:a,event:r,payload:i,ref:d,join_ref:n}=e;d&&d===this.pendingHeartbeatRef&&(clearTimeout(this.heartbeatTimer),this.pendingHeartbeatRef=null,setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${i.status||""} ${a} ${r} ${d&&"("+d+")"||""}`,i);for(let f=0;fa.topic===t&&(a.isJoined()||a.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}}});var pr=T((UM,n3)=>{"use strict";l();n3.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:N.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var d0=T((FM,Np)=>{"use strict";l();var{EMPTY_BUFFER:ib}=pr();function s3(t,e){if(t.length===0)return ib;if(t.length===1)return t[0];let a=N.allocUnsafe(e),r=0;for(let i=0;i{"use strict";l();var u3=Symbol("kDone"),Dp=Symbol("kRun"),Mp=class{constructor(e){this[u3]=()=>{this.pending--,this[Dp]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Dp]()}[Dp](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[u3])}}};c3.exports=Mp});var s0=T((jM,g3)=>{"use strict";l();var p0=require("zlib"),m3=d0(),db=h3(),{kStatusCode:v3}=pr(),pb=N.from([0,0,255,255]),yd=Symbol("permessage-deflate"),Pa=Symbol("total-length"),n0=Symbol("callback"),nr=Symbol("buffers"),gd=Symbol("error"),bd,Tp=class{constructor(e,a,r){if(this._maxPayload=r|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!a,this._deflate=null,this._inflate=null,this.params=null,!bd){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;bd=new db(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[n0];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let a=this._options,r=e.find(i=>!(a.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(a.serverMaxWindowBits===!1||typeof a.serverMaxWindowBits=="number"&&a.serverMaxWindowBits>i.server_max_window_bits)||typeof a.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return a.serverNoContextTakeover&&(r.server_no_context_takeover=!0),a.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof a.serverMaxWindowBits=="number"&&(r.server_max_window_bits=a.serverMaxWindowBits),typeof a.clientMaxWindowBits=="number"?r.client_max_window_bits=a.clientMaxWindowBits:(r.client_max_window_bits===!0||a.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let a=e[0];if(this._options.clientNoContextTakeover===!1&&a.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!a.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(a.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&a.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return a}normalizeParams(e){return e.forEach(a=>{Object.keys(a).forEach(r=>{let i=a[r];if(i.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(i=i[0],r==="client_max_window_bits"){if(i!==!0){let d=+i;if(!Number.isInteger(d)||d<8||d>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=d}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else if(r==="server_max_window_bits"){let d=+i;if(!Number.isInteger(d)||d<8||d>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=d}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else throw new Error(`Unknown parameter "${r}"`);a[r]=i})}),e}decompress(e,a,r){bd.add(i=>{this._decompress(e,a,(d,n)=>{i(),r(d,n)})})}compress(e,a,r){bd.add(i=>{this._compress(e,a,(d,n)=>{i(),r(d,n)})})}_decompress(e,a,r){let i=this._isServer?"client":"server";if(!this._inflate){let d=`${i}_max_window_bits`,n=typeof this.params[d]!="number"?p0.Z_DEFAULT_WINDOWBITS:this.params[d];this._inflate=p0.createInflateRaw({...this._options.zlibInflateOptions,windowBits:n}),this._inflate[yd]=this,this._inflate[Pa]=0,this._inflate[nr]=[],this._inflate.on("error",sb),this._inflate.on("data",b3)}this._inflate[n0]=r,this._inflate.write(e),a&&this._inflate.write(pb),this._inflate.flush(()=>{let d=this._inflate[gd];if(d){this._inflate.close(),this._inflate=null,r(d);return}let n=m3.concat(this._inflate[nr],this._inflate[Pa]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Pa]=0,this._inflate[nr]=[],a&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),r(null,n)})}_compress(e,a,r){let i=this._isServer?"server":"client";if(!this._deflate){let d=`${i}_max_window_bits`,n=typeof this.params[d]!="number"?p0.Z_DEFAULT_WINDOWBITS:this.params[d];this._deflate=p0.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:n}),this._deflate[Pa]=0,this._deflate[nr]=[],this._deflate.on("data",nb)}this._deflate[n0]=r,this._deflate.write(e),this._deflate.flush(p0.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let d=m3.concat(this._deflate[nr],this._deflate[Pa]);a&&(d=d.slice(0,d.length-4)),this._deflate[n0]=null,this._deflate[Pa]=0,this._deflate[nr]=[],a&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),r(null,d)})}};g3.exports=Tp;function nb(t){this[nr].push(t),this[Pa]+=t.length}function b3(t){if(this[Pa]+=t.length,this[yd]._maxPayload<1||this[Pa]<=this[yd]._maxPayload){this[nr].push(t);return}this[gd]=new RangeError("Max payload size exceeded"),this[gd].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[gd][v3]=1009,this.removeListener("data",b3),this.reset()}function sb(t){this[yd]._inflate=null,t[v3]=1007,this[n0](t)}});var f0=T((KM,Bp)=>{"use strict";l();var y3=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function x3(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function A3(t){let e=t.length,a=0;for(;a=e||(t[a+1]&192)!==128||(t[a+2]&192)!==128||t[a]===224&&(t[a+1]&224)===128||t[a]===237&&(t[a+1]&224)===160)return!1;a+=3}else if((t[a]&248)===240){if(a+3>=e||(t[a+1]&192)!==128||(t[a+2]&192)!==128||(t[a+3]&192)!==128||t[a]===240&&(t[a+1]&240)===128||t[a]===244&&t[a+1]>143||t[a]>244)return!1;a+=4}else return!1;return!0}try{let t=require("utf-8-validate");Bp.exports={isValidStatusCode:x3,isValidUTF8(e){return e.length<150?A3(e):t(e)},tokenChars:y3}}catch{Bp.exports={isValidStatusCode:x3,isValidUTF8:A3,tokenChars:y3}}});var Vp=T(($M,N3)=>{"use strict";l();var{Writable:fb}=require("stream"),w3=s0(),{BINARY_TYPES:ob,EMPTY_BUFFER:_3,kStatusCode:lb,kWebSocket:ub}=pr(),{concat:qp,toArrayBuffer:cb,unmask:hb}=d0(),{isValidStatusCode:mb,isValidUTF8:I3}=f0(),o0=0,S3=1,E3=2,C3=3,Op=4,vb=5,Pp=class extends fb{constructor(e={}){super(),this._binaryType=e.binaryType||ob[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[ub]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=o0,this._loop=!1}_write(e,a,r){if(this._opcode===8&&this._state==o0)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=r.length?a.set(this._buffers.shift(),i):(a.set(new Uint8Array(r.buffer,r.byteOffset,e),i),this._buffers[0]=r.slice(e)),e-=r.length}while(e>0);return a}startLoop(e){let a;this._loop=!0;do switch(this._state){case o0:a=this.getInfo();break;case S3:a=this.getPayloadLength16();break;case E3:a=this.getPayloadLength64();break;case C3:this.getMask();break;case Op:a=this.getData(e);break;default:this._loop=!1;return}while(this._loop);e(a)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let e=this.consume(2);if((e[0]&48)!==0)return this._loop=!1,z1(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");let a=(e[0]&64)===64;if(a&&!this._extensions[w3.extensionName])return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=(e[0]&128)===128,this._opcode=e[0]&15,this._payloadLength=e[1]&127,this._opcode===0){if(a)return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,z1(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,z1(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=a}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,z1(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(a)return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125)return this._loop=!1,z1(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}else return this._loop=!1,z1(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(e[1]&128)===128,this._isServer){if(!this._masked)return this._loop=!1,z1(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,z1(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(this._payloadLength===126)this._state=S3;else if(this._payloadLength===127)this._state=E3;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let e=this.consume(8),a=e.readUInt32BE(0);return a>Math.pow(2,53-32)-1?(this._loop=!1,z1(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=a*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,z1(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=C3:this._state=Op}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Op}getData(e){let a=_3;if(this._payloadLength){if(this._bufferedBytes7)return this.controlMessage(a);if(this._compressed){this._state=vb,this.decompress(a,e);return}return a.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(a)),this.dataMessage()}decompress(e,a){this._extensions[w3.extensionName].decompress(e,this._fin,(i,d)=>{if(i)return a(i);if(d.length){if(this._messageLength+=d.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return a(z1(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(d)}let n=this.dataMessage();if(n)return a(n);this.startLoop(a)})}dataMessage(){if(this._fin){let e=this._messageLength,a=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;this._binaryType==="nodebuffer"?r=qp(a,e):this._binaryType==="arraybuffer"?r=cb(qp(a,e)):r=a,this.emit("message",r,!0)}else{let r=qp(a,e);if(!this._skipUTF8Validation&&!I3(r))return this._loop=!1,z1(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",r,!1)}}this._state=o0}controlMessage(e){if(this._opcode===8)if(this._loop=!1,e.length===0)this.emit("conclude",1005,_3),this.end();else{if(e.length===1)return z1(RangeError,"invalid payload length 1",!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");{let a=e.readUInt16BE(0);if(!mb(a))return z1(RangeError,`invalid status code ${a}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");let r=e.slice(2);if(!this._skipUTF8Validation&&!I3(r))return z1(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",a,r),this.end()}}else this._opcode===9?this.emit("ping",e):this.emit("pong",e);this._state=o0}};N3.exports=Pp;function z1(t,e,a,r,i){let d=new t(a?`Invalid WebSocket frame: ${e}`:e);return Error.captureStackTrace(d,z1),d.code=i,d[lb]=r,d}});var Up=T((JM,T3)=>{"use strict";l();var YM=require("net"),WM=require("tls"),{randomFillSync:bb}=require("crypto"),D3=s0(),{EMPTY_BUFFER:gb}=pr(),{isValidStatusCode:yb}=f0(),{mask:M3,toBuffer:ui}=d0(),$t=Symbol("kByteLength"),xb=N.alloc(4),ma=class{constructor(e,a,r){this._extensions=a||{},r&&(this._generateMask=r,this._maskBuffer=N.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,a){let r,i=!1,d=2,n=!1;a.mask&&(r=a.maskBuffer||xb,a.generateMask?a.generateMask(r):bb(r,0,4),n=(r[0]|r[1]|r[2]|r[3])===0,d=6);let f;typeof e=="string"?(!a.mask||n)&&a[$t]!==void 0?f=a[$t]:(e=N.from(e),f=e.length):(f=e.length,i=a.mask&&a.readOnly&&!n);let h=f;f>=65536?(d+=8,h=127):f>125&&(d+=2,h=126);let v=N.allocUnsafe(i?f+d:d);return v[0]=a.fin?a.opcode|128:a.opcode,a.rsv1&&(v[0]|=64),v[1]=h,h===126?v.writeUInt16BE(f,2):h===127&&(v[2]=v[3]=0,v.writeUIntBE(f,4,6)),a.mask?(v[1]|=128,v[d-4]=r[0],v[d-3]=r[1],v[d-2]=r[2],v[d-1]=r[3],n?[v,e]:i?(M3(e,r,v,d,f),[v]):(M3(e,r,e,0,f),[v,e])):[v,e]}close(e,a,r,i){let d;if(e===void 0)d=gb;else{if(typeof e!="number"||!yb(e))throw new TypeError("First argument must be a valid error code number");if(a===void 0||!a.length)d=N.allocUnsafe(2),d.writeUInt16BE(e,0);else{let f=N.byteLength(a);if(f>123)throw new RangeError("The message must not be greater than 123 bytes");d=N.allocUnsafe(2+f),d.writeUInt16BE(e,0),typeof a=="string"?d.write(a,2):d.set(a,2)}}let n={[$t]:d.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,d,!1,n,i]):this.sendFrame(ma.frame(d,n),i)}ping(e,a,r){let i,d;if(typeof e=="string"?(i=N.byteLength(e),d=!1):(e=ui(e),i=e.length,d=ui.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[$t]:i,fin:!0,generateMask:this._generateMask,mask:a,maskBuffer:this._maskBuffer,opcode:9,readOnly:d,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(ma.frame(e,n),r)}pong(e,a,r){let i,d;if(typeof e=="string"?(i=N.byteLength(e),d=!1):(e=ui(e),i=e.length,d=ui.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[$t]:i,fin:!0,generateMask:this._generateMask,mask:a,maskBuffer:this._maskBuffer,opcode:10,readOnly:d,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(ma.frame(e,n),r)}send(e,a,r){let i=this._extensions[D3.extensionName],d=a.binary?2:1,n=a.compress,f,h;if(typeof e=="string"?(f=N.byteLength(e),h=!1):(e=ui(e),f=e.length,h=ui.readOnly),this._firstFragment?(this._firstFragment=!1,n&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(n=f>=i._threshold),this._compress=n):(n=!1,d=0),a.fin&&(this._firstFragment=!0),i){let v={[$t]:f,fin:a.fin,generateMask:this._generateMask,mask:a.mask,maskBuffer:this._maskBuffer,opcode:d,readOnly:h,rsv1:n};this._deflating?this.enqueue([this.dispatch,e,this._compress,v,r]):this.dispatch(e,this._compress,v,r)}else this.sendFrame(ma.frame(e,{[$t]:f,fin:a.fin,generateMask:this._generateMask,mask:a.mask,maskBuffer:this._maskBuffer,opcode:d,readOnly:h,rsv1:!1}),r)}dispatch(e,a,r,i){if(!a){this.sendFrame(ma.frame(e,r),i);return}let d=this._extensions[D3.extensionName];this._bufferedBytes+=r[$t],this._deflating=!0,d.compress(e,r.fin,(n,f)=>{if(this._socket.destroyed){let h=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(h);for(let v=0;v{"use strict";l();var{kForOnEventAttribute:Rp,kListener:B3}=pr(),q3=Symbol("kCode"),O3=Symbol("kData"),P3=Symbol("kError"),V3=Symbol("kMessage"),U3=Symbol("kReason"),ci=Symbol("kTarget"),R3=Symbol("kType"),F3=Symbol("kWasClean"),Va=class{constructor(e){this[ci]=null,this[R3]=e}get target(){return this[ci]}get type(){return this[R3]}};Object.defineProperty(Va.prototype,"target",{enumerable:!0});Object.defineProperty(Va.prototype,"type",{enumerable:!0});var Ur=class extends Va{constructor(e,a={}){super(e),this[q3]=a.code===void 0?0:a.code,this[U3]=a.reason===void 0?"":a.reason,this[F3]=a.wasClean===void 0?!1:a.wasClean}get code(){return this[q3]}get reason(){return this[U3]}get wasClean(){return this[F3]}};Object.defineProperty(Ur.prototype,"code",{enumerable:!0});Object.defineProperty(Ur.prototype,"reason",{enumerable:!0});Object.defineProperty(Ur.prototype,"wasClean",{enumerable:!0});var hi=class extends Va{constructor(e,a={}){super(e),this[P3]=a.error===void 0?null:a.error,this[V3]=a.message===void 0?"":a.message}get error(){return this[P3]}get message(){return this[V3]}};Object.defineProperty(hi.prototype,"error",{enumerable:!0});Object.defineProperty(hi.prototype,"message",{enumerable:!0});var l0=class extends Va{constructor(e,a={}){super(e),this[O3]=a.data===void 0?null:a.data}get data(){return this[O3]}};Object.defineProperty(l0.prototype,"data",{enumerable:!0});var Ab={addEventListener(t,e,a={}){let r;if(t==="message")r=function(d,n){let f=new l0("message",{data:n?d:d.toString()});f[ci]=this,e.call(this,f)};else if(t==="close")r=function(d,n){let f=new Ur("close",{code:d,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[ci]=this,e.call(this,f)};else if(t==="error")r=function(d){let n=new hi("error",{error:d,message:d.message});n[ci]=this,e.call(this,n)};else if(t==="open")r=function(){let d=new Va("open");d[ci]=this,e.call(this,d)};else return;r[Rp]=!!a[Rp],r[B3]=e,a.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let a of this.listeners(t))if(a[B3]===e&&!a[Rp]){this.removeListener(t,a);break}}};L3.exports={CloseEvent:Ur,ErrorEvent:hi,Event:Va,EventTarget:Ab,MessageEvent:l0}});var Fp=T((tT,k3)=>{"use strict";l();var{tokenChars:u0}=f0();function va(t,e,a){t[e]===void 0?t[e]=[a]:t[e].push(a)}function wb(t){let e=Object.create(null),a=Object.create(null),r=!1,i=!1,d=!1,n,f,h=-1,v=-1,I=-1,S=0;for(;S{let a=t[e];return Array.isArray(a)||(a=[a]),a.map(r=>[e].concat(Object.keys(r).map(i=>{let d=r[i];return Array.isArray(d)||(d=[d]),d.map(n=>n===!0?i:`${i}=${n}`).join("; ")})).join("; ")).join(", ")}).join(", ")}k3.exports={format:_b,parse:wb}});var Kp=T((iT,X3)=>{"use strict";l();var Ib=require("events"),Sb=require("https"),Eb=require("http"),K3=require("net"),Cb=require("tls"),{randomBytes:Nb,createHash:Db}=require("crypto"),{Readable:rT}=require("stream"),{URL:Lp}=require("url"),sr=s0(),Mb=Vp(),Tb=Up(),{BINARY_TYPES:j3,EMPTY_BUFFER:xd,GUID:Bb,kForOnEventAttribute:Qp,kListener:qb,kStatusCode:Ob,kWebSocket:nt,NOOP:z3}=pr(),{EventTarget:{addEventListener:Pb,removeEventListener:Vb}}=Q3(),{format:Ub,parse:Rb}=Fp(),{toBuffer:Fb}=d0(),Ua=["CONNECTING","OPEN","CLOSING","CLOSED"],Lb=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,kp=[8,13],Qb=30*1e3,Re=class extends Ib{constructor(e,a,r){super(),this._binaryType=j3[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=xd,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=Re.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,a===void 0?a=[]:Array.isArray(a)||(typeof a=="object"&&a!==null?(r=a,a=[]):a=[a]),$3(this,e,a,r)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){!j3.includes(e)||(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,a,r){let i=new Mb({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation});this._sender=new Tb(e,this._extensions,r.generateMask),this._receiver=i,this._socket=e,i[nt]=this,e[nt]=this,i.on("conclude",Hb),i.on("drain",Kb),i.on("error",zb),i.on("message",$b),i.on("ping",Gb),i.on("pong",Yb),e.setTimeout(0),e.setNoDelay(),a.length>0&&e.unshift(a),e.on("close",Y3),e.on("data",Ad),e.on("end",W3),e.on("error",J3),this._readyState=Re.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=Re.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[sr.extensionName]&&this._extensions[sr.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Re.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,a){if(this.readyState!==Re.CLOSED){if(this.readyState===Re.CONNECTING){let r="WebSocket was closed before the connection was established";return Tt(this,this._req,r)}if(this.readyState===Re.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=Re.CLOSING,this._sender.close(e,a,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),Qb)}}pause(){this.readyState===Re.CONNECTING||this.readyState===Re.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,a,r){if(this.readyState===Re.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=a=void 0):typeof a=="function"&&(r=a,a=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Re.OPEN){Hp(this,e,r);return}a===void 0&&(a=!this._isServer),this._sender.ping(e||xd,a,r)}pong(e,a,r){if(this.readyState===Re.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=a=void 0):typeof a=="function"&&(r=a,a=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Re.OPEN){Hp(this,e,r);return}a===void 0&&(a=!this._isServer),this._sender.pong(e||xd,a,r)}resume(){this.readyState===Re.CONNECTING||this.readyState===Re.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,a,r){if(this.readyState===Re.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof a=="function"&&(r=a,a={}),typeof e=="number"&&(e=e.toString()),this.readyState!==Re.OPEN){Hp(this,e,r);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...a};this._extensions[sr.extensionName]||(i.compress=!1),this._sender.send(e||xd,i,r)}terminate(){if(this.readyState!==Re.CLOSED){if(this.readyState===Re.CONNECTING){let e="WebSocket was closed before the connection was established";return Tt(this,this._req,e)}this._socket&&(this._readyState=Re.CLOSING,this._socket.destroy())}}};Object.defineProperty(Re,"CONNECTING",{enumerable:!0,value:Ua.indexOf("CONNECTING")});Object.defineProperty(Re.prototype,"CONNECTING",{enumerable:!0,value:Ua.indexOf("CONNECTING")});Object.defineProperty(Re,"OPEN",{enumerable:!0,value:Ua.indexOf("OPEN")});Object.defineProperty(Re.prototype,"OPEN",{enumerable:!0,value:Ua.indexOf("OPEN")});Object.defineProperty(Re,"CLOSING",{enumerable:!0,value:Ua.indexOf("CLOSING")});Object.defineProperty(Re.prototype,"CLOSING",{enumerable:!0,value:Ua.indexOf("CLOSING")});Object.defineProperty(Re,"CLOSED",{enumerable:!0,value:Ua.indexOf("CLOSED")});Object.defineProperty(Re.prototype,"CLOSED",{enumerable:!0,value:Ua.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Re.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Re.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Qp])return e[qb];return null},set(e){for(let a of this.listeners(t))if(a[Qp]){this.removeListener(t,a);break}typeof e=="function"&&this.addEventListener(t,e,{[Qp]:!0})}})});Re.prototype.addEventListener=Pb;Re.prototype.removeEventListener=Vb;X3.exports=Re;function $3(t,e,a,r){let i={protocolVersion:kp[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:void 0,host:void 0,path:void 0,port:void 0};if(!kp.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${kp.join(", ")})`);let d;if(e instanceof Lp)d=e,t._url=e.href;else{try{d=new Lp(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}t._url=e}let n=d.protocol==="wss:",f=d.protocol==="ws+unix:",h;if(d.protocol!=="ws:"&&!n&&!f?h=`The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`:f&&!d.pathname?h="The URL's pathname is empty":d.hash&&(h="The URL contains a fragment identifier"),h){let L=new SyntaxError(h);if(t._redirects===0)throw L;jp(t,L);return}let v=n?443:80,I=Nb(16).toString("base64"),S=n?Sb.get:Eb.get,O=new Set,R;if(i.createConnection=n?jb:kb,i.defaultPort=i.defaultPort||v,i.port=d.port||v,i.host=d.hostname.startsWith("[")?d.hostname.slice(1,-1):d.hostname,i.headers={"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":I,Connection:"Upgrade",Upgrade:"websocket",...i.headers},i.path=d.pathname+d.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(R=new sr(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Ub({[sr.extensionName]:R.offer()})),a.length){for(let L of a){if(typeof L!="string"||!Lb.test(L)||O.has(L))throw new SyntaxError("An invalid or duplicated subprotocol was specified");O.add(L)}i.headers["Sec-WebSocket-Protocol"]=a.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(d.username||d.password)&&(i.auth=`${d.username}:${d.password}`),f){let L=i.path.split(":");i.socketPath=L[0],i.path=L[1]}if(i.followRedirects){if(t._redirects===0){t._originalHost=d.host;let L=r&&r.headers;if(r={...r,headers:{}},L)for(let[$,X]of Object.entries(L))r.headers[$.toLowerCase()]=X}else d.host!==t._originalHost&&(delete i.headers.authorization,delete i.headers.cookie,delete i.headers.host,i.auth=void 0);i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+N.from(i.auth).toString("base64"))}let V=t._req=S(i);i.timeout&&V.on("timeout",()=>{Tt(t,V,"Opening handshake has timed out")}),V.on("error",L=>{V===null||V.aborted||(V=t._req=null,jp(t,L))}),V.on("response",L=>{let $=L.headers.location,X=L.statusCode;if($&&i.followRedirects&&X>=300&&X<400){if(++t._redirects>i.maxRedirects){Tt(t,V,"Maximum redirects exceeded");return}V.abort();let ie;try{ie=new Lp($,e)}catch{let we=new SyntaxError(`Invalid URL: ${$}`);jp(t,we);return}$3(t,ie,a,r)}else t.emit("unexpected-response",V,L)||Tt(t,V,`Unexpected server response: ${L.statusCode}`)}),V.on("upgrade",(L,$,X)=>{if(t.emit("upgrade",L),t.readyState!==Re.CONNECTING)return;V=t._req=null;let ie=Db("sha1").update(I+Bb).digest("base64");if(L.headers["sec-websocket-accept"]!==ie){Tt(t,$,"Invalid Sec-WebSocket-Accept header");return}let oe=L.headers["sec-websocket-protocol"],we;if(oe!==void 0?O.size?O.has(oe)||(we="Server sent an invalid subprotocol"):we="Server sent a subprotocol but none was requested":O.size&&(we="Server sent no subprotocol"),we){Tt(t,$,we);return}oe&&(t._protocol=oe);let Ie=L.headers["sec-websocket-extensions"];if(Ie!==void 0){if(!R){Tt(t,$,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ye;try{ye=Rb(Ie)}catch{Tt(t,$,"Invalid Sec-WebSocket-Extensions header");return}let ce=Object.keys(ye);if(ce.length!==1||ce[0]!==sr.extensionName){Tt(t,$,"Server indicated an extension that was not requested");return}try{R.accept(ye[sr.extensionName])}catch{Tt(t,$,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[sr.extensionName]=R}t.setSocket($,X,{generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})})}function jp(t,e){t._readyState=Re.CLOSING,t.emit("error",e),t.emitClose()}function kb(t){return t.path=t.socketPath,K3.connect(t)}function jb(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=K3.isIP(t.host)?"":t.host),Cb.connect(t)}function Tt(t,e,a){t._readyState=Re.CLOSING;let r=new Error(a);Error.captureStackTrace(r,Tt),e.setHeader?(e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),e.once("abort",t.emitClose.bind(t)),t.emit("error",r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Hp(t,e,a){if(e){let r=Fb(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(a){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${Ua[t.readyState]})`);a(r)}}function Hb(t,e){let a=this[nt];a._closeFrameReceived=!0,a._closeMessage=e,a._closeCode=t,a._socket[nt]!==void 0&&(a._socket.removeListener("data",Ad),process.nextTick(G3,a._socket),t===1005?a.close():a.close(t,e))}function Kb(){let t=this[nt];t.isPaused||t._socket.resume()}function zb(t){let e=this[nt];e._socket[nt]!==void 0&&(e._socket.removeListener("data",Ad),process.nextTick(G3,e._socket),e.close(t[Ob])),e.emit("error",t)}function H3(){this[nt].emitClose()}function $b(t,e){this[nt].emit("message",t,e)}function Gb(t){let e=this[nt];e.pong(t,!e._isServer,z3),e.emit("ping",t)}function Yb(t){this[nt].emit("pong",t)}function G3(t){t.resume()}function Y3(){let t=this[nt];this.removeListener("close",Y3),this.removeListener("data",Ad),this.removeListener("end",W3),t._readyState=Re.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[nt]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",H3),t._receiver.on("finish",H3))}function Ad(t){this[nt]._receiver.write(t)||this.pause()}function W3(){let t=this[nt];t._readyState=Re.CLOSING,t._receiver.end(),this.end()}function J3(){let t=this[nt];this.removeListener("error",J3),this.on("error",z3),t&&(t._readyState=Re.CLOSING,this.destroy())}});var af=T((pT,tf)=>{"use strict";l();var{Duplex:Wb}=require("stream");function Z3(t){t.emit("close")}function Jb(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ef(t){this.removeListener("error",ef),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Xb(t,e){let a=!0,r=new Wb({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(d,n){let f=!n&&r._readableState.objectMode?d.toString():d;r.push(f)||t.pause()}),t.once("error",function(d){r.destroyed||(a=!1,r.destroy(d))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(i,d){if(t.readyState===t.CLOSED){d(i),process.nextTick(Z3,r);return}let n=!1;t.once("error",function(h){n=!0,d(h)}),t.once("close",function(){n||d(i),process.nextTick(Z3,r)}),a&&t.terminate()},r._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(i,d,n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(i,d,n)});return}t.send(i,n)},r.on("end",Jb),r.on("error",ef),r}tf.exports=Xb});var df=T((sT,rf)=>{"use strict";l();var{tokenChars:Zb}=f0();function eg(t){let e=new Set,a=-1,r=-1,i=0;for(i;i{"use strict";l();var tg=require("events"),wd=require("http"),oT=require("https"),lT=require("net"),uT=require("tls"),{createHash:ag}=require("crypto"),pf=Fp(),Rr=s0(),rg=df(),ig=Kp(),{GUID:dg,kWebSocket:pg}=pr(),ng=/^[+/0-9A-Za-z]{22}==$/,nf=0,sf=1,ff=2,zp=class extends tg{constructor(e,a){if(super(),e={maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:ig,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=wd.createServer((r,i)=>{let d=wd.STATUS_CODES[426];i.writeHead(426,{"Content-Length":d.length,"Content-Type":"text/plain"}),i.end(d)}),this._server.listen(e.port,e.host,e.backlog,a)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=sg(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,d,n)=>{this.handleUpgrade(i,d,n,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=nf}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===ff){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(c0,this);return}if(e&&this.once("close",e),this._state!==sf)if(this._state=sf,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(c0,this):process.nextTick(c0,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{c0(this)})}}shouldHandle(e){if(this.options.path){let a=e.url.indexOf("?");if((a!==-1?e.url.slice(0,a):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,a,r,i){a.on("error",$p);let d=e.headers["sec-websocket-key"]!==void 0?e.headers["sec-websocket-key"]:!1,n=+e.headers["sec-websocket-version"];if(e.method!=="GET"||e.headers.upgrade.toLowerCase()!=="websocket"||!d||!ng.test(d)||n!==8&&n!==13||!this.shouldHandle(e))return mi(a,400);let f=e.headers["sec-websocket-protocol"],h=new Set;if(f!==void 0)try{h=rg.parse(f)}catch{return mi(a,400)}let v=e.headers["sec-websocket-extensions"],I={};if(this.options.perMessageDeflate&&v!==void 0){let S=new Rr(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let O=pf.parse(v);O[Rr.extensionName]&&(S.accept(O[Rr.extensionName]),I[Rr.extensionName]=S)}catch{return mi(a,400)}}if(this.options.verifyClient){let S={origin:e.headers[`${n===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(S,(O,R,V,L)=>{if(!O)return mi(a,R||401,V,L);this.completeUpgrade(I,d,h,e,a,r,i)});return}if(!this.options.verifyClient(S))return mi(a,401)}this.completeUpgrade(I,d,h,e,a,r,i)}completeUpgrade(e,a,r,i,d,n,f){if(!d.readable||!d.writable)return d.destroy();if(d[pg])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>nf)return mi(d,503);let h=ag("sha1").update(a+dg).digest("base64"),v=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${h}`],I=new this.options.WebSocket(null);if(r.size){let S=this.options.handleProtocols?this.options.handleProtocols(r,i):r.values().next().value;S&&(v.push(`Sec-WebSocket-Protocol: ${S}`),I._protocol=S)}if(e[Rr.extensionName]){let S=e[Rr.extensionName].params,O=pf.format({[Rr.extensionName]:[S]});v.push(`Sec-WebSocket-Extensions: ${O}`),I._extensions=e}this.emit("headers",v,i),d.write(v.concat(`\r +var ev=Object.create;var od=Object.defineProperty;var tv=Object.getOwnPropertyDescriptor;var av=Object.getOwnPropertyNames;var rv=Object.getPrototypeOf,iv=Object.prototype.hasOwnProperty;var dv=(t,e)=>()=>(t&&(e=t(t=0)),e);var T=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),vp=(t,e)=>{for(var a in e)od(t,a,{get:e[a],enumerable:!0})},xs=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of av(e))!iv.call(t,i)&&i!==a&&od(t,i,{get:()=>e[i],enumerable:!(r=tv(e,i))||r.enumerable});return t};var la=(t,e,a)=>(a=t!=null?ev(rv(t)):{},xs(e||!t||!t.__esModule?od(a,"default",{value:t,enumerable:!0}):a,t)),pv=t=>xs(od({},"__esModule",{value:!0}),t);var C,l=dv(()=>{C=require("buffer").Buffer});var _s=T((YM,As)=>{"use strict";l();var U1={};As.exports=U1;function ws(t){return t<0?-1:1}function nv(t){return t%1===.5&&(t&1)===0?Math.floor(t):Math.round(t)}function ar(t,e){e.unsigned||--t;let a=e.unsigned?0:-Math.pow(2,t),r=Math.pow(2,t)-1,i=e.moduloBitLength?Math.pow(2,e.moduloBitLength):Math.pow(2,t),d=e.moduloBitLength?Math.pow(2,e.moduloBitLength-1):Math.pow(2,t-1);return function(n,s){s||(s={});let c=+n;if(s.enforceRange){if(!Number.isFinite(c))throw new TypeError("Argument is not a finite number");if(c=ws(c)*Math.floor(Math.abs(c)),cr)throw new TypeError("Argument is not in byte range");return c}if(!isNaN(c)&&s.clamp)return c=nv(c),cr&&(c=r),c;if(!Number.isFinite(c)||c===0)return 0;if(c=ws(c)*Math.floor(Math.abs(c)),c=c%i,!e.unsigned&&c>=d)return c-i;if(e.unsigned){if(c<0)c+=i;else if(c===-0)return 0}return c}}U1.void=function(){};U1.boolean=function(t){return!!t};U1.byte=ar(8,{unsigned:!1});U1.octet=ar(8,{unsigned:!0});U1.short=ar(16,{unsigned:!1});U1["unsigned short"]=ar(16,{unsigned:!0});U1.long=ar(32,{unsigned:!1});U1["unsigned long"]=ar(32,{unsigned:!0});U1["long long"]=ar(32,{unsigned:!1,moduloBitLength:64});U1["unsigned long long"]=ar(32,{unsigned:!0,moduloBitLength:64});U1.double=function(t){let e=+t;if(!Number.isFinite(e))throw new TypeError("Argument is not a finite floating-point value");return e};U1["unrestricted double"]=function(t){let e=+t;if(isNaN(e))throw new TypeError("Argument is NaN");return e};U1.float=U1.double;U1["unrestricted float"]=U1["unrestricted double"];U1.DOMString=function(t,e){return e||(e={}),e.treatNullAsEmptyString&&t===null?"":String(t)};U1.ByteString=function(t,e){let a=String(t),r;for(let i=0;(r=a.codePointAt(i))!==void 0;++i)if(r>255)throw new TypeError("Argument is not a valid bytestring");return a};U1.USVString=function(t){let e=String(t),a=e.length,r=[];for(let i=0;i57343)r.push(String.fromCodePoint(d));else if(56320<=d&&d<=57343)r.push(String.fromCodePoint(65533));else if(i===a-1)r.push(String.fromCodePoint(65533));else{let n=e.charCodeAt(i+1);if(56320<=n&&n<=57343){let s=d&1023,c=n&1023;r.push(String.fromCodePoint((2<<15)+(2<<9)*s+c)),++i}else r.push(String.fromCodePoint(65533))}}return r.join("")};U1.Date=function(t,e){if(!(t instanceof Date))throw new TypeError("Argument is not a Date object");if(!isNaN(t))return t};U1.RegExp=function(t,e){return t instanceof RegExp||(t=new RegExp(t)),t}});var Is=T((JM,rr)=>{"use strict";l();rr.exports.mixin=function(e,a){let r=Object.getOwnPropertyNames(a);for(let i=0;i{sv.exports=[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1e3,1e3],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6e3],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8e3,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8e3]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9e3],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[3e4]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13e3,13e3],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43e3,43e3],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64e3,64e3],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66e3,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[12e4,12e4],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128e3,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23e3]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149e3]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32e3]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195e3,195e3],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[4e4]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918e3,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]});var Ts=T((eT,ld)=>{"use strict";l();var Cs=require("punycode"),Es=Ss(),si={TRANSITIONAL:0,NONTRANSITIONAL:1};function Ns(t){return t.split("\0").map(function(e){return e.normalize("NFC")}).join("\0")}function Ds(t){for(var e=0,a=Es.length-1;e<=a;){var r=Math.floor((e+a)/2),i=Es[r];if(i[0][0]<=t&&i[0][1]>=t)return i;i[0][0]>t?a=r-1:e=r+1}return null}var ov=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function Ms(t){return t.replace(ov,"_").length}function fv(t,e,a){for(var r=!1,i="",d=Ms(t),n=0;n253||n.length===0)&&(i.error=!0);for(var s=0;s63||d.length===0){i.error=!0;break}}return i.error?null:d.join(".")};ld.exports.toUnicode=function(t,e){var a=fd(t,e,si.NONTRANSITIONAL);return{domain:a.string,error:a.error}};ld.exports.PROCESSING_OPTIONS=si});var ua=T((aT,It)=>{"use strict";l();var oi=require("punycode"),Bs=Ts(),Us={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},Ge=Symbol("failure");function qs(t){return oi.ucs2.decode(t).length}function Os(t,e){let a=t[e];return isNaN(a)?void 0:String.fromCodePoint(a)}function $i(t){return t>=48&&t<=57}function Gi(t){return t>=65&&t<=90||t>=97&&t<=122}function cv(t){return Gi(t)||$i(t)}function zt(t){return $i(t)||t>=65&&t<=70||t>=97&&t<=102}function Ps(t){return t==="."||t.toLowerCase()==="%2e"}function hv(t){return t=t.toLowerCase(),t===".."||t==="%2e."||t===".%2e"||t==="%2e%2e"}function mv(t,e){return Gi(t)&&(e===58||e===124)}function Vs(t){return t.length===2&&Gi(t.codePointAt(0))&&(t[1]===":"||t[1]==="|")}function vv(t){return t.length===2&&Gi(t.codePointAt(0))&&t[1]===":"}function bv(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/)!==-1}function gv(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/)!==-1}function bp(t){return Us[t]!==void 0}function K1(t){return bp(t.scheme)}function yv(t){return Us[t]}function Rs(t){let e=t.toString(16).toUpperCase();return e.length===1&&(e="0"+e),"%"+e}function xv(t){let e=new C(t),a="";for(let r=0;r126}var Av=new Set([32,34,35,60,62,63,96,123,125]);function Fs(t){return ud(t)||Av.has(t)}var _v=new Set([47,58,59,61,64,91,92,93,94,124]);function yp(t){return Fs(t)||_v.has(t)}function Or(t,e){let a=String.fromCodePoint(t);return e(t)?xv(a):a}function Iv(t){let e=10;return t.length>=2&&t.charAt(0)==="0"&&t.charAt(1).toLowerCase()==="x"?(t=t.substring(2),e=16):t.length>=2&&t.charAt(0)==="0"&&(t=t.substring(1),e=8),t===""?0:(e===10?/[^0-9]/:e===16?/[^0-9A-Fa-f]/:/[^0-7]/).test(t)?Ge:parseInt(t,e)}function Sv(t){let e=t.split(".");if(e[e.length-1]===""&&e.length>1&&e.pop(),e.length>4)return t;let a=[];for(let d of e){if(d==="")return t;let n=Iv(d);if(n===Ge)return t;a.push(n)}for(let d=0;d255)return Ge;if(a[a.length-1]>=Math.pow(256,5-a.length))return Ge;let r=a.pop(),i=0;for(let d of a)r+=d*Math.pow(256,3-i),++i;return r}function Ev(t){let e="",a=t;for(let r=1;r<=4;++r)e=String(a%256)+e,r!==4&&(e="."+e),a=Math.floor(a/256);return e}function Cv(t){let e=[0,0,0,0,0,0,0,0],a=0,r=null,i=0;if(t=oi.ucs2.decode(t),t[i]===58){if(t[i+1]!==58)return Ge;i+=2,++a,r=a}for(;i6))return Ge;let s=0;for(;t[i]!==void 0;){let c=null;if(s>0)if(t[i]===46&&s<4)++i;else return Ge;if(!$i(t[i]))return Ge;for(;$i(t[i]);){let v=parseInt(Os(t,i));if(c===null)c=v;else{if(c===0)return Ge;c=c*10+v}if(c>255)return Ge;++i}e[a]=e[a]*256+c,++s,(s===2||s===4)&&++a}if(s!==4)return Ge;break}else if(t[i]===58){if(++i,t[i]===void 0)return Ge}else if(t[i]!==void 0)return Ge;e[a]=d,++a}if(r!==null){let d=a-r;for(a=7;a!==0&&d>0;){let n=e[r+d-1];e[r+d-1]=e[a],e[a]=n,--a,--d}}else if(r===null&&a!==8)return Ge;return e}function Nv(t){let e="",r=Mv(t).idx,i=!1;for(let d=0;d<=7;++d)if(!(i&&t[d]===0)){if(i&&(i=!1),r===d){e+=d===0?"::":":",i=!0;continue}e+=t[d].toString(16),d!==7&&(e+=":")}return e}function gp(t,e){if(t[0]==="[")return t[t.length-1]!=="]"?Ge:Cv(t.substring(1,t.length-1));if(!e)return Dv(t);let a=wv(t),r=Bs.toASCII(a,!1,Bs.PROCESSING_OPTIONS.NONTRANSITIONAL,!1);if(r===null||bv(r))return Ge;let i=Sv(r);return typeof i=="number"||i===Ge?i:r}function Dv(t){if(gv(t))return Ge;let e="",a=oi.ucs2.decode(t);for(let r=0;ra&&(e=r,a=i),r=null,i=0):(r===null&&(r=d),++i);return i>a&&(e=r,a=i),{idx:e,len:a}}function xp(t){return typeof t=="number"?Ev(t):t instanceof Array?"["+Nv(t)+"]":t}function Tv(t){return t.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,"")}function Bv(t){return t.replace(/\u0009|\u000A|\u000D/g,"")}function Ls(t){let e=t.path;e.length!==0&&(t.scheme==="file"&&e.length===1&&Ov(e[0])||e.pop())}function Qs(t){return t.username!==""||t.password!==""}function qv(t){return t.host===null||t.host===""||t.cannotBeABaseURL||t.scheme==="file"}function Ov(t){return/^[A-Za-z]:$/.test(t)}function V1(t,e,a,r,i){if(this.pointer=0,this.input=t,this.base=e||null,this.encodingOverride=a||"utf-8",this.stateOverride=i,this.url=r,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};let n=Tv(this.input);n!==this.input&&(this.parseError=!0),this.input=n}let d=Bv(this.input);for(d!==this.input&&(this.parseError=!0),this.input=d,this.state=i||"scheme start",this.buffer="",this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=oi.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){let n=this.input[this.pointer],s=isNaN(n)?void 0:String.fromCodePoint(n),c=this["parse "+this.state](n,s);if(c){if(c===Ge){this.failure=!0;break}}else break}}V1.prototype["parse scheme start"]=function(e,a){if(Gi(e))this.buffer+=a.toLowerCase(),this.state="scheme";else if(!this.stateOverride)this.state="no scheme",--this.pointer;else return this.parseError=!0,Ge;return!0};V1.prototype["parse scheme"]=function(e,a){if(cv(e)||e===43||e===45||e===46)this.buffer+=a.toLowerCase();else if(e===58){if(this.stateOverride&&(K1(this.url)&&!bp(this.buffer)||!K1(this.url)&&bp(this.buffer)||(Qs(this.url)||this.url.port!==null)&&this.buffer==="file"||this.url.scheme==="file"&&(this.url.host===""||this.url.host===null))||(this.url.scheme=this.buffer,this.buffer="",this.stateOverride))return!1;this.url.scheme==="file"?((this.input[this.pointer+1]!==47||this.input[this.pointer+2]!==47)&&(this.parseError=!0),this.state="file"):K1(this.url)&&this.base!==null&&this.base.scheme===this.url.scheme?this.state="special relative or authority":K1(this.url)?this.state="special authority slashes":this.input[this.pointer+1]===47?(this.state="path or authority",++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(""),this.state="cannot-be-a-base-URL path")}else if(!this.stateOverride)this.buffer="",this.state="no scheme",this.pointer=-1;else return this.parseError=!0,Ge;return!0};V1.prototype["parse no scheme"]=function(e){return this.base===null||this.base.cannotBeABaseURL&&e!==35?Ge:(this.base.cannotBeABaseURL&&e===35?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.url.cannotBeABaseURL=!0,this.state="fragment"):this.base.scheme==="file"?(this.state="file",--this.pointer):(this.state="relative",--this.pointer),!0)};V1.prototype["parse special relative or authority"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="relative",--this.pointer),!0};V1.prototype["parse path or authority"]=function(e){return e===47?this.state="authority":(this.state="path",--this.pointer),!0};V1.prototype["parse relative"]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===47?this.state="relative slash":e===63?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):K1(this.url)&&e===92?(this.parseError=!0,this.state="relative slash"):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state="path",--this.pointer),!0};V1.prototype["parse relative slash"]=function(e){return K1(this.url)&&(e===47||e===92)?(e===92&&(this.parseError=!0),this.state="special authority ignore slashes"):e===47?this.state="authority":(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state="path",--this.pointer),!0};V1.prototype["parse special authority slashes"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="special authority ignore slashes",--this.pointer),!0};V1.prototype["parse special authority ignore slashes"]=function(e){return e!==47&&e!==92?(this.state="authority",--this.pointer):this.parseError=!0,!0};V1.prototype["parse authority"]=function(e,a){if(e===64){this.parseError=!0,this.atFlag&&(this.buffer="%40"+this.buffer),this.atFlag=!0;let r=qs(this.buffer);for(let i=0;iMath.pow(2,16)-1)return this.parseError=!0,Ge;this.url.port=r===yv(this.url.scheme)?null:r,this.buffer=""}if(this.stateOverride)return!1;this.state="path start",--this.pointer}else return this.parseError=!0,Ge;return!0};var Pv=new Set([47,92,63,35]);V1.prototype["parse file"]=function(e){return this.url.scheme="file",e===47||e===92?(e===92&&(this.parseError=!0),this.state="file slash"):this.base!==null&&this.base.scheme==="file"?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===63?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):(this.input.length-this.pointer-1===0||!mv(e,this.input[this.pointer+1])||this.input.length-this.pointer-1>=2&&!Pv.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),Ls(this.url)):this.parseError=!0,this.state="path",--this.pointer):(this.state="path",--this.pointer),!0};V1.prototype["parse file slash"]=function(e){return e===47||e===92?(e===92&&(this.parseError=!0),this.state="file host"):(this.base!==null&&this.base.scheme==="file"&&(vv(this.base.path[0])?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state="path",--this.pointer),!0};V1.prototype["parse file host"]=function(e,a){if(isNaN(e)||e===47||e===92||e===63||e===35)if(--this.pointer,!this.stateOverride&&Vs(this.buffer))this.parseError=!0,this.state="path";else if(this.buffer===""){if(this.url.host="",this.stateOverride)return!1;this.state="path start"}else{let r=gp(this.buffer,K1(this.url));if(r===Ge)return Ge;if(r==="localhost"&&(r=""),this.url.host=r,this.stateOverride)return!1;this.buffer="",this.state="path start"}else this.buffer+=a;return!0};V1.prototype["parse path start"]=function(e){return K1(this.url)?(e===92&&(this.parseError=!0),this.state="path",e!==47&&e!==92&&--this.pointer):!this.stateOverride&&e===63?(this.url.query="",this.state="query"):!this.stateOverride&&e===35?(this.url.fragment="",this.state="fragment"):e!==void 0&&(this.state="path",e!==47&&--this.pointer),!0};V1.prototype["parse path"]=function(e){if(isNaN(e)||e===47||K1(this.url)&&e===92||!this.stateOverride&&(e===63||e===35)){if(K1(this.url)&&e===92&&(this.parseError=!0),hv(this.buffer)?(Ls(this.url),e!==47&&!(K1(this.url)&&e===92)&&this.url.path.push("")):Ps(this.buffer)&&e!==47&&!(K1(this.url)&&e===92)?this.url.path.push(""):Ps(this.buffer)||(this.url.scheme==="file"&&this.url.path.length===0&&Vs(this.buffer)&&(this.url.host!==""&&this.url.host!==null&&(this.parseError=!0,this.url.host=""),this.buffer=this.buffer[0]+":"),this.url.path.push(this.buffer)),this.buffer="",this.url.scheme==="file"&&(e===void 0||e===63||e===35))for(;this.url.path.length>1&&this.url.path[0]==="";)this.parseError=!0,this.url.path.shift();e===63&&(this.url.query="",this.state="query"),e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!zt(this.input[this.pointer+1])||!zt(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=Or(e,Fs);return!0};V1.prototype["parse cannot-be-a-base-URL path"]=function(e){return e===63?(this.url.query="",this.state="query"):e===35?(this.url.fragment="",this.state="fragment"):(!isNaN(e)&&e!==37&&(this.parseError=!0),e===37&&(!zt(this.input[this.pointer+1])||!zt(this.input[this.pointer+2]))&&(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+Or(e,ud))),!0};V1.prototype["parse query"]=function(e,a){if(isNaN(e)||!this.stateOverride&&e===35){(!K1(this.url)||this.url.scheme==="ws"||this.url.scheme==="wss")&&(this.encodingOverride="utf-8");let r=new C(this.buffer);for(let i=0;i126||r[i]===34||r[i]===35||r[i]===60||r[i]===62?this.url.query+=Rs(r[i]):this.url.query+=String.fromCodePoint(r[i]);this.buffer="",e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!zt(this.input[this.pointer+1])||!zt(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=a;return!0};V1.prototype["parse fragment"]=function(e){return isNaN(e)||(e===0?this.parseError=!0:(e===37&&(!zt(this.input[this.pointer+1])||!zt(this.input[this.pointer+2]))&&(this.parseError=!0),this.url.fragment+=Or(e,ud))),!0};function Uv(t,e){let a=t.scheme+":";if(t.host!==null?(a+="//",(t.username!==""||t.password!=="")&&(a+=t.username,t.password!==""&&(a+=":"+t.password),a+="@"),a+=xp(t.host),t.port!==null&&(a+=":"+t.port)):t.host===null&&t.scheme==="file"&&(a+="//"),t.cannotBeABaseURL)a+=t.path[0];else for(let r of t.path)a+="/"+r;return t.query!==null&&(a+="?"+t.query),!e&&t.fragment!==null&&(a+="#"+t.fragment),a}function Vv(t){let e=t.scheme+"://";return e+=xp(t.host),t.port!==null&&(e+=":"+t.port),e}It.exports.serializeURL=Uv;It.exports.serializeURLOrigin=function(t){switch(t.scheme){case"blob":try{return It.exports.serializeURLOrigin(It.exports.parseURL(t.path[0]))}catch{return"null"}case"ftp":case"gopher":case"http":case"https":case"ws":case"wss":return Vv({scheme:t.scheme,host:t.host,port:t.port});case"file":return"file://";default:return"null"}};It.exports.basicURLParse=function(t,e){e===void 0&&(e={});let a=new V1(t,e.baseURL,e.encodingOverride,e.url,e.stateOverride);return a.failure?"failure":a.url};It.exports.setTheUsername=function(t,e){t.username="";let a=oi.ucs2.decode(e);for(let r=0;r{"use strict";l();var R1=ua();ks.implementation=class{constructor(e){let a=e[0],r=e[1],i=null;if(r!==void 0&&(i=R1.basicURLParse(r),i==="failure"))throw new TypeError("Invalid base URL");let d=R1.basicURLParse(a,{baseURL:i});if(d==="failure")throw new TypeError("Invalid URL");this._url=d}get href(){return R1.serializeURL(this._url)}set href(e){let a=R1.basicURLParse(e);if(a==="failure")throw new TypeError("Invalid URL");this._url=a}get origin(){return R1.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+":"}set protocol(e){R1.basicURLParse(e+":",{url:this._url,stateOverride:"scheme start"})}get username(){return this._url.username}set username(e){R1.cannotHaveAUsernamePasswordPort(this._url)||R1.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){R1.cannotHaveAUsernamePasswordPort(this._url)||R1.setThePassword(this._url,e)}get host(){let e=this._url;return e.host===null?"":e.port===null?R1.serializeHost(e.host):R1.serializeHost(e.host)+":"+R1.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||R1.basicURLParse(e,{url:this._url,stateOverride:"host"})}get hostname(){return this._url.host===null?"":R1.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||R1.basicURLParse(e,{url:this._url,stateOverride:"hostname"})}get port(){return this._url.port===null?"":R1.serializeInteger(this._url.port)}set port(e){R1.cannotHaveAUsernamePasswordPort(this._url)||(e===""?this._url.port=null:R1.basicURLParse(e,{url:this._url,stateOverride:"port"}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:this._url.path.length===0?"":"/"+this._url.path.join("/")}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],R1.basicURLParse(e,{url:this._url,stateOverride:"path start"}))}get search(){return this._url.query===null||this._url.query===""?"":"?"+this._url.query}set search(e){let a=this._url;if(e===""){a.query=null;return}let r=e[0]==="?"?e.substring(1):e;a.query="",R1.basicURLParse(r,{url:a,stateOverride:"query"})}get hash(){return this._url.fragment===null||this._url.fragment===""?"":"#"+this._url.fragment}set hash(e){if(e===""){this._url.fragment=null;return}let a=e[0]==="#"?e.substring(1):e;this._url.fragment="",R1.basicURLParse(a,{url:this._url,stateOverride:"fragment"})}toJSON(){return this.href}}});var zs=T((nT,Yi)=>{"use strict";l();var Ot=_s(),Ks=Is(),Hs=js(),N1=Ks.implSymbol;function G1(t){if(!this||this[N1]||!(this instanceof G1))throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");if(arguments.length<1)throw new TypeError("Failed to construct 'URL': 1 argument required, but only "+arguments.length+" present.");let e=[];for(let a=0;a{"use strict";l();ca.URL=zs().interface;ca.serializeURL=ua().serializeURL;ca.serializeURLOrigin=ua().serializeURLOrigin;ca.basicURLParse=ua().basicURLParse;ca.setTheUsername=ua().setTheUsername;ca.setThePassword=ua().setThePassword;ca.serializeHost=ua().serializeHost;ca.serializeInteger=ua().serializeInteger;ca.parseURL=ua().parseURL});var d3=T((ma,i3)=>{"use strict";l();Object.defineProperty(ma,"__esModule",{value:!0});function ui(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var $t=ui(require("stream")),Js=ui(require("http")),hd=ui(require("url")),Xs=ui($s()),Rv=ui(require("https")),Pr=ui(require("zlib")),Fv=$t.Readable,Ba=Symbol("buffer"),wp=Symbol("type"),pr=class{constructor(){this[wp]="";let e=arguments[0],a=arguments[1],r=[],i=0;if(e){let n=e,s=Number(n.length);for(let c=0;c1&&arguments[1]!==void 0?arguments[1]:{},r=a.size;let i=r===void 0?0:r;var d=a.timeout;let n=d===void 0?0:d;t==null?t=null:Zs(t)?t=C.from(t.toString()):Xi(t)||C.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=C.from(t):ArrayBuffer.isView(t)?t=C.from(t.buffer,t.byteOffset,t.byteLength):t instanceof $t||(t=C.from(String(t)))),this[Oa]={body:t,disturbed:!1,error:null},this.size=i,this.timeout=n,t instanceof $t&&t.on("error",function(s){let c=s.name==="AbortError"?s:new tt(`Invalid response body while trying to fetch ${e.url}: ${s.message}`,"system",s);e[Oa].error=c})}Y1.prototype={get body(){return this[Oa].body},get bodyUsed(){return this[Oa].disturbed},arrayBuffer(){return fi.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return fi.call(this).then(function(e){return Object.assign(new pr([],{type:t.toLowerCase()}),{[Ba]:e})})},json(){var t=this;return fi.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(a){return Y1.Promise.reject(new tt(`invalid json response body at ${t.url} reason: ${a.message}`,"invalid-json"))}})},text(){return fi.call(this).then(function(t){return t.toString()})},buffer(){return fi.call(this)},textConverted(){var t=this;return fi.call(this).then(function(e){return Lv(e,t.headers)})}};Object.defineProperties(Y1.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});Y1.mixIn=function(t){for(let e of Object.getOwnPropertyNames(Y1.prototype))if(!(e in t)){let a=Object.getOwnPropertyDescriptor(Y1.prototype,e);Object.defineProperty(t,e,a)}};function fi(){var t=this;if(this[Oa].disturbed)return Y1.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[Oa].disturbed=!0,this[Oa].error)return Y1.Promise.reject(this[Oa].error);let e=this.body;if(e===null)return Y1.Promise.resolve(C.alloc(0));if(Xi(e)&&(e=e.stream()),C.isBuffer(e))return Y1.Promise.resolve(e);if(!(e instanceof $t))return Y1.Promise.resolve(C.alloc(0));let a=[],r=0,i=!1;return new Y1.Promise(function(d,n){let s;t.timeout&&(s=setTimeout(function(){i=!0,n(new tt(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(c){c.name==="AbortError"?(i=!0,n(c)):n(new tt(`Invalid response body while trying to fetch ${t.url}: ${c.message}`,"system",c))}),e.on("data",function(c){if(!(i||c===null)){if(t.size&&r+c.length>t.size){i=!0,n(new tt(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}r+=c.length,a.push(c)}}),e.on("end",function(){if(!i){clearTimeout(s);try{d(C.concat(a,r))}catch(c){n(new tt(`Could not create Buffer from response body for ${t.url}: ${c.message}`,"system",c))}}})})}function Lv(t,e){if(typeof Ip!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let a=e.get("content-type"),r="utf-8",i,d;return a&&(i=/charset=([^;]*)/i.exec(a)),d=t.slice(0,1024).toString(),!i&&d&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[Q1]=Object.create(null),e instanceof bt){let a=e.raw(),r=Object.keys(a);for(let i of r)for(let d of a[i])this.append(i,d);return}if(e!=null)if(typeof e=="object"){let a=e[Symbol.iterator];if(a!=null){if(typeof a!="function")throw new TypeError("Header pairs must be iterable");let r=[];for(let i of e){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");r.push(Array.from(i))}for(let i of r){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(let r of Object.keys(e)){let i=e[r];this.append(r,i)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,Wi(e);let a=li(this[Q1],e);return a===void 0?null:this[Q1][a].join(", ")}forEach(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,r=Ep(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[Q1]).sort().map(e==="key"?function(r){return r.toLowerCase()}:e==="value"?function(r){return t[Q1][r].join(", ")}:function(r){return[r.toLowerCase(),t[Q1][r].join(", ")]})}var Cp=Symbol("internal");function Ap(t,e){let a=Object.create(Dp);return a[Cp]={target:t,kind:e,index:0},a}var Dp=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==Dp)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[Cp];let e=t.target,a=t.kind,r=t.index,i=Ep(e,a),d=i.length;return r>=d?{value:void 0,done:!0}:(this[Cp].index=r+1,{value:i[r],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(Dp,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function kv(t){let e=Object.assign({__proto__:null},t[Q1]),a=li(t[Q1],"Host");return a!==void 0&&(e[a]=e[a][0]),e}function jv(t){let e=new bt;for(let a of Object.keys(t))if(!r3.test(a))if(Array.isArray(t[a]))for(let r of t[a])Sp.test(r)||(e[Q1][a]===void 0?e[Q1][a]=[r]:e[Q1][a].push(r));else Sp.test(t[a])||(e[Q1][a]=[t[a]]);return e}var ir=Symbol("Response internals"),Hv=Js.STATUS_CODES,St=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Y1.call(this,e,a);let r=a.status||200,i=new bt(a.headers);if(e!=null&&!i.has("Content-Type")){let d=t3(e);d&&i.append("Content-Type",d)}this[ir]={url:a.url,status:r,statusText:a.statusText||Hv[r],headers:i,counter:a.counter}}get url(){return this[ir].url||""}get status(){return this[ir].status}get ok(){return this[ir].status>=200&&this[ir].status<300}get redirected(){return this[ir].counter>0}get statusText(){return this[ir].statusText}get headers(){return this[ir].headers}clone(){return new St(e3(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};Y1.mixIn(St.prototype);Object.defineProperties(St.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(St.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var qa=Symbol("Request internals"),Kv=hd.URL||Xs.URL,zv=hd.parse,$v=hd.format;function _p(t){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(t)&&(t=new Kv(t).toString()),zv(t)}var Gv="destroy"in $t.Readable.prototype;function cd(t){return typeof t=="object"&&typeof t[qa]=="object"}function Yv(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var ha=class{constructor(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r;cd(e)?r=_p(e.url):(e&&e.href?r=_p(e.href):r=_p(`${e}`),e={});let i=a.method||e.method||"GET";if(i=i.toUpperCase(),(a.body!=null||cd(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let d=a.body!=null?a.body:cd(e)&&e.body!==null?e3(e):null;Y1.call(this,d,{timeout:a.timeout||e.timeout||0,size:a.size||e.size||0});let n=new bt(a.headers||e.headers||{});if(d!=null&&!n.has("Content-Type")){let c=t3(d);c&&n.append("Content-Type",c)}let s=cd(e)?e.signal:null;if("signal"in a&&(s=a.signal),s!=null&&!Yv(s))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[qa]={method:i,redirect:a.redirect||e.redirect||"follow",headers:n,parsedURL:r,signal:s},this.follow=a.follow!==void 0?a.follow:e.follow!==void 0?e.follow:20,this.compress=a.compress!==void 0?a.compress:e.compress!==void 0?e.compress:!0,this.counter=a.counter||e.counter||0,this.agent=a.agent||e.agent}get method(){return this[qa].method}get url(){return $v(this[qa].parsedURL)}get headers(){return this[qa].headers}get redirect(){return this[qa].redirect}get signal(){return this[qa].signal}clone(){return new ha(this)}};Y1.mixIn(ha.prototype);Object.defineProperty(ha.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(ha.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function Wv(t){let e=t[qa].parsedURL,a=new bt(t[qa].headers);if(a.has("Accept")||a.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof $t.Readable&&!Gv)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let r=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(r="0"),t.body!=null){let d=a3(t);typeof d=="number"&&(r=String(d))}r&&a.set("Content-Length",r),a.has("User-Agent")||a.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!a.has("Accept-Encoding")&&a.set("Accept-Encoding","gzip,deflate");let i=t.agent;return typeof i=="function"&&(i=i(e)),!a.has("Connection")&&!i&&a.set("Connection","close"),Object.assign({},e,{method:t.method,headers:kv(a),agent:i})}function Ji(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}Ji.prototype=Object.create(Error.prototype);Ji.prototype.constructor=Ji;Ji.prototype.name="AbortError";var Np=hd.URL||Xs.URL,Ws=$t.PassThrough,Jv=function(e,a){let r=new Np(a).hostname,i=new Np(e).hostname;return r===i||r[r.length-i.length-1]==="."&&r.endsWith(i)};function dr(t,e){if(!dr.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Y1.Promise=dr.Promise,new dr.Promise(function(a,r){let i=new ha(t,e),d=Wv(i),n=(d.protocol==="https:"?Rv:Js).request,s=i.signal,c=null,v=function(){let L=new Ji("The user aborted a request.");r(L),i.body&&i.body instanceof $t.Readable&&i.body.destroy(L),!(!c||!c.body)&&c.body.emit("error",L)};if(s&&s.aborted){v();return}let I=function(){v(),R()},S=n(d),O;s&&s.addEventListener("abort",I);function R(){S.abort(),s&&s.removeEventListener("abort",I),clearTimeout(O)}i.timeout&&S.once("socket",function(V){O=setTimeout(function(){r(new tt(`network timeout at: ${i.url}`,"request-timeout")),R()},i.timeout)}),S.on("error",function(V){r(new tt(`request to ${i.url} failed, reason: ${V.message}`,"system",V)),R()}),S.on("response",function(V){clearTimeout(O);let L=jv(V.headers);if(dr.isRedirect(V.statusCode)){let ye=L.get("Location"),Ie=null;try{Ie=ye===null?null:new Np(ye,i.url).toString()}catch{if(i.redirect!=="manual"){r(new tt(`uri requested responds with an invalid redirect URL: ${ye}`,"invalid-redirect")),R();return}}switch(i.redirect){case"error":r(new tt(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),R();return;case"manual":if(Ie!==null)try{L.set("Location",Ie)}catch(Ne){r(Ne)}break;case"follow":if(Ie===null)break;if(i.counter>=i.follow){r(new tt(`maximum redirect reached at: ${i.url}`,"max-redirect")),R();return}let we={headers:new bt(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:i.body,signal:i.signal,timeout:i.timeout,size:i.size};if(!Jv(i.url,Ie))for(let Ne of["authorization","www-authenticate","cookie","cookie2"])we.headers.delete(Ne);if(V.statusCode!==303&&i.body&&a3(i)===null){r(new tt("Cannot follow redirect with body being a readable stream","unsupported-redirect")),R();return}(V.statusCode===303||(V.statusCode===301||V.statusCode===302)&&i.method==="POST")&&(we.method="GET",we.body=void 0,we.headers.delete("content-length")),a(dr(new ha(Ie,we))),R();return}}V.once("end",function(){s&&s.removeEventListener("abort",I)});let G=V.pipe(new Ws),J={url:i.url,status:V.statusCode,statusText:V.statusMessage,headers:L,size:i.size,timeout:i.timeout,counter:i.counter},fe=L.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||fe===null||V.statusCode===204||V.statusCode===304){c=new St(G,J),a(c);return}let oe={flush:Pr.Z_SYNC_FLUSH,finishFlush:Pr.Z_SYNC_FLUSH};if(fe=="gzip"||fe=="x-gzip"){G=G.pipe(Pr.createGunzip(oe)),c=new St(G,J),a(c);return}if(fe=="deflate"||fe=="x-deflate"){V.pipe(new Ws).once("data",function(Ie){(Ie[0]&15)===8?G=G.pipe(Pr.createInflate()):G=G.pipe(Pr.createInflateRaw()),c=new St(G,J),a(c)});return}if(fe=="br"&&typeof Pr.createBrotliDecompress=="function"){G=G.pipe(Pr.createBrotliDecompress()),c=new St(G,J),a(c);return}c=new St(G,J),a(c)}),Qv(S,i)})}dr.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};dr.Promise=global.Promise;i3.exports=ma=dr;Object.defineProperty(ma,"__esModule",{value:!0});ma.default=ma;ma.Headers=bt;ma.Request=ha;ma.Response=St;ma.FetchError=tt});var Mp=T((Ur,p3)=>{l();var Zi=d3(),Xv=Zi.default||Zi,md=function(t,e){return/^\/\//.test(t)&&(t="https:"+t),Xv.call(this,t,e)};md.ponyfill=!0;p3.exports=Ur=md;Ur.fetch=md;Ur.Headers=Zi.Headers;Ur.Request=Zi.Request;Ur.Response=Zi.Response;Ur.default=md});var qp=T((cT,f3)=>{l();var Bp=Object.defineProperty,Zv=Object.getOwnPropertyDescriptor,eb=Object.getOwnPropertyNames,tb=Object.prototype.hasOwnProperty,ab=(t,e)=>{for(var a in e)Bp(t,a,{get:e[a],enumerable:!0})},rb=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of eb(e))!tb.call(t,i)&&i!==a&&Bp(t,i,{get:()=>e[i],enumerable:!(r=Zv(e,i))||r.enumerable});return t},ib=t=>rb(Bp({},"__esModule",{value:!0}),t),n3={};ab(n3,{Channel:()=>o3,LongPoll:()=>bd,Presence:()=>t0,Serializer:()=>a0,Socket:()=>fb});f3.exports=ib(n3);var r0=t=>typeof t=="function"?t:function(){return t},db=typeof self<"u"?self:null,e0=typeof window<"u"?window:null,i0=db||e0||i0,pb="2.0.0",va={connecting:0,open:1,closing:2,closed:3},nb=1e4,sb=1e3,Et={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},Pa={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Tp={longpoll:"longpoll",websocket:"websocket"},ob={complete:4},vd=class{constructor(t,e,a,r){this.channel=t,this.event=e,this.payload=a||function(){return{}},this.receivedResp=null,this.timeout=r,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:t,response:e,_ref:a}){this.recHooks.filter(r=>r.status===t).forEach(r=>r.callback(e))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},s3=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},o3=class{constructor(t,e,a){this.state=Et.closed,this.topic=t,this.params=r0(e||{}),this.socket=a,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new vd(this,Pa.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new s3(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Et.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(r=>r.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=Et.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=Et.closed,this.socket.remove(this)}),this.onError(r=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,r),this.isJoining()&&this.joinPush.reset(),this.state=Et.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new vd(this,Pa.leave,r0({}),this.timeout).send(),this.state=Et.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(Pa.reply,(r,i)=>{this.trigger(this.replyEventName(i),r)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(t){this.on(Pa.close,t)}onError(t){return this.on(Pa.error,e=>t(e))}on(t,e){let a=this.bindingRef++;return this.bindings.push({event:t,ref:a,callback:e}),a}off(t,e){this.bindings=this.bindings.filter(a=>!(a.event===t&&(typeof e>"u"||e===a.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,a=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let r=new vd(this,t,function(){return e},a);return this.canPush()?r.send():(r.startTimeout(),this.pushBuffer.push(r)),r}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Et.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(Pa.close,"leave")},a=new vd(this,Pa.leave,r0({}),t);return a.receive("ok",()=>e()).receive("timeout",()=>e()),a.send(),this.canPush()||a.trigger("ok",{}),a}onMessage(t,e,a){return e}isMember(t,e,a,r){return this.topic!==t?!1:r&&r!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:a,joinRef:r}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Et.joining,this.joinPush.resend(t))}trigger(t,e,a,r){let i=this.onMessage(t,e,a,r);if(e&&!i)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let d=this.bindings.filter(n=>n.event===t);for(let n=0;n{let s=this.parseJSON(t.responseText);n&&n(s)},d&&(t.ontimeout=d),t.onprogress=()=>{},t.send(r),t}static xhrRequest(t,e,a,r,i,d,n,s){return t.open(e,a,!0),t.timeout=d,t.setRequestHeader("Content-Type",r),t.onerror=()=>s&&s(null),t.onreadystatechange=()=>{if(t.readyState===ob.complete&&s){let c=this.parseJSON(t.responseText);s(c)}},n&&(t.ontimeout=n),t.send(i),t}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let a=[];for(var r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let i=e?`${e}[${r}]`:r,d=t[r];typeof d=="object"?a.push(this.serialize(d,i)):a.push(encodeURIComponent(i)+"="+encodeURIComponent(d))}return a.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let a=t.match(/\?/)?"&":"?";return`${t}${a}${this.serialize(e)}`}},bd=class{constructor(t){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=va.connecting,this.poll()}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Tp.websocket),"$1/"+Tp.longpoll)}endpointURL(){return gd.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(t,e,a){this.close(t,e,a),this.readyState=va.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===va.open||this.readyState===va.connecting}poll(){this.ajax("GET",null,()=>this.ontimeout(),t=>{if(t){var{status:e,token:a,messages:r}=t;this.token=a}else e=0;switch(e){case 200:r.forEach(i=>{setTimeout(()=>this.onmessage({data:i}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=va.open,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${e}`)}})}send(t){this.ajax("POST",t,()=>this.onerror("timeout"),e=>{(!e||e.status!==200)&&(this.onerror(e&&e.status),this.closeAndRetry(1011,"internal server error",!1))})}close(t,e,a){for(let i of this.reqs)i.abort();this.readyState=va.closed;let r=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:t,reason:e,wasClean:a});typeof CloseEvent<"u"?this.onclose(new CloseEvent("close",r)):this.onclose(r)}ajax(t,e,a,r){let i,d=()=>{this.reqs.delete(i),a()};i=gd.request(t,this.endpointURL(),"application/json",e,this.timeout,d,n=>{this.reqs.delete(i),this.isActive()&&r(n)}),this.reqs.add(i)}},t0=class{constructor(t,e={}){let a=e.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(a.state,r=>{let{onJoin:i,onLeave:d,onSync:n}=this.caller;this.joinRef=this.channel.joinRef(),this.state=t0.syncState(this.state,r,i,d),this.pendingDiffs.forEach(s=>{this.state=t0.syncDiff(this.state,s,i,d)}),this.pendingDiffs=[],n()}),this.channel.on(a.diff,r=>{let{onJoin:i,onLeave:d,onSync:n}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=t0.syncDiff(this.state,r,i,d),n())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return t0.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,e,a,r){let i=this.clone(t),d={},n={};return this.map(i,(s,c)=>{e[s]||(n[s]=c)}),this.map(e,(s,c)=>{let v=i[s];if(v){let I=c.metas.map(V=>V.phx_ref),S=v.metas.map(V=>V.phx_ref),O=c.metas.filter(V=>S.indexOf(V.phx_ref)<0),R=v.metas.filter(V=>I.indexOf(V.phx_ref)<0);O.length>0&&(d[s]=c,d[s].metas=O),R.length>0&&(n[s]=this.clone(v),n[s].metas=R)}else d[s]=c}),this.syncDiff(i,{joins:d,leaves:n},a,r)}static syncDiff(t,e,a,r){let{joins:i,leaves:d}=this.clone(e);return a||(a=function(){}),r||(r=function(){}),this.map(i,(n,s)=>{let c=t[n];if(t[n]=this.clone(s),c){let v=t[n].metas.map(S=>S.phx_ref),I=c.metas.filter(S=>v.indexOf(S.phx_ref)<0);t[n].metas.unshift(...I)}a(n,c,s)}),this.map(d,(n,s)=>{let c=t[n];if(!c)return;let v=s.metas.map(I=>I.phx_ref);c.metas=c.metas.filter(I=>v.indexOf(I.phx_ref)<0),r(n,c,s),c.metas.length===0&&delete t[n]}),t}static list(t,e){return e||(e=function(a,r){return r}),this.map(t,(a,r)=>e(a,r))}static map(t,e){return Object.getOwnPropertyNames(t).map(a=>e(a,t[a]))}static clone(t){return JSON.parse(JSON.stringify(t))}},a0={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let a=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(a))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[a,r,i,d,n]=JSON.parse(t);return e({join_ref:a,ref:r,topic:i,event:d,payload:n})}},binaryEncode(t){let{join_ref:e,ref:a,event:r,topic:i,payload:d}=t,n=this.META_LENGTH+e.length+a.length+i.length+r.length,s=new ArrayBuffer(this.HEADER_LENGTH+n),c=new DataView(s),v=0;c.setUint8(v++,this.KINDS.push),c.setUint8(v++,e.length),c.setUint8(v++,a.length),c.setUint8(v++,i.length),c.setUint8(v++,r.length),Array.from(e,S=>c.setUint8(v++,S.charCodeAt(0))),Array.from(a,S=>c.setUint8(v++,S.charCodeAt(0))),Array.from(i,S=>c.setUint8(v++,S.charCodeAt(0))),Array.from(r,S=>c.setUint8(v++,S.charCodeAt(0)));var I=new Uint8Array(s.byteLength+d.byteLength);return I.set(new Uint8Array(s),0),I.set(new Uint8Array(d),s.byteLength),I.buffer},binaryDecode(t){let e=new DataView(t),a=e.getUint8(0),r=new TextDecoder;switch(a){case this.KINDS.push:return this.decodePush(t,e,r);case this.KINDS.reply:return this.decodeReply(t,e,r);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,r)}},decodePush(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=e.getUint8(3),n=this.HEADER_LENGTH+this.META_LENGTH-1,s=a.decode(t.slice(n,n+r));n=n+r;let c=a.decode(t.slice(n,n+i));n=n+i;let v=a.decode(t.slice(n,n+d));n=n+d;let I=t.slice(n,t.byteLength);return{join_ref:s,ref:null,topic:c,event:v,payload:I}},decodeReply(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=e.getUint8(3),n=e.getUint8(4),s=this.HEADER_LENGTH+this.META_LENGTH,c=a.decode(t.slice(s,s+r));s=s+r;let v=a.decode(t.slice(s,s+i));s=s+i;let I=a.decode(t.slice(s,s+d));s=s+d;let S=a.decode(t.slice(s,s+n));s=s+n;let O=t.slice(s,t.byteLength),R={status:S,response:O};return{join_ref:c,ref:v,topic:I,event:Pa.reply,payload:R}},decodeBroadcast(t,e,a){let r=e.getUint8(1),i=e.getUint8(2),d=this.HEADER_LENGTH+2,n=a.decode(t.slice(d,d+r));d=d+r;let s=a.decode(t.slice(d,d+i));d=d+i;let c=t.slice(d,t.byteLength);return{join_ref:null,ref:null,topic:n,event:s,payload:c}}},fb=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=e.timeout||nb,this.transport=e.transport||i0.WebSocket||bd,this.establishedConnections=0,this.defaultEncoder=a0.encode.bind(a0),this.defaultDecoder=a0.decode.bind(a0),this.closeWasClean=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.transport!==bd?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let a=null;e0&&e0.addEventListener&&(e0.addEventListener("pagehide",r=>{this.conn&&(this.disconnect(),a=this.connectClock)}),e0.addEventListener("pageshow",r=>{a===this.connectClock&&(a=null,this.connect())})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.rejoinAfterMs=r=>e.rejoinAfterMs?e.rejoinAfterMs(r):[1e3,2e3,5e3][r-1]||1e4,this.reconnectAfterMs=r=>e.reconnectAfterMs?e.reconnectAfterMs(r):[10,50,100,150,200,250,500,1e3,2e3][r-1]||5e3,this.logger=e.logger||null,this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=r0(e.params||{}),this.endPoint=`${t}/${Tp.websocket}`,this.vsn=e.vsn||pb,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new s3(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}getLongPollTransport(){return bd}replaceTransport(t){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.sendBuffer=[],this.conn&&(this.conn.close(),this.conn=null),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=gd.appendParams(gd.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,a){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(t,e,a)}connect(t){t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=r0(t)),!this.conn&&(this.connectClock++,this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(t,e,a){this.logger(t,e,a)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}ping(t){if(!this.isConnected())return!1;let e=this.makeRef(),a=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:e});let r=this.onMessage(i=>{i.ref===e&&(this.off([r]),t(Date.now()-a))});return!0}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,t])=>t())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.triggerChanError(),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),sb,"heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,a){if(!this.conn)return t&&t();this.waitForBufferDone(()=>{this.conn&&(e?this.conn.close(e,a||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e=1){if(e===5||!this.conn||!this.conn.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(t,e+1)},150*e)}waitForSocketClosed(t,e=1){if(e===5||!this.conn||this.conn.readyState===va.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(t,e+1)},150*e)}onConnClose(t){let e=t&&t.code;this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(),this.clearHeartbeats(),!this.closeWasClean&&e!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,a])=>a(t))}onConnError(t){this.hasLogger()&&this.log("transport",t);let e=this.transport,a=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,r])=>{r(t,e,a)}),(e===this.transport||a>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(Pa.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case va.connecting:return"connecting";case va.open:return"open";case va.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e.joinRef()!==t.joinRef())}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([a])=>t.indexOf(a)===-1)}channel(t,e={}){let a=new o3(t,e,this);return this.channels.push(a),a}push(t){if(this.hasLogger()){let{topic:e,event:a,payload:r,ref:i,join_ref:d}=t;this.log("push",`${e} ${a} (${d}, ${i})`,r)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:a,event:r,payload:i,ref:d,join_ref:n}=e;d&&d===this.pendingHeartbeatRef&&(this.clearHeartbeats(),this.pendingHeartbeatRef=null,this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${i.status||""} ${a} ${r} ${d&&"("+d+")"||""}`,i);for(let s=0;sa.topic===t&&(a.isJoined()||a.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}}});var nr=T((AT,l3)=>{"use strict";l();l3.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:C.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var d0=T((IT,yd)=>{"use strict";l();var{EMPTY_BUFFER:lb}=nr();function ub(t,e){if(t.length===0)return lb;if(t.length===1)return t[0];let a=C.allocUnsafe(e),r=0;for(let i=0;i{"use strict";l();var h3=Symbol("kDone"),Pp=Symbol("kRun"),Up=class{constructor(e){this[h3]=()=>{this.pending--,this[Pp]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Pp]()}[Pp](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[h3])}}};m3.exports=Up});var s0=T((NT,x3)=>{"use strict";l();var p0=require("zlib"),b3=d0(),hb=v3(),{kStatusCode:g3}=nr(),mb=C.from([0,0,255,255]),Ad=Symbol("permessage-deflate"),Ua=Symbol("total-length"),n0=Symbol("callback"),sr=Symbol("buffers"),wd=Symbol("error"),xd,Vp=class{constructor(e,a,r){if(this._maxPayload=r|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!a,this._deflate=null,this._inflate=null,this.params=null,!xd){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;xd=new hb(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[n0];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let a=this._options,r=e.find(i=>!(a.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(a.serverMaxWindowBits===!1||typeof a.serverMaxWindowBits=="number"&&a.serverMaxWindowBits>i.server_max_window_bits)||typeof a.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return a.serverNoContextTakeover&&(r.server_no_context_takeover=!0),a.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof a.serverMaxWindowBits=="number"&&(r.server_max_window_bits=a.serverMaxWindowBits),typeof a.clientMaxWindowBits=="number"?r.client_max_window_bits=a.clientMaxWindowBits:(r.client_max_window_bits===!0||a.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let a=e[0];if(this._options.clientNoContextTakeover===!1&&a.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!a.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(a.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&a.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return a}normalizeParams(e){return e.forEach(a=>{Object.keys(a).forEach(r=>{let i=a[r];if(i.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(i=i[0],r==="client_max_window_bits"){if(i!==!0){let d=+i;if(!Number.isInteger(d)||d<8||d>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=d}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else if(r==="server_max_window_bits"){let d=+i;if(!Number.isInteger(d)||d<8||d>15)throw new TypeError(`Invalid value for parameter "${r}": ${i}`);i=d}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${i}`)}else throw new Error(`Unknown parameter "${r}"`);a[r]=i})}),e}decompress(e,a,r){xd.add(i=>{this._decompress(e,a,(d,n)=>{i(),r(d,n)})})}compress(e,a,r){xd.add(i=>{this._compress(e,a,(d,n)=>{i(),r(d,n)})})}_decompress(e,a,r){let i=this._isServer?"client":"server";if(!this._inflate){let d=`${i}_max_window_bits`,n=typeof this.params[d]!="number"?p0.Z_DEFAULT_WINDOWBITS:this.params[d];this._inflate=p0.createInflateRaw({...this._options.zlibInflateOptions,windowBits:n}),this._inflate[Ad]=this,this._inflate[Ua]=0,this._inflate[sr]=[],this._inflate.on("error",bb),this._inflate.on("data",y3)}this._inflate[n0]=r,this._inflate.write(e),a&&this._inflate.write(mb),this._inflate.flush(()=>{let d=this._inflate[wd];if(d){this._inflate.close(),this._inflate=null,r(d);return}let n=b3.concat(this._inflate[sr],this._inflate[Ua]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Ua]=0,this._inflate[sr]=[],a&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),r(null,n)})}_compress(e,a,r){let i=this._isServer?"server":"client";if(!this._deflate){let d=`${i}_max_window_bits`,n=typeof this.params[d]!="number"?p0.Z_DEFAULT_WINDOWBITS:this.params[d];this._deflate=p0.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:n}),this._deflate[Ua]=0,this._deflate[sr]=[],this._deflate.on("data",vb)}this._deflate[n0]=r,this._deflate.write(e),this._deflate.flush(p0.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let d=b3.concat(this._deflate[sr],this._deflate[Ua]);a&&(d=d.slice(0,d.length-4)),this._deflate[n0]=null,this._deflate[Ua]=0,this._deflate[sr]=[],a&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),r(null,d)})}};x3.exports=Vp;function vb(t){this[sr].push(t),this[Ua]+=t.length}function y3(t){if(this[Ua]+=t.length,this[Ad]._maxPayload<1||this[Ua]<=this[Ad]._maxPayload){this[sr].push(t);return}this[wd]=new RangeError("Max payload size exceeded"),this[wd].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[wd][g3]=1009,this.removeListener("data",y3),this.reset()}function bb(t){this[Ad]._inflate=null,t[g3]=1007,this[n0](t)}});var o0=T((MT,Rp)=>{"use strict";l();var gb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function yb(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function w3(t){let e=t.length,a=0;for(;a=e||(t[a+1]&192)!==128||(t[a+2]&192)!==128||t[a]===224&&(t[a+1]&224)===128||t[a]===237&&(t[a+1]&224)===160)return!1;a+=3}else if((t[a]&248)===240){if(a+3>=e||(t[a+1]&192)!==128||(t[a+2]&192)!==128||(t[a+3]&192)!==128||t[a]===240&&(t[a+1]&240)===128||t[a]===244&&t[a+1]>143||t[a]>244)return!1;a+=4}else return!1;return!0}Rp.exports={isValidStatusCode:yb,isValidUTF8:w3,tokenChars:gb};if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");Rp.exports.isValidUTF8=function(e){return e.length<150?w3(e):t(e)}}catch{}});var kp=T((BT,N3)=>{"use strict";l();var{Writable:xb}=require("stream"),A3=s0(),{BINARY_TYPES:wb,EMPTY_BUFFER:_3,kStatusCode:Ab,kWebSocket:_b}=nr(),{concat:Fp,toArrayBuffer:Ib,unmask:Sb}=d0(),{isValidStatusCode:Eb,isValidUTF8:I3}=o0(),f0=0,S3=1,E3=2,C3=3,Lp=4,Cb=5,Qp=class extends xb{constructor(e={}){super(),this._binaryType=e.binaryType||wb[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[_b]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=f0,this._loop=!1}_write(e,a,r){if(this._opcode===8&&this._state==f0)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=r.length?a.set(this._buffers.shift(),i):(a.set(new Uint8Array(r.buffer,r.byteOffset,e),i),this._buffers[0]=r.slice(e)),e-=r.length}while(e>0);return a}startLoop(e){let a;this._loop=!0;do switch(this._state){case f0:a=this.getInfo();break;case S3:a=this.getPayloadLength16();break;case E3:a=this.getPayloadLength64();break;case C3:this.getMask();break;case Lp:a=this.getData(e);break;default:this._loop=!1;return}while(this._loop);e(a)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let e=this.consume(2);if((e[0]&48)!==0)return this._loop=!1,z1(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");let a=(e[0]&64)===64;if(a&&!this._extensions[A3.extensionName])return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=(e[0]&128)===128,this._opcode=e[0]&15,this._payloadLength=e[1]&127,this._opcode===0){if(a)return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,z1(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,z1(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=a}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,z1(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(a)return this._loop=!1,z1(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125)return this._loop=!1,z1(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}else return this._loop=!1,z1(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(e[1]&128)===128,this._isServer){if(!this._masked)return this._loop=!1,z1(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,z1(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(this._payloadLength===126)this._state=S3;else if(this._payloadLength===127)this._state=E3;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let e=this.consume(8),a=e.readUInt32BE(0);return a>Math.pow(2,53-32)-1?(this._loop=!1,z1(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=a*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,z1(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=C3:this._state=Lp}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Lp}getData(e){let a=_3;if(this._payloadLength){if(this._bufferedBytes7)return this.controlMessage(a);if(this._compressed){this._state=Cb,this.decompress(a,e);return}return a.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(a)),this.dataMessage()}decompress(e,a){this._extensions[A3.extensionName].decompress(e,this._fin,(i,d)=>{if(i)return a(i);if(d.length){if(this._messageLength+=d.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return a(z1(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(d)}let n=this.dataMessage();if(n)return a(n);this.startLoop(a)})}dataMessage(){if(this._fin){let e=this._messageLength,a=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;this._binaryType==="nodebuffer"?r=Fp(a,e):this._binaryType==="arraybuffer"?r=Ib(Fp(a,e)):r=a,this.emit("message",r,!0)}else{let r=Fp(a,e);if(!this._skipUTF8Validation&&!I3(r))return this._loop=!1,z1(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",r,!1)}}this._state=f0}controlMessage(e){if(this._opcode===8)if(this._loop=!1,e.length===0)this.emit("conclude",1005,_3),this.end();else{if(e.length===1)return z1(RangeError,"invalid payload length 1",!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");{let a=e.readUInt16BE(0);if(!Eb(a))return z1(RangeError,`invalid status code ${a}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");let r=e.slice(2);if(!this._skipUTF8Validation&&!I3(r))return z1(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",a,r),this.end()}}else this._opcode===9?this.emit("ping",e):this.emit("pong",e);this._state=f0}};N3.exports=Qp;function z1(t,e,a,r,i){let d=new t(a?`Invalid WebSocket frame: ${e}`:e);return Error.captureStackTrace(d,z1),d.code=i,d[Ab]=r,d}});var jp=T((UT,T3)=>{"use strict";l();var OT=require("net"),PT=require("tls"),{randomFillSync:Nb}=require("crypto"),D3=s0(),{EMPTY_BUFFER:Db}=nr(),{isValidStatusCode:Mb}=o0(),{mask:M3,toBuffer:ci}=d0(),Gt=Symbol("kByteLength"),Tb=C.alloc(4),ba=class{constructor(e,a,r){this._extensions=a||{},r&&(this._generateMask=r,this._maskBuffer=C.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,a){let r,i=!1,d=2,n=!1;a.mask&&(r=a.maskBuffer||Tb,a.generateMask?a.generateMask(r):Nb(r,0,4),n=(r[0]|r[1]|r[2]|r[3])===0,d=6);let s;typeof e=="string"?(!a.mask||n)&&a[Gt]!==void 0?s=a[Gt]:(e=C.from(e),s=e.length):(s=e.length,i=a.mask&&a.readOnly&&!n);let c=s;s>=65536?(d+=8,c=127):s>125&&(d+=2,c=126);let v=C.allocUnsafe(i?s+d:d);return v[0]=a.fin?a.opcode|128:a.opcode,a.rsv1&&(v[0]|=64),v[1]=c,c===126?v.writeUInt16BE(s,2):c===127&&(v[2]=v[3]=0,v.writeUIntBE(s,4,6)),a.mask?(v[1]|=128,v[d-4]=r[0],v[d-3]=r[1],v[d-2]=r[2],v[d-1]=r[3],n?[v,e]:i?(M3(e,r,v,d,s),[v]):(M3(e,r,e,0,s),[v,e])):[v,e]}close(e,a,r,i){let d;if(e===void 0)d=Db;else{if(typeof e!="number"||!Mb(e))throw new TypeError("First argument must be a valid error code number");if(a===void 0||!a.length)d=C.allocUnsafe(2),d.writeUInt16BE(e,0);else{let s=C.byteLength(a);if(s>123)throw new RangeError("The message must not be greater than 123 bytes");d=C.allocUnsafe(2+s),d.writeUInt16BE(e,0),typeof a=="string"?d.write(a,2):d.set(a,2)}}let n={[Gt]:d.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,d,!1,n,i]):this.sendFrame(ba.frame(d,n),i)}ping(e,a,r){let i,d;if(typeof e=="string"?(i=C.byteLength(e),d=!1):(e=ci(e),i=e.length,d=ci.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[Gt]:i,fin:!0,generateMask:this._generateMask,mask:a,maskBuffer:this._maskBuffer,opcode:9,readOnly:d,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(ba.frame(e,n),r)}pong(e,a,r){let i,d;if(typeof e=="string"?(i=C.byteLength(e),d=!1):(e=ci(e),i=e.length,d=ci.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let n={[Gt]:i,fin:!0,generateMask:this._generateMask,mask:a,maskBuffer:this._maskBuffer,opcode:10,readOnly:d,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,n,r]):this.sendFrame(ba.frame(e,n),r)}send(e,a,r){let i=this._extensions[D3.extensionName],d=a.binary?2:1,n=a.compress,s,c;if(typeof e=="string"?(s=C.byteLength(e),c=!1):(e=ci(e),s=e.length,c=ci.readOnly),this._firstFragment?(this._firstFragment=!1,n&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(n=s>=i._threshold),this._compress=n):(n=!1,d=0),a.fin&&(this._firstFragment=!0),i){let v={[Gt]:s,fin:a.fin,generateMask:this._generateMask,mask:a.mask,maskBuffer:this._maskBuffer,opcode:d,readOnly:c,rsv1:n};this._deflating?this.enqueue([this.dispatch,e,this._compress,v,r]):this.dispatch(e,this._compress,v,r)}else this.sendFrame(ba.frame(e,{[Gt]:s,fin:a.fin,generateMask:this._generateMask,mask:a.mask,maskBuffer:this._maskBuffer,opcode:d,readOnly:c,rsv1:!1}),r)}dispatch(e,a,r,i){if(!a){this.sendFrame(ba.frame(e,r),i);return}let d=this._extensions[D3.extensionName];this._bufferedBytes+=r[Gt],this._deflating=!0,d.compress(e,r.fin,(n,s)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(c);for(let v=0;v{"use strict";l();var{kForOnEventAttribute:l0,kListener:Hp}=nr(),B3=Symbol("kCode"),q3=Symbol("kData"),O3=Symbol("kError"),P3=Symbol("kMessage"),U3=Symbol("kReason"),hi=Symbol("kTarget"),V3=Symbol("kType"),R3=Symbol("kWasClean"),Va=class{constructor(e){this[hi]=null,this[V3]=e}get target(){return this[hi]}get type(){return this[V3]}};Object.defineProperty(Va.prototype,"target",{enumerable:!0});Object.defineProperty(Va.prototype,"type",{enumerable:!0});var Vr=class extends Va{constructor(e,a={}){super(e),this[B3]=a.code===void 0?0:a.code,this[U3]=a.reason===void 0?"":a.reason,this[R3]=a.wasClean===void 0?!1:a.wasClean}get code(){return this[B3]}get reason(){return this[U3]}get wasClean(){return this[R3]}};Object.defineProperty(Vr.prototype,"code",{enumerable:!0});Object.defineProperty(Vr.prototype,"reason",{enumerable:!0});Object.defineProperty(Vr.prototype,"wasClean",{enumerable:!0});var mi=class extends Va{constructor(e,a={}){super(e),this[O3]=a.error===void 0?null:a.error,this[P3]=a.message===void 0?"":a.message}get error(){return this[O3]}get message(){return this[P3]}};Object.defineProperty(mi.prototype,"error",{enumerable:!0});Object.defineProperty(mi.prototype,"message",{enumerable:!0});var u0=class extends Va{constructor(e,a={}){super(e),this[q3]=a.data===void 0?null:a.data}get data(){return this[q3]}};Object.defineProperty(u0.prototype,"data",{enumerable:!0});var Bb={addEventListener(t,e,a={}){for(let i of this.listeners(t))if(!a[l0]&&i[Hp]===e&&!i[l0])return;let r;if(t==="message")r=function(d,n){let s=new u0("message",{data:n?d:d.toString()});s[hi]=this,_d(e,this,s)};else if(t==="close")r=function(d,n){let s=new Vr("close",{code:d,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});s[hi]=this,_d(e,this,s)};else if(t==="error")r=function(d){let n=new mi("error",{error:d,message:d.message});n[hi]=this,_d(e,this,n)};else if(t==="open")r=function(){let d=new Va("open");d[hi]=this,_d(e,this,d)};else return;r[l0]=!!a[l0],r[Hp]=e,a.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let a of this.listeners(t))if(a[Hp]===e&&!a[l0]){this.removeListener(t,a);break}}};F3.exports={CloseEvent:Vr,ErrorEvent:mi,Event:Va,EventTarget:Bb,MessageEvent:u0};function _d(t,e,a){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,a):t.call(e,a)}});var Kp=T((LT,Q3)=>{"use strict";l();var{tokenChars:c0}=o0();function ga(t,e,a){t[e]===void 0?t[e]=[a]:t[e].push(a)}function qb(t){let e=Object.create(null),a=Object.create(null),r=!1,i=!1,d=!1,n,s,c=-1,v=-1,I=-1,S=0;for(;S{let a=t[e];return Array.isArray(a)||(a=[a]),a.map(r=>[e].concat(Object.keys(r).map(i=>{let d=r[i];return Array.isArray(d)||(d=[d]),d.map(n=>n===!0?i:`${i}=${n}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Q3.exports={format:Ob,parse:qb}});var Wp=T((jT,X3)=>{"use strict";l();var Pb=require("events"),Ub=require("https"),Vb=require("http"),H3=require("net"),Rb=require("tls"),{randomBytes:Fb,createHash:Lb}=require("crypto"),{Readable:kT}=require("stream"),{URL:zp}=require("url"),or=s0(),Qb=kp(),kb=jp(),{BINARY_TYPES:k3,EMPTY_BUFFER:Id,GUID:jb,kForOnEventAttribute:$p,kListener:Hb,kStatusCode:Kb,kWebSocket:st,NOOP:K3}=nr(),{EventTarget:{addEventListener:zb,removeEventListener:$b}}=L3(),{format:Gb,parse:Yb}=Kp(),{toBuffer:Wb}=d0(),Jb=30*1e3,z3=Symbol("kAborted"),Gp=[8,13],Ra=["CONNECTING","OPEN","CLOSING","CLOSED"],Xb=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,Ve=class extends Pb{constructor(e,a,r){super(),this._binaryType=k3[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Id,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=Ve.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,a===void 0?a=[]:Array.isArray(a)||(typeof a=="object"&&a!==null?(r=a,a=[]):a=[a]),$3(this,e,a,r)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){!k3.includes(e)||(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,a,r){let i=new Qb({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation});this._sender=new kb(e,this._extensions,r.generateMask),this._receiver=i,this._socket=e,i[st]=this,e[st]=this,i.on("conclude",tg),i.on("drain",ag),i.on("error",rg),i.on("message",ig),i.on("ping",dg),i.on("pong",pg),e.setTimeout(0),e.setNoDelay(),a.length>0&&e.unshift(a),e.on("close",Y3),e.on("data",Ed),e.on("end",W3),e.on("error",J3),this._readyState=Ve.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=Ve.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[or.extensionName]&&this._extensions[or.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Ve.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,a){if(this.readyState!==Ve.CLOSED){if(this.readyState===Ve.CONNECTING){let r="WebSocket was closed before the connection was established";return Ct(this,this._req,r)}if(this.readyState===Ve.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=Ve.CLOSING,this._sender.close(e,a,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),Jb)}}pause(){this.readyState===Ve.CONNECTING||this.readyState===Ve.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,a,r){if(this.readyState===Ve.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=a=void 0):typeof a=="function"&&(r=a,a=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Ve.OPEN){Yp(this,e,r);return}a===void 0&&(a=!this._isServer),this._sender.ping(e||Id,a,r)}pong(e,a,r){if(this.readyState===Ve.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=a=void 0):typeof a=="function"&&(r=a,a=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Ve.OPEN){Yp(this,e,r);return}a===void 0&&(a=!this._isServer),this._sender.pong(e||Id,a,r)}resume(){this.readyState===Ve.CONNECTING||this.readyState===Ve.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,a,r){if(this.readyState===Ve.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof a=="function"&&(r=a,a={}),typeof e=="number"&&(e=e.toString()),this.readyState!==Ve.OPEN){Yp(this,e,r);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...a};this._extensions[or.extensionName]||(i.compress=!1),this._sender.send(e||Id,i,r)}terminate(){if(this.readyState!==Ve.CLOSED){if(this.readyState===Ve.CONNECTING){let e="WebSocket was closed before the connection was established";return Ct(this,this._req,e)}this._socket&&(this._readyState=Ve.CLOSING,this._socket.destroy())}}};Object.defineProperty(Ve,"CONNECTING",{enumerable:!0,value:Ra.indexOf("CONNECTING")});Object.defineProperty(Ve.prototype,"CONNECTING",{enumerable:!0,value:Ra.indexOf("CONNECTING")});Object.defineProperty(Ve,"OPEN",{enumerable:!0,value:Ra.indexOf("OPEN")});Object.defineProperty(Ve.prototype,"OPEN",{enumerable:!0,value:Ra.indexOf("OPEN")});Object.defineProperty(Ve,"CLOSING",{enumerable:!0,value:Ra.indexOf("CLOSING")});Object.defineProperty(Ve.prototype,"CLOSING",{enumerable:!0,value:Ra.indexOf("CLOSING")});Object.defineProperty(Ve,"CLOSED",{enumerable:!0,value:Ra.indexOf("CLOSED")});Object.defineProperty(Ve.prototype,"CLOSED",{enumerable:!0,value:Ra.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Ve.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Ve.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[$p])return e[Hb];return null},set(e){for(let a of this.listeners(t))if(a[$p]){this.removeListener(t,a);break}typeof e=="function"&&this.addEventListener(t,e,{[$p]:!0})}})});Ve.prototype.addEventListener=zb;Ve.prototype.removeEventListener=$b;X3.exports=Ve;function $3(t,e,a,r){let i={protocolVersion:Gp[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(!Gp.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Gp.join(", ")})`);let d;if(e instanceof zp)d=e,t._url=e.href;else{try{d=new zp(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}t._url=e}let n=d.protocol==="wss:",s=d.protocol==="ws+unix:",c;if(d.protocol!=="ws:"&&!n&&!s?c=`The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`:s&&!d.pathname?c="The URL's pathname is empty":d.hash&&(c="The URL contains a fragment identifier"),c){let L=new SyntaxError(c);if(t._redirects===0)throw L;Sd(t,L);return}let v=n?443:80,I=Fb(16).toString("base64"),S=n?Ub.request:Vb.request,O=new Set,R;if(i.createConnection=n?eg:Zb,i.defaultPort=i.defaultPort||v,i.port=d.port||v,i.host=d.hostname.startsWith("[")?d.hostname.slice(1,-1):d.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":I,Connection:"Upgrade",Upgrade:"websocket"},i.path=d.pathname+d.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(R=new or(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Gb({[or.extensionName]:R.offer()})),a.length){for(let L of a){if(typeof L!="string"||!Xb.test(L)||O.has(L))throw new SyntaxError("An invalid or duplicated subprotocol was specified");O.add(L)}i.headers["Sec-WebSocket-Protocol"]=a.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(d.username||d.password)&&(i.auth=`${d.username}:${d.password}`),s){let L=i.path.split(":");i.socketPath=L[0],i.path=L[1]}let V;if(i.followRedirects){if(t._redirects===0){t._originalIpc=s,t._originalSecure=n,t._originalHostOrSocketPath=s?i.socketPath:d.host;let L=r&&r.headers;if(r={...r,headers:{}},L)for(let[G,J]of Object.entries(L))r.headers[G.toLowerCase()]=J}else if(t.listenerCount("redirect")===0){let L=s?t._originalIpc?i.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:d.host===t._originalHostOrSocketPath;(!L||t._originalSecure&&!n)&&(delete i.headers.authorization,delete i.headers.cookie,L||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+C.from(i.auth).toString("base64")),V=t._req=S(i),t._redirects&&t.emit("redirect",t.url,V)}else V=t._req=S(i);i.timeout&&V.on("timeout",()=>{Ct(t,V,"Opening handshake has timed out")}),V.on("error",L=>{V===null||V[z3]||(V=t._req=null,Sd(t,L))}),V.on("response",L=>{let G=L.headers.location,J=L.statusCode;if(G&&i.followRedirects&&J>=300&&J<400){if(++t._redirects>i.maxRedirects){Ct(t,V,"Maximum redirects exceeded");return}V.abort();let fe;try{fe=new zp(G,e)}catch{let ye=new SyntaxError(`Invalid URL: ${G}`);Sd(t,ye);return}$3(t,fe,a,r)}else t.emit("unexpected-response",V,L)||Ct(t,V,`Unexpected server response: ${L.statusCode}`)}),V.on("upgrade",(L,G,J)=>{if(t.emit("upgrade",L),t.readyState!==Ve.CONNECTING)return;if(V=t._req=null,L.headers.upgrade.toLowerCase()!=="websocket"){Ct(t,G,"Invalid Upgrade header");return}let fe=Lb("sha1").update(I+jb).digest("base64");if(L.headers["sec-websocket-accept"]!==fe){Ct(t,G,"Invalid Sec-WebSocket-Accept header");return}let oe=L.headers["sec-websocket-protocol"],ye;if(oe!==void 0?O.size?O.has(oe)||(ye="Server sent an invalid subprotocol"):ye="Server sent a subprotocol but none was requested":O.size&&(ye="Server sent no subprotocol"),ye){Ct(t,G,ye);return}oe&&(t._protocol=oe);let Ie=L.headers["sec-websocket-extensions"];if(Ie!==void 0){if(!R){Ct(t,G,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let we;try{we=Yb(Ie)}catch{Ct(t,G,"Invalid Sec-WebSocket-Extensions header");return}let Ne=Object.keys(we);if(Ne.length!==1||Ne[0]!==or.extensionName){Ct(t,G,"Server indicated an extension that was not requested");return}try{R.accept(we[or.extensionName])}catch{Ct(t,G,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[or.extensionName]=R}t.setSocket(G,J,{generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),V.end()}function Sd(t,e){t._readyState=Ve.CLOSING,t.emit("error",e),t.emitClose()}function Zb(t){return t.path=t.socketPath,H3.connect(t)}function eg(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=H3.isIP(t.host)?"":t.host),Rb.connect(t)}function Ct(t,e,a){t._readyState=Ve.CLOSING;let r=new Error(a);Error.captureStackTrace(r,Ct),e.setHeader?(e[z3]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Sd,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Yp(t,e,a){if(e){let r=Wb(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(a){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${Ra[t.readyState]})`);a(r)}}function tg(t,e){let a=this[st];a._closeFrameReceived=!0,a._closeMessage=e,a._closeCode=t,a._socket[st]!==void 0&&(a._socket.removeListener("data",Ed),process.nextTick(G3,a._socket),t===1005?a.close():a.close(t,e))}function ag(){let t=this[st];t.isPaused||t._socket.resume()}function rg(t){let e=this[st];e._socket[st]!==void 0&&(e._socket.removeListener("data",Ed),process.nextTick(G3,e._socket),e.close(t[Kb])),e.emit("error",t)}function j3(){this[st].emitClose()}function ig(t,e){this[st].emit("message",t,e)}function dg(t){let e=this[st];e.pong(t,!e._isServer,K3),e.emit("ping",t)}function pg(t){this[st].emit("pong",t)}function G3(t){t.resume()}function Y3(){let t=this[st];this.removeListener("close",Y3),this.removeListener("data",Ed),this.removeListener("end",W3),t._readyState=Ve.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[st]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",j3),t._receiver.on("finish",j3))}function Ed(t){this[st]._receiver.write(t)||this.pause()}function W3(){let t=this[st];t._readyState=Ve.CLOSING,t._receiver.end(),this.end()}function J3(){let t=this[st];this.removeListener("error",J3),this.on("error",K3),t&&(t._readyState=Ve.CLOSING,this.destroy())}});var ao=T((KT,to)=>{"use strict";l();var{Duplex:ng}=require("stream");function Z3(t){t.emit("close")}function sg(){!this.destroyed&&this._writableState.finished&&this.destroy()}function eo(t){this.removeListener("error",eo),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function og(t,e){let a=!0,r=new ng({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(d,n){let s=!n&&r._readableState.objectMode?d.toString():d;r.push(s)||t.pause()}),t.once("error",function(d){r.destroyed||(a=!1,r.destroy(d))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(i,d){if(t.readyState===t.CLOSED){d(i),process.nextTick(Z3,r);return}let n=!1;t.once("error",function(c){n=!0,d(c)}),t.once("close",function(){n||d(i),process.nextTick(Z3,r)}),a&&t.terminate()},r._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(i,d,n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(i,d,n)});return}t.send(i,n)},r.on("end",sg),r.on("error",eo),r}to.exports=og});var io=T(($T,ro)=>{"use strict";l();var{tokenChars:fg}=o0();function lg(t){let e=new Set,a=-1,r=-1,i=0;for(i;i{"use strict";l();var ug=require("events"),Cd=require("http"),YT=require("https"),WT=require("net"),JT=require("tls"),{createHash:cg}=require("crypto"),po=Kp(),Rr=s0(),hg=io(),mg=Wp(),{GUID:vg,kWebSocket:bg}=nr(),gg=/^[+/0-9A-Za-z]{22}==$/,no=0,so=1,fo=2,Jp=class extends ug{constructor(e,a){if(super(),e={maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:mg,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=Cd.createServer((r,i)=>{let d=Cd.STATUS_CODES[426];i.writeHead(426,{"Content-Length":d.length,"Content-Type":"text/plain"}),i.end(d)}),this._server.listen(e.port,e.host,e.backlog,a)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=yg(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,d,n)=>{this.handleUpgrade(i,d,n,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=no}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===fo){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(h0,this);return}if(e&&this.once("close",e),this._state!==so)if(this._state=so,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(h0,this):process.nextTick(h0,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{h0(this)})}}shouldHandle(e){if(this.options.path){let a=e.url.indexOf("?");if((a!==-1?e.url.slice(0,a):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,a,r,i){a.on("error",oo);let d=e.headers["sec-websocket-key"],n=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Fr(this,e,a,405,"Invalid HTTP method");return}if(e.headers.upgrade.toLowerCase()!=="websocket"){Fr(this,e,a,400,"Invalid Upgrade header");return}if(!d||!gg.test(d)){Fr(this,e,a,400,"Missing or invalid Sec-WebSocket-Key header");return}if(n!==8&&n!==13){Fr(this,e,a,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(e)){m0(a,400);return}let s=e.headers["sec-websocket-protocol"],c=new Set;if(s!==void 0)try{c=hg.parse(s)}catch{Fr(this,e,a,400,"Invalid Sec-WebSocket-Protocol header");return}let v=e.headers["sec-websocket-extensions"],I={};if(this.options.perMessageDeflate&&v!==void 0){let S=new Rr(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let O=po.parse(v);O[Rr.extensionName]&&(S.accept(O[Rr.extensionName]),I[Rr.extensionName]=S)}catch{Fr(this,e,a,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let S={origin:e.headers[`${n===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(S,(O,R,V,L)=>{if(!O)return m0(a,R||401,V,L);this.completeUpgrade(I,d,c,e,a,r,i)});return}if(!this.options.verifyClient(S))return m0(a,401)}this.completeUpgrade(I,d,c,e,a,r,i)}completeUpgrade(e,a,r,i,d,n,s){if(!d.readable||!d.writable)return d.destroy();if(d[bg])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>no)return m0(d,503);let v=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${cg("sha1").update(a+vg).digest("base64")}`],I=new this.options.WebSocket(null);if(r.size){let S=this.options.handleProtocols?this.options.handleProtocols(r,i):r.values().next().value;S&&(v.push(`Sec-WebSocket-Protocol: ${S}`),I._protocol=S)}if(e[Rr.extensionName]){let S=e[Rr.extensionName].params,O=po.format({[Rr.extensionName]:[S]});v.push(`Sec-WebSocket-Extensions: ${O}`),I._extensions=e}this.emit("headers",v,i),d.write(v.concat(`\r `).join(`\r -`)),d.removeListener("error",$p),I.setSocket(d,n,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(I),I.on("close",()=>{this.clients.delete(I),this._shouldEmitClose&&!this.clients.size&&process.nextTick(c0,this)})),f(I,i)}};of.exports=zp;function sg(t,e){for(let a of Object.keys(e))t.on(a,e[a]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function c0(t){t._state=ff,t.emit("close")}function $p(){this.destroy()}function mi(t,e,a,r){t.writable&&(a=a||wd.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":N.byteLength(a),...r},t.write(`HTTP/1.1 ${e} ${wd.STATUS_CODES[e]}\r +`)),d.removeListener("error",oo),I.setSocket(d,n,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(I),I.on("close",()=>{this.clients.delete(I),this._shouldEmitClose&&!this.clients.size&&process.nextTick(h0,this)})),s(I,i)}};lo.exports=Jp;function yg(t,e){for(let a of Object.keys(e))t.on(a,e[a]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function h0(t){t._state=fo,t.emit("close")}function oo(){this.destroy()}function m0(t,e,a,r){a=a||Cd.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":C.byteLength(a),...r},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${Cd.STATUS_CODES[e]}\r `+Object.keys(r).map(i=>`${i}: ${r[i]}`).join(`\r `)+`\r \r -`+a)),t.removeListener("error",$p),t.destroy()}});var cf=T((mT,uf)=>{"use strict";l();var Ra=Kp();Ra.createWebSocketStream=af();Ra.Server=lf();Ra.Receiver=Vp();Ra.Sender=Up();Ra.WebSocket=Ra;Ra.WebSocketServer=Ra.Server;uf.exports=Ra});var mf=T((bT,hf)=>{"use strict";l();hf.exports=cf()});var fr=T((yT,vf)=>{l();var fg=vf.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=fg)});var _d=T((AT,bf)=>{l();var og=bf.exports={version:"2.6.0"};typeof __e=="number"&&(__e=og)});var Fr=T((_T,gf)=>{l();gf.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var vi=T((ST,yf)=>{l();var lg=Fr();yf.exports=function(t){if(!lg(t))throw TypeError(t+" is not an object!");return t}});var h0=T((CT,xf)=>{l();xf.exports=function(t){try{return!!t()}catch{return!0}}});var bi=T((DT,Af)=>{l();Af.exports=!h0()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Yp=T((TT,_f)=>{l();var wf=Fr(),Gp=fr().document,ug=wf(Gp)&&wf(Gp.createElement);_f.exports=function(t){return ug?Gp.createElement(t):{}}});var Sf=T((qT,If)=>{l();If.exports=!bi()&&!h0()(function(){return Object.defineProperty(Yp()("div"),"a",{get:function(){return 7}}).a!=7})});var Cf=T((PT,Ef)=>{l();var Id=Fr();Ef.exports=function(t,e){if(!Id(t))return t;var a,r;if(e&&typeof(a=t.toString)=="function"&&!Id(r=a.call(t))||typeof(a=t.valueOf)=="function"&&!Id(r=a.call(t))||!e&&typeof(a=t.toString)=="function"&&!Id(r=a.call(t)))return r;throw TypeError("Can't convert object to primitive value")}});var m0=T(Df=>{l();var Nf=vi(),cg=Sf(),hg=Cf(),mg=Object.defineProperty;Df.f=bi()?Object.defineProperty:function(e,a,r){if(Nf(e),a=hg(a,!0),Nf(r),cg)try{return mg(e,a,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[a]=r.value),e}});var Wp=T((FT,Mf)=>{l();Mf.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var or=T((QT,Tf)=>{l();var vg=m0(),bg=Wp();Tf.exports=bi()?function(t,e,a){return vg.f(t,e,bg(1,a))}:function(t,e,a){return t[e]=a,t}});var v0=T((jT,Bf)=>{l();var gg={}.hasOwnProperty;Bf.exports=function(t,e){return gg.call(t,e)}});var Sd=T((KT,qf)=>{l();var yg=0,xg=Math.random();qf.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++yg+xg).toString(36))}});var b0=T(($T,Pf)=>{l();var Ag=fr(),Ed=or(),Of=v0(),Jp=Sd()("src"),Xp="toString",Zp=Function[Xp],wg=(""+Zp).split(Xp);_d().inspectSource=function(t){return Zp.call(t)};(Pf.exports=function(t,e,a,r){var i=typeof a=="function";i&&(Of(a,"name")||Ed(a,"name",e)),t[e]!==a&&(i&&(Of(a,Jp)||Ed(a,Jp,t[e]?""+t[e]:wg.join(String(e)))),t===Ag?t[e]=a:r?t[e]?t[e]=a:Ed(t,e,a):(delete t[e],Ed(t,e,a)))})(Function.prototype,Xp,function(){return typeof this=="function"&&this[Jp]||Zp.call(this)})});var en=T((YT,Vf)=>{l();Vf.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var tn=T((JT,Uf)=>{l();var _g=en();Uf.exports=function(t,e,a){if(_g(t),e===void 0)return t;switch(a){case 1:return function(r){return t.call(e,r)};case 2:return function(r,i){return t.call(e,r,i)};case 3:return function(r,i,d){return t.call(e,r,i,d)}}return function(){return t.apply(e,arguments)}}});var Bt=T((ZT,Ff)=>{l();var gi=fr(),Cd=_d(),Ig=or(),Sg=b0(),Rf=tn(),an="prototype",ut=function(t,e,a){var r=t&ut.F,i=t&ut.G,d=t&ut.S,n=t&ut.P,f=t&ut.B,h=i?gi:d?gi[e]||(gi[e]={}):(gi[e]||{})[an],v=i?Cd:Cd[e]||(Cd[e]={}),I=v[an]||(v[an]={}),S,O,R,V;i&&(a=e);for(S in a)O=!r&&h&&h[S]!==void 0,R=(O?h:a)[S],V=f&&O?Rf(R,gi):n&&typeof R=="function"?Rf(Function.call,R):R,h&&Sg(h,S,R,t&ut.U),v[S]!=R&&Ig(v,S,V),n&&I[S]!=R&&(I[S]=R)};gi.core=Cd;ut.F=1;ut.G=2;ut.S=4;ut.P=8;ut.B=16;ut.W=32;ut.U=64;ut.R=128;Ff.exports=ut});var g0=T((tB,Lf)=>{l();var Eg={}.toString;Lf.exports=function(t){return Eg.call(t).slice(8,-1)}});var rn=T((rB,Qf)=>{l();var Cg=g0();Qf.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return Cg(t)=="String"?t.split(""):Object(t)}});var yi=T((dB,kf)=>{l();kf.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var dn=T((nB,jf)=>{l();var Ng=yi();jf.exports=function(t){return Object(Ng(t))}});var Nd=T((fB,Hf)=>{l();var Dg=Math.ceil,Mg=Math.floor;Hf.exports=function(t){return isNaN(t=+t)?0:(t>0?Mg:Dg)(t)}});var Dd=T((lB,Kf)=>{l();var Tg=Nd(),Bg=Math.min;Kf.exports=function(t){return t>0?Bg(Tg(t),9007199254740991):0}});var $f=T((cB,zf)=>{l();var qg=g0();zf.exports=Array.isArray||function(e){return qg(e)=="Array"}});var pn=T((mB,Gf)=>{l();Gf.exports=!1});var nn=T((bB,Xf)=>{l();var Og=_d(),Yf=fr(),Wf="__core-js_shared__",Jf=Yf[Wf]||(Yf[Wf]={});(Xf.exports=function(t,e){return Jf[t]||(Jf[t]=e!==void 0?e:{})})("versions",[]).push({version:Og.version,mode:pn()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var Gt=T((yB,eo)=>{l();var sn=nn()("wks"),Pg=Sd(),fn=fr().Symbol,Zf=typeof fn=="function",Vg=eo.exports=function(t){return sn[t]||(sn[t]=Zf&&fn[t]||(Zf?fn:Pg)("Symbol."+t))};Vg.store=sn});var ro=T((AB,ao)=>{l();var Ug=Fr(),to=$f(),Rg=Gt()("species");ao.exports=function(t){var e;return to(t)&&(e=t.constructor,typeof e=="function"&&(e===Array||to(e.prototype))&&(e=void 0),Ug(e)&&(e=e[Rg],e===null&&(e=void 0))),e===void 0?Array:e}});var po=T((_B,io)=>{l();var Fg=ro();io.exports=function(t,e){return new(Fg(t))(e)}});var xi=T((SB,no)=>{l();var Lg=tn(),Qg=rn(),kg=dn(),jg=Dd(),Hg=po();no.exports=function(t,e){var a=t==1,r=t==2,i=t==3,d=t==4,n=t==6,f=t==5||n,h=e||Hg;return function(v,I,S){for(var O=kg(v),R=Qg(O),V=Lg(I,S,3),L=jg(R.length),$=0,X=a?h(v,L):r?h(v,0):void 0,ie,oe;L>$;$++)if((f||$ in R)&&(ie=R[$],oe=V(ie,$,O),t)){if(a)X[$]=oe;else if(oe)switch(t){case 3:return!0;case 5:return ie;case 6:return $;case 2:X.push(ie)}else if(d)return!1}return n?-1:i||d?d:X}}});var y0=T((CB,so)=>{l();var on=Gt()("unscopables"),ln=Array.prototype;ln[on]==null&&or()(ln,on,{});so.exports=function(t){ln[on][t]=!0}});var oo=T(()=>{"use strict";l();var un=Bt(),Kg=xi()(6),cn="findIndex",fo=!0;cn in[]&&Array(1)[cn](function(){fo=!1});un(un.P+un.F*fo,"Array",{findIndex:function(e){return Kg(this,e,arguments.length>1?arguments[1]:void 0)}});y0()(cn)});var uo=T(()=>{"use strict";l();var hn=Bt(),zg=xi()(5),mn="find",lo=!0;mn in[]&&Array(1)[mn](function(){lo=!1});hn(hn.P+hn.F*lo,"Array",{find:function(e){return zg(this,e,arguments.length>1?arguments[1]:void 0)}});y0()(mn)});var mo=T(()=>{l();var $g=m0().f,co=Function.prototype,Gg=/^\s*function ([^ (]*)/,ho="name";ho in co||bi()&&$g(co,ho,{configurable:!0,get:function(){try{return(""+this).match(Gg)[1]}catch{return""}}})});var bn=T(vn=>{"use strict";l();vn.__esModule=!0;vn.default=function(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}});var bo=T(lr=>{"use strict";l();Object.defineProperty(lr,"__esModule",{value:!0});lr.flip=Yg;lr.constant=Wg;lr.on=Jg;lr.compose=Xg;lr.pipe=Zg;lr.curry=ey;function Yg(t){return function(e,a){return t(a,e)}}function Wg(t){return function(){return t}}function Jg(t,e){return function(a,r){return t(e(a),e(r))}}function Xg(){for(var t=this,e=arguments.length,a=Array(e),r=0;r-1;f--)n=a[f].call(t,n);return n}}function Zg(){for(var t=this,e=arguments.length,a=Array(e),r=0;r=e?t.apply(this,r):vo(t,e,r)}}function ey(t){return vo(t,t.length,[])}});var Md=T((kB,go)=>{l();var ty=Math.ceil,ay=Math.floor;go.exports=function(t){return isNaN(t=+t)?0:(t>0?ay:ty)(t)}});var Td=T((HB,yo)=>{l();yo.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var Ao=T((zB,xo)=>{l();var ry=Md(),iy=Td();xo.exports=function(t){return function(e,a){var r=String(iy(e)),i=ry(a),d=r.length,n,f;return i<0||i>=d?t?"":void 0:(n=r.charCodeAt(i),n<55296||n>56319||i+1===d||(f=r.charCodeAt(i+1))<56320||f>57343?t?r.charAt(i):n:t?r.slice(i,i+2):(n-55296<<10)+(f-56320)+65536)}}});var x0=T((GB,wo)=>{l();wo.exports=!0});var Fa=T((WB,_o)=>{l();var dy=_o.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=dy)});var ct=T((XB,Io)=>{l();var py=Io.exports={version:"2.6.0"};typeof __e=="number"&&(__e=py)});var Eo=T((eq,So)=>{l();So.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var gn=T((aq,Co)=>{l();var ny=Eo();Co.exports=function(t,e,a){if(ny(t),e===void 0)return t;switch(a){case 1:return function(r){return t.call(e,r)};case 2:return function(r,i){return t.call(e,r,i)};case 3:return function(r,i,d){return t.call(e,r,i,d)}}return function(){return t.apply(e,arguments)}}});var Lr=T((iq,No)=>{l();No.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var Qr=T((pq,Do)=>{l();var sy=Lr();Do.exports=function(t){if(!sy(t))throw TypeError(t+" is not an object!");return t}});var kr=T((sq,Mo)=>{l();Mo.exports=function(t){try{return!!t()}catch{return!0}}});var ur=T((oq,To)=>{l();To.exports=!kr()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var xn=T((uq,qo)=>{l();var Bo=Lr(),yn=Fa().document,fy=Bo(yn)&&Bo(yn.createElement);qo.exports=function(t){return fy?yn.createElement(t):{}}});var An=T((hq,Oo)=>{l();Oo.exports=!ur()&&!kr()(function(){return Object.defineProperty(xn()("div"),"a",{get:function(){return 7}}).a!=7})});var qd=T((vq,Po)=>{l();var Bd=Lr();Po.exports=function(t,e){if(!Bd(t))return t;var a,r;if(e&&typeof(a=t.toString)=="function"&&!Bd(r=a.call(t))||typeof(a=t.valueOf)=="function"&&!Bd(r=a.call(t))||!e&&typeof(a=t.toString)=="function"&&!Bd(r=a.call(t)))return r;throw TypeError("Can't convert object to primitive value")}});var La=T(Uo=>{l();var Vo=Qr(),oy=An(),ly=qd(),uy=Object.defineProperty;Uo.f=ur()?Object.defineProperty:function(e,a,r){if(Vo(e),a=ly(a,!0),Vo(r),oy)try{return uy(e,a,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[a]=r.value),e}});var Ai=T((xq,Ro)=>{l();Ro.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var jr=T((wq,Fo)=>{l();var cy=La(),hy=Ai();Fo.exports=ur()?function(t,e,a){return cy.f(t,e,hy(1,a))}:function(t,e,a){return t[e]=a,t}});var cr=T((Iq,Lo)=>{l();var my={}.hasOwnProperty;Lo.exports=function(t,e){return my.call(t,e)}});var Qa=T((Eq,ko)=>{l();var Od=Fa(),wn=ct(),Qo=gn(),vy=jr(),by=cr(),Pd="prototype",st=function(t,e,a){var r=t&st.F,i=t&st.G,d=t&st.S,n=t&st.P,f=t&st.B,h=t&st.W,v=i?wn:wn[e]||(wn[e]={}),I=v[Pd],S=i?Od:d?Od[e]:(Od[e]||{})[Pd],O,R,V;i&&(a=e);for(O in a)R=!r&&S&&S[O]!==void 0,!(R&&by(v,O))&&(V=R?S[O]:a[O],v[O]=i&&typeof S[O]!="function"?a[O]:f&&R?Qo(V,Od):h&&S[O]==V?function(L){var $=function(X,ie,oe){if(this instanceof L){switch(arguments.length){case 0:return new L;case 1:return new L(X);case 2:return new L(X,ie)}return new L(X,ie,oe)}return L.apply(this,arguments)};return $[Pd]=L[Pd],$}(V):n&&typeof V=="function"?Qo(Function.call,V):V,n&&((v.virtual||(v.virtual={}))[O]=V,t&st.R&&I&&!I[O]&&vy(I,O,V)))};st.F=1;st.G=2;st.S=4;st.P=8;st.B=16;st.W=32;st.U=64;st.R=128;ko.exports=st});var _n=T((Nq,jo)=>{l();jo.exports=jr()});var Hr=T((Mq,Ho)=>{l();Ho.exports={}});var Vd=T((Bq,Ko)=>{l();var gy={}.toString;Ko.exports=function(t){return gy.call(t).slice(8,-1)}});var In=T((Oq,zo)=>{l();var yy=Vd();zo.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return yy(t)=="String"?t.split(""):Object(t)}});var hr=T((Vq,$o)=>{l();var xy=In(),Ay=Td();$o.exports=function(t){return xy(Ay(t))}});var Sn=T((Rq,Go)=>{l();var wy=Md(),_y=Math.min;Go.exports=function(t){return t>0?_y(wy(t),9007199254740991):0}});var Wo=T((Lq,Yo)=>{l();var Iy=Md(),Sy=Math.max,Ey=Math.min;Yo.exports=function(t,e){return t=Iy(t),t<0?Sy(t+e,0):Ey(t,e)}});var Xo=T((kq,Jo)=>{l();var Cy=hr(),Ny=Sn(),Dy=Wo();Jo.exports=function(t){return function(e,a,r){var i=Cy(e),d=Ny(i.length),n=Dy(r,d),f;if(t&&a!=a){for(;d>n;)if(f=i[n++],f!=f)return!0}else for(;d>n;n++)if((t||n in i)&&i[n]===a)return t||n||0;return!t&&-1}}});var Ud=T((Hq,a5)=>{l();var My=ct(),Zo=Fa(),e5="__core-js_shared__",t5=Zo[e5]||(Zo[e5]={});(a5.exports=function(t,e){return t5[t]||(t5[t]=e!==void 0?e:{})})("versions",[]).push({version:My.version,mode:x0()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var A0=T((zq,r5)=>{l();var Ty=0,By=Math.random();r5.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++Ty+By).toString(36))}});var Rd=T((Gq,d5)=>{l();var i5=Ud()("keys"),qy=A0();d5.exports=function(t){return i5[t]||(i5[t]=qy(t))}});var En=T((Wq,n5)=>{l();var p5=cr(),Oy=hr(),Py=Xo()(!1),Vy=Rd()("IE_PROTO");n5.exports=function(t,e){var a=Oy(t),r=0,i=[],d;for(d in a)d!=Vy&&p5(a,d)&&i.push(d);for(;e.length>r;)p5(a,d=e[r++])&&(~Py(i,d)||i.push(d));return i}});var Fd=T((Xq,s5)=>{l();s5.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var Kr=T((eO,f5)=>{l();var Uy=En(),Ry=Fd();f5.exports=Object.keys||function(e){return Uy(e,Ry)}});var l5=T((aO,o5)=>{l();var Fy=La(),Ly=Qr(),Qy=Kr();o5.exports=ur()?Object.defineProperties:function(e,a){Ly(e);for(var r=Qy(a),i=r.length,d=0,n;i>d;)Fy.f(e,n=r[d++],a[n]);return e}});var h5=T((iO,c5)=>{l();var u5=Fa().document;c5.exports=u5&&u5.documentElement});var Dn=T((pO,v5)=>{l();var ky=Qr(),jy=l5(),m5=Fd(),Hy=Rd()("IE_PROTO"),Cn=function(){},Nn="prototype",Ld=function(){var t=xn()("iframe"),e=m5.length,a="<",r=">",i;for(t.style.display="none",h5().appendChild(t),t.src="javascript:",i=t.contentWindow.document,i.open(),i.write(a+"script"+r+"document.F=Object"+a+"/script"+r),i.close(),Ld=i.F;e--;)delete Ld[Nn][m5[e]];return Ld()};v5.exports=Object.create||function(e,a){var r;return e!==null?(Cn[Nn]=ky(e),r=new Cn,Cn[Nn]=null,r[Hy]=e):r=Ld(),a===void 0?r:jy(r,a)}});var qt=T((sO,g5)=>{l();var Mn=Ud()("wks"),Ky=A0(),Tn=Fa().Symbol,b5=typeof Tn=="function",zy=g5.exports=function(t){return Mn[t]||(Mn[t]=b5&&Tn[t]||(b5?Tn:Ky)("Symbol."+t))};zy.store=Mn});var Qd=T((oO,x5)=>{l();var $y=La().f,Gy=cr(),y5=qt()("toStringTag");x5.exports=function(t,e,a){t&&!Gy(t=a?t:t.prototype,y5)&&$y(t,y5,{configurable:!0,value:e})}});var _5=T((uO,w5)=>{"use strict";l();var Yy=Dn(),Wy=Ai(),Jy=Qd(),A5={};jr()(A5,qt()("iterator"),function(){return this});w5.exports=function(t,e,a){t.prototype=Yy(A5,{next:Wy(1,a)}),Jy(t,e+" Iterator")}});var w0=T((hO,I5)=>{l();var Xy=Td();I5.exports=function(t){return Object(Xy(t))}});var C5=T((vO,E5)=>{l();var Zy=cr(),ex=w0(),S5=Rd()("IE_PROTO"),tx=Object.prototype;E5.exports=Object.getPrototypeOf||function(t){return t=ex(t),Zy(t,S5)?t[S5]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?tx:null}});var On=T((gO,q5)=>{"use strict";l();var N5=x0(),Bn=Qa(),ax=_n(),D5=jr(),M5=Hr(),rx=_5(),ix=Qd(),dx=C5(),_0=qt()("iterator"),qn=!([].keys&&"next"in[].keys()),px="@@iterator",T5="keys",kd="values",B5=function(){return this};q5.exports=function(t,e,a,r,i,d,n){rx(a,e,r);var f=function(oe){if(!qn&&oe in S)return S[oe];switch(oe){case T5:return function(){return new a(this,oe)};case kd:return function(){return new a(this,oe)}}return function(){return new a(this,oe)}},h=e+" Iterator",v=i==kd,I=!1,S=t.prototype,O=S[_0]||S[px]||i&&S[i],R=O||f(i),V=i?v?f("entries"):R:void 0,L=e=="Array"&&S.entries||O,$,X,ie;if(L&&(ie=dx(L.call(new t)),ie!==Object.prototype&&ie.next&&(ix(ie,h,!0),!N5&&typeof ie[_0]!="function"&&D5(ie,_0,B5))),v&&O&&O.name!==kd&&(I=!0,R=function(){return O.call(this)}),(!N5||n)&&(qn||I||!S[_0])&&D5(S,_0,R),M5[e]=R,M5[h]=B5,i)if($={values:v?R:f(kd),keys:d?R:f(T5),entries:V},n)for(X in $)X in S||ax(S,X,$[X]);else Bn(Bn.P+Bn.F*(qn||I),e,$);return $}});var I0=T(()=>{"use strict";l();var nx=Ao()(!0);On()(String,"String",function(t){this._t=String(t),this._i=0},function(){var t=this._t,e=this._i,a;return e>=t.length?{value:void 0,done:!0}:(a=nx(t,e),this._i+=a.length,{value:a,done:!1})})});var P5=T((_O,O5)=>{l();O5.exports=function(){}});var U5=T((SO,V5)=>{l();V5.exports=function(t,e){return{value:e,done:!!t}}});var L5=T((CO,F5)=>{"use strict";l();var Pn=P5(),jd=U5(),R5=Hr(),sx=hr();F5.exports=On()(Array,"Array",function(t,e){this._t=sx(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,a=this._i++;return!t||a>=t.length?(this._t=void 0,jd(1)):e=="keys"?jd(0,a):e=="values"?jd(0,t[a]):jd(0,[a,t[a]])},"values");R5.Arguments=R5.Array;Pn("keys");Pn("values");Pn("entries")});var $d=T(()=>{l();L5();var fx=Fa(),ox=jr(),Q5=Hr(),k5=qt()("toStringTag"),j5="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(Hd=0;Hd{l();H5.f=qt()});var z5=T((OO,K5)=>{l();I0();$d();K5.exports=Gd().f("iterator")});var G5=T((VO,$5)=>{l();$5.exports={default:z5(),__esModule:!0}});var W5=T((RO,Y5)=>{l();var zr=A0()("meta"),lx=Lr(),Un=cr(),ux=La().f,cx=0,Yd=Object.isExtensible||function(){return!0},hx=!kr()(function(){return Yd(Object.preventExtensions({}))}),Rn=function(t){ux(t,zr,{value:{i:"O"+ ++cx,w:{}}})},mx=function(t,e){if(!lx(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!Un(t,zr)){if(!Yd(t))return"F";if(!e)return"E";Rn(t)}return t[zr].i},vx=function(t,e){if(!Un(t,zr)){if(!Yd(t))return!0;if(!e)return!1;Rn(t)}return t[zr].w},bx=function(t){return hx&&gx.NEED&&Yd(t)&&!Un(t,zr)&&Rn(t),t},gx=Y5.exports={KEY:zr,NEED:!1,fastKey:mx,getWeak:vx,onFreeze:bx}});var Wd=T((LO,X5)=>{l();var yx=Fa(),J5=ct(),xx=x0(),Ax=Gd(),wx=La().f;X5.exports=function(t){var e=J5.Symbol||(J5.Symbol=xx?{}:yx.Symbol||{});t.charAt(0)!="_"&&!(t in e)&&wx(e,t,{value:Ax.f(t)})}});var Jd=T(Z5=>{l();Z5.f=Object.getOwnPropertySymbols});var wi=T(e8=>{l();e8.f={}.propertyIsEnumerable});var a8=T((zO,t8)=>{l();var _x=Kr(),Ix=Jd(),Sx=wi();t8.exports=function(t){var e=_x(t),a=Ix.f;if(a)for(var r=a(t),i=Sx.f,d=0,n;r.length>d;)i.call(t,n=r[d++])&&e.push(n);return e}});var i8=T((GO,r8)=>{l();var Ex=Vd();r8.exports=Array.isArray||function(e){return Ex(e)=="Array"}});var Fn=T(d8=>{l();var Cx=En(),Nx=Fd().concat("length","prototype");d8.f=Object.getOwnPropertyNames||function(e){return Cx(e,Nx)}});var f8=T((XO,s8)=>{l();var Dx=hr(),p8=Fn().f,Mx={}.toString,n8=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],Tx=function(t){try{return p8(t)}catch{return n8.slice()}};s8.exports.f=function(e){return n8&&Mx.call(e)=="[object Window]"?Tx(e):p8(Dx(e))}});var u8=T(l8=>{l();var Bx=wi(),qx=Ai(),Ox=hr(),Px=qd(),Vx=cr(),Ux=An(),o8=Object.getOwnPropertyDescriptor;l8.f=ur()?o8:function(e,a){if(e=Ox(e),a=Px(a,!0),Ux)try{return o8(e,a)}catch{}if(Vx(e,a))return qx(!Bx.f.call(e,a),e[a])}});var C8=T(()=>{"use strict";l();var e2=Fa(),W1=cr(),Kn=ur(),Et=Qa(),c8=_n(),Rx=W5().KEY,b8=kr(),Jn=Ud(),Xn=Qd(),Fx=A0(),C0=qt(),Lx=Gd(),Qx=Wd(),kx=a8(),jx=i8(),zn=Qr(),Hx=Lr(),t2=hr(),Zn=qd(),$n=Ai(),E0=Dn(),g8=f8(),y8=u8(),x8=La(),Kx=Kr(),A8=y8.f,$r=x8.f,w8=g8.f,bt=e2.Symbol,Zd=e2.JSON,Xd=Zd&&Zd.stringify,mr="prototype",vt=C0("_hidden"),h8=C0("toPrimitive"),zx={}.propertyIsEnumerable,S0=Jn("symbol-registry"),ka=Jn("symbols"),N0=Jn("op-symbols"),Ot=Object[mr],_i=typeof bt=="function",Ln=e2.QObject,Gn=!Ln||!Ln[mr]||!Ln[mr].findChild,Yn=Kn&&b8(function(){return E0($r({},"a",{get:function(){return $r(this,"a",{value:7}).a}})).a!=7})?function(t,e,a){var r=A8(Ot,e);r&&delete Ot[e],$r(t,e,a),r&&t!==Ot&&$r(Ot,e,r)}:$r,m8=function(t){var e=ka[t]=E0(bt[mr]);return e._k=t,e},Wn=_i&&typeof bt.iterator=="symbol"?function(t){return typeof t=="symbol"}:function(t){return t instanceof bt},a2=function(e,a,r){return e===Ot&&a2(N0,a,r),zn(e),a=Zn(a,!0),zn(r),W1(ka,a)?(r.enumerable?(W1(e,vt)&&e[vt][a]&&(e[vt][a]=!1),r=E0(r,{enumerable:$n(0,!1)})):(W1(e,vt)||$r(e,vt,$n(1,{})),e[vt][a]=!0),Yn(e,a,r)):$r(e,a,r)},_8=function(e,a){zn(e);for(var r=kx(a=t2(a)),i=0,d=r.length,n;d>i;)a2(e,n=r[i++],a[n]);return e},$x=function(e,a){return a===void 0?E0(e):_8(E0(e),a)},v8=function(e){var a=zx.call(this,e=Zn(e,!0));return this===Ot&&W1(ka,e)&&!W1(N0,e)?!1:a||!W1(this,e)||!W1(ka,e)||W1(this,vt)&&this[vt][e]?a:!0},I8=function(e,a){if(e=t2(e),a=Zn(a,!0),!(e===Ot&&W1(ka,a)&&!W1(N0,a))){var r=A8(e,a);return r&&W1(ka,a)&&!(W1(e,vt)&&e[vt][a])&&(r.enumerable=!0),r}},S8=function(e){for(var a=w8(t2(e)),r=[],i=0,d;a.length>i;)!W1(ka,d=a[i++])&&d!=vt&&d!=Rx&&r.push(d);return r},E8=function(e){for(var a=e===Ot,r=w8(a?N0:t2(e)),i=[],d=0,n;r.length>d;)W1(ka,n=r[d++])&&(a?W1(Ot,n):!0)&&i.push(ka[n]);return i};_i||(bt=function(){if(this instanceof bt)throw TypeError("Symbol is not a constructor!");var e=Fx(arguments.length>0?arguments[0]:void 0),a=function(r){this===Ot&&a.call(N0,r),W1(this,vt)&&W1(this[vt],e)&&(this[vt][e]=!1),Yn(this,e,$n(1,r))};return Kn&&Gn&&Yn(Ot,e,{configurable:!0,set:a}),m8(e)},c8(bt[mr],"toString",function(){return this._k}),y8.f=I8,x8.f=a2,Fn().f=g8.f=S8,wi().f=v8,Jd().f=E8,Kn&&!x0()&&c8(Ot,"propertyIsEnumerable",v8,!0),Lx.f=function(t){return m8(C0(t))});Et(Et.G+Et.W+Et.F*!_i,{Symbol:bt});for(Qn="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),kn=0;Qn.length>kn;)C0(Qn[kn++]);var Qn,kn;for(jn=Kx(C0.store),Hn=0;jn.length>Hn;)Qx(jn[Hn++]);var jn,Hn;Et(Et.S+Et.F*!_i,"Symbol",{for:function(t){return W1(S0,t+="")?S0[t]:S0[t]=bt(t)},keyFor:function(e){if(!Wn(e))throw TypeError(e+" is not a symbol!");for(var a in S0)if(S0[a]===e)return a},useSetter:function(){Gn=!0},useSimple:function(){Gn=!1}});Et(Et.S+Et.F*!_i,"Object",{create:$x,defineProperty:a2,defineProperties:_8,getOwnPropertyDescriptor:I8,getOwnPropertyNames:S8,getOwnPropertySymbols:E8});Zd&&Et(Et.S+Et.F*(!_i||b8(function(){var t=bt();return Xd([t])!="[null]"||Xd({a:t})!="{}"||Xd(Object(t))!="{}"})),"JSON",{stringify:function(e){for(var a=[e],r=1,i,d;arguments.length>r;)a.push(arguments[r++]);if(d=i=a[1],!(!Hx(i)&&e===void 0||Wn(e)))return jx(i)||(i=function(n,f){if(typeof d=="function"&&(f=d.call(this,n,f)),!Wn(f))return f}),a[1]=i,Xd.apply(Zd,a)}});bt[mr][h8]||jr()(bt[mr],h8,bt[mr].valueOf);Xn(bt,"Symbol");Xn(Math,"Math",!0);Xn(e2.JSON,"JSON",!0)});var N8=T(()=>{l()});var D8=T(()=>{l();Wd()("asyncIterator")});var M8=T(()=>{l();Wd()("observable")});var B8=T((hP,T8)=>{l();C8();N8();D8();M8();T8.exports=ct().Symbol});var e6=T((vP,q8)=>{l();q8.exports={default:B8(),__esModule:!0}});var V8=T(a6=>{"use strict";l();a6.__esModule=!0;var Gx=G5(),O8=P8(Gx),Yx=e6(),vr=P8(Yx),t6=typeof vr.default=="function"&&typeof O8.default=="symbol"?function(t){return typeof t}:function(t){return t&&typeof vr.default=="function"&&t.constructor===vr.default&&t!==vr.default.prototype?"symbol":typeof t};function P8(t){return t&&t.__esModule?t:{default:t}}a6.default=typeof vr.default=="function"&&t6(O8.default)==="symbol"?function(t){return typeof t>"u"?"undefined":t6(t)}:function(t){return t&&typeof vr.default=="function"&&t.constructor===vr.default&&t!==vr.default.prototype?"symbol":typeof t>"u"?"undefined":t6(t)}});var F8=T((xP,R8)=>{l();var U8=Qr();R8.exports=function(t,e,a,r){try{return r?e(U8(a)[0],a[1]):e(a)}catch(d){var i=t.return;throw i!==void 0&&U8(i.call(t)),d}}});var Q8=T((wP,L8)=>{l();var Wx=Hr(),Jx=qt()("iterator"),Xx=Array.prototype;L8.exports=function(t){return t!==void 0&&(Wx.Array===t||Xx[Jx]===t)}});var j8=T((IP,k8)=>{"use strict";l();var Zx=La(),eA=Ai();k8.exports=function(t,e,a){e in t?Zx.f(t,e,eA(0,a)):t[e]=a}});var i6=T((EP,H8)=>{l();var r6=Vd(),tA=qt()("toStringTag"),aA=r6(function(){return arguments}())=="Arguments",rA=function(t,e){try{return t[e]}catch{}};H8.exports=function(t){var e,a,r;return t===void 0?"Undefined":t===null?"Null":typeof(a=rA(e=Object(t),tA))=="string"?a:aA?r6(e):(r=r6(e))=="Object"&&typeof e.callee=="function"?"Arguments":r}});var d6=T((NP,K8)=>{l();var iA=i6(),dA=qt()("iterator"),pA=Hr();K8.exports=ct().getIteratorMethod=function(t){if(t!=null)return t[dA]||t["@@iterator"]||pA[iA(t)]}});var G8=T((MP,$8)=>{l();var n6=qt()("iterator"),z8=!1;try{p6=[7][n6](),p6.return=function(){z8=!0},Array.from(p6,function(){throw 2})}catch{}var p6;$8.exports=function(t,e){if(!e&&!z8)return!1;var a=!1;try{var r=[7],i=r[n6]();i.next=function(){return{done:a=!0}},r[n6]=function(){return i},t(r)}catch{}return a}});var W8=T(()=>{"use strict";l();var nA=gn(),s6=Qa(),sA=w0(),fA=F8(),oA=Q8(),lA=Sn(),Y8=j8(),uA=d6();s6(s6.S+s6.F*!G8()(function(t){Array.from(t)}),"Array",{from:function(e){var a=sA(e),r=typeof this=="function"?this:Array,i=arguments.length,d=i>1?arguments[1]:void 0,n=d!==void 0,f=0,h=uA(a),v,I,S,O;if(n&&(d=nA(d,i>2?arguments[2]:void 0,2)),h!=null&&!(r==Array&&oA(h)))for(O=h.call(a),I=new r;!(S=O.next()).done;f++)Y8(I,f,n?fA(O,d,[S.value,f],!0):S.value);else for(v=lA(a.length),I=new r(v);v>f;f++)Y8(I,f,n?d(a[f],f):a[f]);return I.length=f,I}})});var X8=T((PP,J8)=>{l();I0();W8();J8.exports=ct().Array.from});var f6=T((UP,Z8)=>{l();Z8.exports={default:X8(),__esModule:!0}});var l6=T(o6=>{"use strict";l();o6.__esModule=!0;var cA=f6(),hA=mA(cA);function mA(t){return t&&t.__esModule?t:{default:t}}o6.default=function(t){if(Array.isArray(t)){for(var e=0,a=Array(t.length);e{"use strict";l();Object.defineProperty(br,"__esModule",{value:!0});br.flip=vA;br.constant=bA;br.on=gA;br.compose=yA;br.pipe=xA;br.curry=AA;function vA(t){return function(e,a){return t(a,e)}}function bA(t){return function(){return t}}function gA(t,e){return function(a,r){return t(e(a),e(r))}}function yA(){for(var t=this,e=arguments.length,a=Array(e),r=0;r-1;f--)n=a[f].call(t,n);return n}}function xA(){for(var t=this,e=arguments.length,a=Array(e),r=0;r=e?t.apply(this,r):e9(t,e,r)}}function AA(t){return e9(t,t.length,[])}});var i9=T((jP,r9)=>{"use strict";l();var a9=Kr(),wA=Jd(),_A=wi(),IA=w0(),SA=In(),r2=Object.assign;r9.exports=!r2||kr()(function(){var t={},e={},a=Symbol(),r="abcdefghijklmnopqrst";return t[a]=7,r.split("").forEach(function(i){e[i]=i}),r2({},t)[a]!=7||Object.keys(r2({},e)).join("")!=r})?function(e,a){for(var r=IA(e),i=arguments.length,d=1,n=wA.f,f=_A.f;i>d;)for(var h=SA(arguments[d++]),v=n?a9(h).concat(n(h)):a9(h),I=v.length,S=0,O;I>S;)f.call(h,O=v[S++])&&(r[O]=h[O]);return r}:r2});var d9=T(()=>{l();var u6=Qa();u6(u6.S+u6.F,"Object",{assign:i9()})});var n9=T((GP,p9)=>{l();d9();p9.exports=ct().Object.assign});var f9=T((WP,s9)=>{l();s9.exports={default:n9(),__esModule:!0}});var h6=T(c6=>{"use strict";l();c6.__esModule=!0;var EA=f9(),CA=NA(EA);function NA(t){return t&&t.__esModule?t:{default:t}}c6.default=CA.default||function(t){for(var e=1;e{l();var m6=Qa(),DA=ct(),MA=kr();o9.exports=function(t,e){var a=(DA.Object||{})[t]||Object[t],r={};r[t]=e(a),m6(m6.S+m6.F*MA(function(){a(1)}),"Object",r)}});var u9=T(()=>{l();var TA=w0(),BA=Kr();l9()("keys",function(){return function(e){return BA(TA(e))}})});var h9=T((dV,c9)=>{l();u9();c9.exports=ct().Object.keys});var v6=T((nV,m9)=>{l();m9.exports={default:h9(),__esModule:!0}});var b9=T((fV,v9)=>{l();var qA=Lr(),OA=Math.floor;v9.exports=function(e){return!qA(e)&&isFinite(e)&&OA(e)===e}});var y9=T(()=>{l();var g9=Qa();g9(g9.S,"Number",{isInteger:b9()})});var A9=T((hV,x9)=>{l();y9();x9.exports=ct().Number.isInteger});var _9=T((vV,w9)=>{l();w9.exports={default:A9(),__esModule:!0}});var g6=T(b6=>{"use strict";l();b6.__esModule=!0;b6.default=function(t,e){var a={};for(var r in t)e.indexOf(r)>=0||!Object.prototype.hasOwnProperty.call(t,r)||(a[r]=t[r]);return a}});var y6=T(tt=>{"use strict";l();Object.defineProperty(tt,"__esModule",{value:!0});function Gr(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var gt=Gr(l6()),j1=Gr(bn()),Yt=t9(),PA=Gr(h6()),VA=Gr(f6()),C9=Gr(v6()),UA=Gr(_9()),RA=Gr(g6()),FA=void 0,LA=function(t,e){return j1(this,FA),[].concat(gt(e),gt(t))}.bind(void 0),QA=Yt.curry(LA),kA=void 0,jA=function(t){return j1(this,kA),Array.isArray(t)?t:[t]}.bind(void 0),HA=void 0,KA=function(t,e){return j1(this,HA),e===t.length-1}.bind(void 0),N9=Yt.curry(KA),zA=void 0,$A=function(t,e){return j1(this,zA),N9(t,e)?0:e+1}.bind(void 0),GA=Yt.curry($A),D9=void 0,YA=function(t){return j1(this,D9),Math.max.apply(Math,gt(C9(t)))+1}.bind(void 0),WA=function(t){return j1(this,D9),VA("length"in t?t:PA({},t,{length:YA(t)}))}.bind(void 0),JA=void 0,XA=function(t,e,a){return j1(this,JA),[].concat(gt(a.slice(0,t)),gt(e),gt(a.slice(t+1)))}.bind(void 0),ZA=Yt.curry(XA),M9=void 0,ew=function(t,e){return j1(this,M9),UA(t)&&t>=e}.bind(void 0),T9=function(t){return j1(this,M9),ew(Number(t),0)}.bind(void 0),tw=void 0,aw=function(t){var e=t.length,a=RA(t,["length"]);return j1(this,tw),C9(a).every(T9)}.bind(void 0),rw=void 0,iw=function(t,e){return j1(this,rw),[].concat(gt(t),gt(e))}.bind(void 0),dw=Yt.curry(iw),I9=void 0,pw=function(t,e,a,r){return j1(this,I9),r.reduce(function(i,d,n){return j1(this,I9),t(d,n,i)?e(i,d,n):i}.bind(this),a)}.bind(void 0),nw=Yt.curry(pw),S9=void 0,sw=function(t,e,a,r){j1(this,S9);var i=a;return r.every(function(d,n){j1(this,S9);var f=t(d,n,i);return f&&(i=e(i,d,n)),f}.bind(this)),i}.bind(void 0),fw=Yt.curry(sw),ow=void 0,lw=function(t,e,a){return j1(this,ow),[].concat(gt(a.slice(0,t)),gt(a.slice(t+e)))}.bind(void 0),uw=Yt.curry(lw),E9=void 0,cw=function(t,e){return j1(this,E9),[].concat(gt(Array(t))).map(function(){return j1(this,E9),e}.bind(this))}.bind(void 0),hw=Yt.curry(cw),mw=void 0,vw=function(t,e,a){return j1(this,mw),[].concat(gt(a.slice(0,t)),gt(e),gt(a.slice(t+e.length)))}.bind(void 0),bw=Yt.curry(vw),gw=void 0,yw=function(t,e){return j1(this,gw),e<0?t.length-e:e}.bind(void 0),xw=Yt.curry(yw);tt.append=QA;tt.convertIfNot=jA;tt.cycleNext=GA;tt.fromObject=WA;tt.insert=ZA;tt.isKey=T9;tt.isLastIndex=N9;tt.isPossibleFromObject=aw;tt.prepend=dw;tt.reduceIf=nw;tt.reduceWhile=fw;tt.remove=uw;tt.repeat=hw;tt.replace=bw;tt.resolveIndex=xw});var q9=T((wV,B9)=>{"use strict";l();B9.exports=function t(e,a){if(e===a)return!0;var r=Array.isArray(e),i=Array.isArray(a),d;if(r&&i){if(e.length!=a.length)return!1;for(d=0;d{l();var x6=Qa();x6(x6.S+x6.F*!ur(),"Object",{defineProperty:La().f})});var V9=T((CV,P9)=>{l();O9();var Aw=ct().Object;P9.exports=function(e,a,r){return Aw.defineProperty(e,a,r)}});var R9=T((DV,U9)=>{l();U9.exports={default:V9(),__esModule:!0}});var F9=T(A6=>{"use strict";l();A6.__esModule=!0;var ww=R9(),_w=Iw(ww);function Iw(t){return t&&t.__esModule?t:{default:t}}A6.default=function(t,e,a){return e in t?(0,_w.default)(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}});var Q9=T((qV,L9)=>{l();var Sw=i6(),Ew=qt()("iterator"),Cw=Hr();L9.exports=ct().isIterable=function(t){var e=Object(t);return e[Ew]!==void 0||"@@iterator"in e||Cw.hasOwnProperty(Sw(e))}});var j9=T((PV,k9)=>{l();$d();I0();k9.exports=Q9()});var K9=T((UV,H9)=>{l();H9.exports={default:j9(),__esModule:!0}});var $9=T((FV,z9)=>{l();var Nw=Qr(),Dw=d6();z9.exports=ct().getIterator=function(t){var e=Dw(t);if(typeof e!="function")throw TypeError(t+" is not iterable!");return Nw(e.call(t))}});var Y9=T((QV,G9)=>{l();$d();I0();G9.exports=$9()});var J9=T((jV,W9)=>{l();W9.exports={default:Y9(),__esModule:!0}});var Z9=T(w6=>{"use strict";l();w6.__esModule=!0;var Mw=K9(),Tw=X9(Mw),Bw=J9(),qw=X9(Bw);function X9(t){return t&&t.__esModule?t:{default:t}}w6.default=function(){function t(e,a){var r=[],i=!0,d=!1,n=void 0;try{for(var f=(0,qw.default)(e),h;!(i=(h=f.next()).done)&&(r.push(h.value),!(a&&r.length===a));i=!0);}catch(v){d=!0,n=v}finally{try{!i&&f.return&&f.return()}finally{if(d)throw n}}return r}return function(e,a){if(Array.isArray(e))return e;if((0,Tw.default)(Object(e)))return t(e,a);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var t7=T(($V,e7)=>{l();var Ow=Kr(),Pw=hr(),Vw=wi().f;e7.exports=function(t){return function(e){for(var a=Pw(e),r=Ow(a),i=r.length,d=0,n=[],f;i>d;)Vw.call(a,f=r[d++])&&n.push(t?[f,a[f]]:a[f]);return n}}});var r7=T(()=>{l();var a7=Qa(),Uw=t7()(!0);a7(a7.S,"Object",{entries:function(e){return Uw(e)}})});var d7=T((XV,i7)=>{l();r7();i7.exports=ct().Object.entries});var n7=T((eU,p7)=>{l();p7.exports={default:d7(),__esModule:!0}});var I7=T($1=>{"use strict";l();function Jt(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Object.defineProperty($1,"__esModule",{value:!0});var $e=Jt(bn()),Pt=bo(),o7=Jt(V8()),I6=y6(),Rw=Jt(v6()),l7=Jt(l6()),Fw=Jt(q9()),Lw=Jt(F9()),D0=Jt(h6()),Qw=Jt(Z9()),kw=Jt(n7()),jw=Jt(g6()),Hw=Jt(e6()),Kw=void 0,zw=function(t,e){return $e(this,Kw),e[t]}.bind(void 0),Yr=Pt.curry(zw),u7=void 0,$w=function(t){return $e(this,u7),t!==null&&(t===void 0?"undefined":o7(t))==="object"}.bind(void 0),c7=function(t){return $e(this,u7),Array.isArray(t)||$w(t)}.bind(void 0),M0=void 0,Gw=function(t,e,a){return $e(this,M0),I6.isLastIndex(e,t)?a:h7(t+1,e,a)}.bind(void 0),Yw=function(t,e,a){return $e(this,M0),"Expected to find a composite at ["+String(e.join(", "))+"]["+String(t)+"], but instead got: "+(a===void 0?"undefined":o7(a))}.bind(void 0),Ww=function(t,e,a){if($e(this,M0),c7(a))return a;throw new Error(Yw(t,e,a))}.bind(void 0),h7=function(t,e,a){return $e(this,M0),a===void 0?void 0:Gw(t,e,Yr(e[t],Ww(t,e,a)))}.bind(void 0),Jw=function(t,e){return $e(this,M0),t.length===0?void 0:h7(0,t,e)}.bind(void 0),m7=Pt.curry(Jw),Xw=void 0,i2=function(t){return $e(this,Xw),Array.isArray(t)?[].concat(l7(t.keys())):Rw(t)}.bind(void 0),Zw=void 0,e_=function(t,e,a){return $e(this,Zw),Fw(m7(t,a),e)}.bind(void 0),t_=Pt.curry(e_),a_=void 0,r_=function(t,e){return $e(this,a_),Object.prototype.hasOwnProperty.call(e,t)}.bind(void 0),S6=Pt.curry(r_),s7=void 0,i_=function(t,e){$e(this,s7);var a=i2(t);return a.length===i2(e).length&&a.every(function(r){return $e(this,s7),S6(r,e)&&Yr(r,t)===Yr(r,e)}.bind(this))}.bind(void 0),v7=Pt.curry(i_),d_=void 0,b7=function(t){return $e(this,d_),i2(t).length===0}.bind(void 0),_6=void 0,p_=function(t,e){return $e(this,_6),kw(e).reduce(function(a,r){var i=Qw(r,2),d=i[0],n=i[1];return $e(this,_6),D0({},a,Lw({},d,t(n,d,e)))}.bind(this),{})}.bind(void 0),n_=function(t,e){return $e(this,_6),Array.isArray(e)?e.map(t):p_(t,e)}.bind(void 0),s_=Pt.curry(n_),g7=void 0,f_=function(t,e){e[t];var a=jw(e,[t]);return $e(this,g7),a}.bind(void 0),o_=function(t,e){return $e(this,g7),Array.isArray(e)?I6.remove(t,1,e):f_(t,e)}.bind(void 0),y7=Pt.curry(o_),l_=void 0,d2=function(t){return $e(this,l_),Array.isArray(t)?[].concat(l7(t)):D0({},t)}.bind(void 0),Wt=void 0,u_=function(t){$e(this,Wt);var e=d2(t);return{origin:e,current:e,previous:void 0}}.bind(void 0),x7=function(t,e,a){return $e(this,Wt),a[t]=e,Yr(t,a)}.bind(void 0),c_=function(t,e,a,r){return $e(this,Wt),D0({},r,{current:x7(t[e],a,r.current),previous:r.current})}.bind(void 0),h_=function(t,e,a){$e(this,Wt);var r=y7(t[e],a.current);return e===0?D0({},a,{current:r,origin:r}):D0({},a,{previous:x7(t[e-1],r,a.previous)})}.bind(void 0),A7=Hw("composite.updateIn.removeAction"),m_=function(t,e,a,r){return $e(this,Wt),a===A7?h_(t,e,r):c_(t,e,a,r)}.bind(void 0),v_=function(t){return $e(this,Wt),typeof t=="number"?[]:{}}.bind(void 0),b_=function(t,e,a){return $e(this,Wt),S6(t,a)?d2(Yr(t,a)):v_(e)}.bind(void 0),g_=function(t,e,a,r){return $e(this,Wt),I6.isLastIndex(t,a)?e(Yr(t[a],r)):b_(t[a],t[a+1],r)}.bind(void 0),y_=function(t,e){return $e(this,Wt),function(a,r,i){return $e(this,Wt),m_(t,i,g_(t,e,i,a.current),a)}.bind(this)}.bind(void 0),x_=function(t,e,a){return $e(this,Wt),t.length===0?a:t.reduce(y_(t,e),u_(a)).origin}.bind(void 0),T0=Pt.curry(x_);T0.remove=A7;var w7=void 0,A_=function(){return $e(this,w7),T0.remove}.bind(void 0),w_=function(t,e){return $e(this,w7),T0(t,A_,e)}.bind(void 0),__=Pt.curry(w_),I_=void 0,S_=function(t,e,a){$e(this,I_);var r=d2(a);return r[t]=e,r}.bind(void 0),E_=Pt.curry(S_),f7=void 0,C_=function(t,e,a){return $e(this,f7),T0(t,function(){return $e(this,f7),e}.bind(this),a)}.bind(void 0),N_=Pt.curry(C_),_7=void 0,D_=function(t,e){return $e(this,_7),Boolean(Number(t)^Number(e))}.bind(void 0),M_=function(t,e){return $e(this,_7),t===e||!D_(Array.isArray(t),Array.isArray(e))&&v7(t,e)}.bind(void 0),T_=Pt.curry(M_),B_=void 0,q_=function(t){return $e(this,B_),b7(t)?void 0:t}.bind(void 0);$1.get=Yr,$1.getIn=m7,$1.getKeys=i2,$1.hasIn=t_,$1.hasKey=S6,$1.haveSameProps=v7,$1.is=c7,$1.isEmpty=b7,$1.map=s_,$1.remove=y7,$1.removeIn=__,$1.set=E_,$1.setIn=N_,$1.shallowCopy=d2,$1.shallowEqual=T_,$1.toUndefinedIfEmpty=q_,$1.updateIn=T0});var E7=T((iU,S7)=>{l();S7.exports=function(t,e){return{value:e,done:!!t}}});var p2=T((pU,C7)=>{l();C7.exports={}});var n2=T((sU,N7)=>{l();var O_=rn(),P_=yi();N7.exports=function(t){return O_(P_(t))}});var M7=T((oU,D7)=>{l();var V_=Nd(),U_=Math.max,R_=Math.min;D7.exports=function(t,e){return t=V_(t),t<0?U_(t+e,0):R_(t,e)}});var s2=T((uU,T7)=>{l();var F_=n2(),L_=Dd(),Q_=M7();T7.exports=function(t){return function(e,a,r){var i=F_(e),d=L_(i.length),n=Q_(r,d),f;if(t&&a!=a){for(;d>n;)if(f=i[n++],f!=f)return!0}else for(;d>n;n++)if((t||n in i)&&i[n]===a)return t||n||0;return!t&&-1}}});var f2=T((hU,q7)=>{l();var B7=nn()("keys"),k_=Sd();q7.exports=function(t){return B7[t]||(B7[t]=k_(t))}});var V7=T((vU,P7)=>{l();var O7=v0(),j_=n2(),H_=s2()(!1),K_=f2()("IE_PROTO");P7.exports=function(t,e){var a=j_(t),r=0,i=[],d;for(d in a)d!=K_&&O7(a,d)&&i.push(d);for(;e.length>r;)O7(a,d=e[r++])&&(~H_(i,d)||i.push(d));return i}});var E6=T((gU,U7)=>{l();U7.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var C6=T((xU,R7)=>{l();var z_=V7(),$_=E6();R7.exports=Object.keys||function(e){return z_(e,$_)}});var L7=T((wU,F7)=>{l();var G_=m0(),Y_=vi(),W_=C6();F7.exports=bi()?Object.defineProperties:function(e,a){Y_(e);for(var r=W_(a),i=r.length,d=0,n;i>d;)G_.f(e,n=r[d++],a[n]);return e}});var j7=T((IU,k7)=>{l();var Q7=fr().document;k7.exports=Q7&&Q7.documentElement});var z7=T((EU,K7)=>{l();var J_=vi(),X_=L7(),H7=E6(),Z_=f2()("IE_PROTO"),N6=function(){},D6="prototype",o2=function(){var t=Yp()("iframe"),e=H7.length,a="<",r=">",i;for(t.style.display="none",j7().appendChild(t),t.src="javascript:",i=t.contentWindow.document,i.open(),i.write(a+"script"+r+"document.F=Object"+a+"/script"+r),i.close(),o2=i.F;e--;)delete o2[D6][H7[e]];return o2()};K7.exports=Object.create||function(e,a){var r;return e!==null?(N6[D6]=J_(e),r=new N6,N6[D6]=null,r[Z_]=e):r=o2(),a===void 0?r:X_(r,a)}});var M6=T((NU,G7)=>{l();var eI=m0().f,tI=v0(),$7=Gt()("toStringTag");G7.exports=function(t,e,a){t&&!tI(t=a?t:t.prototype,$7)&&eI(t,$7,{configurable:!0,value:e})}});var J7=T((MU,W7)=>{"use strict";l();var aI=z7(),rI=Wp(),iI=M6(),Y7={};or()(Y7,Gt()("iterator"),function(){return this});W7.exports=function(t,e,a){t.prototype=aI(Y7,{next:rI(1,a)}),iI(t,e+" Iterator")}});var el=T((BU,Z7)=>{l();var dI=v0(),pI=dn(),X7=f2()("IE_PROTO"),nI=Object.prototype;Z7.exports=Object.getPrototypeOf||function(t){return t=pI(t),dI(t,X7)?t[X7]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?nI:null}});var nl=T((OU,pl)=>{"use strict";l();var tl=pn(),T6=Bt(),sI=b0(),al=or(),rl=p2(),fI=J7(),oI=M6(),lI=el(),B0=Gt()("iterator"),B6=!([].keys&&"next"in[].keys()),uI="@@iterator",il="keys",l2="values",dl=function(){return this};pl.exports=function(t,e,a,r,i,d,n){fI(a,e,r);var f=function(oe){if(!B6&&oe in S)return S[oe];switch(oe){case il:return function(){return new a(this,oe)};case l2:return function(){return new a(this,oe)}}return function(){return new a(this,oe)}},h=e+" Iterator",v=i==l2,I=!1,S=t.prototype,O=S[B0]||S[uI]||i&&S[i],R=O||f(i),V=i?v?f("entries"):R:void 0,L=e=="Array"&&S.entries||O,$,X,ie;if(L&&(ie=lI(L.call(new t)),ie!==Object.prototype&&ie.next&&(oI(ie,h,!0),!tl&&typeof ie[B0]!="function"&&al(ie,B0,dl))),v&&O&&O.name!==l2&&(I=!0,R=function(){return O.call(this)}),(!tl||n)&&(B6||I||!S[B0])&&al(S,B0,R),rl[e]=R,rl[h]=dl,i)if($={values:v?R:f(l2),keys:d?R:f(il),entries:V},n)for(X in $)X in S||sI(S,X,$[X]);else T6(T6.P+T6.F*(B6||I),e,$);return $}});var ol=T((VU,fl)=>{"use strict";l();var q6=y0(),u2=E7(),sl=p2(),cI=n2();fl.exports=nl()(Array,"Array",function(t,e){this._t=cI(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,a=this._i++;return!t||a>=t.length?(this._t=void 0,u2(1)):e=="keys"?u2(0,a):e=="values"?u2(0,t[a]):u2(0,[a,t[a]])},"values");sl.Arguments=sl.Array;q6("keys");q6("values");q6("entries")});var xl=T(()=>{l();var ll=ol(),hI=C6(),mI=b0(),vI=fr(),ul=or(),gl=p2(),yl=Gt(),cl=yl("iterator"),hl=yl("toStringTag"),ml=gl.Array,vl={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(O6=hI(vl),c2=0;c2{"use strict";l();var bI=h0();Al.exports=function(t,e){return!!t&&bI(function(){e?t.call(null,function(){},1):t.call(null)})}});var wl=T(()=>{"use strict";l();var V6=Bt(),gI=xi()(0),yI=P0()([].forEach,!0);V6(V6.P+V6.F*!yI,"Array",{forEach:function(e){return gI(this,e,arguments[1])}})});var Il=T((zU,_l)=>{l();function xI(t){if(Array.isArray(t)){for(var e=0,a=new Array(t.length);e{l();function AI(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}Sl.exports=AI});var Nl=T((WU,Cl)=>{l();function wI(){throw new TypeError("Invalid attempt to spread non-iterable instance")}Cl.exports=wI});var Ml=T((XU,Dl)=>{l();var _I=Il(),II=El(),SI=Nl();function EI(t){return _I(t)||II(t)||SI()}Dl.exports=EI});var Tl=T(()=>{"use strict";l();var U6=Bt(),CI=xi()(1);U6(U6.P+U6.F*!P0()([].map,!0),"Array",{map:function(e){return CI(this,e,arguments[1])}})});var ql=T((rR,Bl)=>{l();var NI=Nd(),DI=yi();Bl.exports=function(t){return function(e,a){var r=String(DI(e)),i=NI(a),d=r.length,n,f;return i<0||i>=d?t?"":void 0:(n=r.charCodeAt(i),n<55296||n>56319||i+1===d||(f=r.charCodeAt(i+1))<56320||f>57343?t?r.charAt(i):n:t?r.slice(i,i+2):(n-55296<<10)+(f-56320)+65536)}}});var Pl=T((dR,Ol)=>{"use strict";l();var MI=ql()(!0);Ol.exports=function(t,e,a){return e+(a?MI(t,e).length:1)}});var Ul=T((nR,Vl)=>{l();var R6=g0(),TI=Gt()("toStringTag"),BI=R6(function(){return arguments}())=="Arguments",qI=function(t,e){try{return t[e]}catch{}};Vl.exports=function(t){var e,a,r;return t===void 0?"Undefined":t===null?"Null":typeof(a=qI(e=Object(t),TI))=="string"?a:BI?R6(e):(r=R6(e))=="Object"&&typeof e.callee=="function"?"Arguments":r}});var Fl=T((fR,Rl)=>{"use strict";l();var OI=Ul(),PI=RegExp.prototype.exec;Rl.exports=function(t,e){var a=t.exec;if(typeof a=="function"){var r=a.call(t,e);if(typeof r!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return r}if(OI(t)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return PI.call(t,e)}});var Ql=T((lR,Ll)=>{"use strict";l();var VI=vi();Ll.exports=function(){var t=VI(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}});var Q6=T((cR,jl)=>{"use strict";l();var UI=Ql(),h2=RegExp.prototype.exec,RI=String.prototype.replace,kl=h2,m2="lastIndex",F6=function(){var t=/a/,e=/b*/g;return h2.call(t,"a"),h2.call(e,"a"),t[m2]!==0||e[m2]!==0}(),L6=/()??/.exec("")[1]!==void 0,FI=F6||L6;FI&&(kl=function(e){var a=this,r,i,d,n;return L6&&(i=new RegExp("^"+a.source+"$(?!\\s)",UI.call(a))),F6&&(r=a[m2]),d=h2.call(a,e),F6&&d&&(a[m2]=a.global?d.index+d[0].length:r),L6&&d&&d.length>1&&RI.call(d[0],i,function(){for(n=1;n{"use strict";l();var Hl=Q6();Bt()({target:"RegExp",proto:!0,forced:Hl!==/./.exec},{exec:Hl})});var Gl=T((gR,$l)=>{"use strict";l();Kl();var LI=b0(),QI=or(),k6=h0(),kI=yi(),zl=Gt(),jI=Q6(),HI=zl("species"),KI=!k6(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$")!=="7"}),zI=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var a="ab".split(t);return a.length===2&&a[0]==="a"&&a[1]==="b"}();$l.exports=function(t,e,a){var r=zl(t),i=!k6(function(){var I={};return I[r]=function(){return 7},""[t](I)!=7}),d=i?!k6(function(){var I=!1,S=/a/;return S.exec=function(){return I=!0,null},t==="split"&&(S.constructor={},S.constructor[HI]=function(){return S}),S[r](""),!I}):void 0;if(!i||!d||t==="replace"&&!KI||t==="split"&&!zI){var n=/./[r],f=a(kI,r,""[t],function(S,O,R,V,L){return O.exec===jI?i&&!L?{done:!0,value:n.call(O,R,V)}:{done:!0,value:S.call(R,O,V)}:{done:!1}}),h=f[0],v=f[1];LI(String.prototype,t,h),QI(RegExp.prototype,r,e==2?function(I,S){return v.call(I,this,S)}:function(I){return v.call(I,this)})}}});var Wl=T(()=>{"use strict";l();var $I=vi(),GI=Dd(),YI=Pl(),Yl=Fl();Gl()("match",1,function(t,e,a,r){return[function(d){var n=t(this),f=d?.[e];return f!==void 0?f.call(d,n):new RegExp(d)[e](String(n))},function(i){var d=r(a,i,this);if(d.done)return d.value;var n=$I(i),f=String(this);if(!n.global)return Yl(n,f);var h=n.unicode;n.lastIndex=0;for(var v=[],I=0,S;(S=Yl(n,f))!==null;){var O=String(S[0]);v[I]=O,O===""&&(n.lastIndex=YI(f,GI(n.lastIndex),h)),I++}return I===0?null:v}]})});var Jl=T(()=>{"use strict";l();var j6=Bt(),WI=xi()(3);j6(j6.P+j6.F*!P0()([].some,!0),"Array",{some:function(e){return WI(this,e,arguments[1])}})});var Zl=T((ER,Xl)=>{l();Xl.exports=function(t,e,a){var r=a===void 0;switch(e.length){case 0:return r?t():t.call(a);case 1:return r?t(e[0]):t.call(a,e[0]);case 2:return r?t(e[0],e[1]):t.call(a,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(a,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(a,e[0],e[1],e[2],e[3])}return t.apply(a,e)}});var au=T((NR,tu)=>{"use strict";l();var JI=en(),XI=Fr(),ZI=Zl(),eu=[].slice,H6={},eS=function(t,e,a){if(!(e in H6)){for(var r=[],i=0;i{l();var ru=Bt();ru(ru.P,"Function",{bind:au()})});var z6=T((qR,iu)=>{l();function tS(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}iu.exports=tS});var nu=T(Wr=>{"use strict";l();Object.defineProperty(Wr,"__esModule",{value:!0});function aS(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Tl();Wl();Jl();K6();var ba=aS(z6()),$6=void 0,rS=function(e){var a=this;return ba(this,$6),e.map(function(r){var i=r.column,d=r.line;return ba(this,a),"".concat(d,":").concat(i)}.bind(this)).join("; ")}.bind(void 0),iS=function(e){var a=e.message,r=e.locations;return ba(this,$6),a+(r?" (".concat(rS(r),")"):"")}.bind(void 0),dS=function(e){return ba(this,$6),e.map(iS).join(` -`)}.bind(void 0),du=void 0,pS=/^\s*(query|mutation|subscription|\{)/,nS=function(e){return ba(this,du),e==="{"?"query":e}.bind(void 0),sS=function(e){ba(this,du);var a=e.match(pS);if(!a)throw new TypeError(`Invalid operation: -`.concat(e));return nS(a[1])}.bind(void 0),pu=void 0,fS=function(e){return ba(this,pu),e.kind==="OperationDefinition"&&e.operation==="subscription"}.bind(void 0),oS=function(e){return ba(this,pu),e.definitions.some(fS)}.bind(void 0),lS=void 0,uS=function(e){var a=e.query,r=e.variables;return ba(this,lS),r?{operation:a,variables:r}:{operation:a}}.bind(void 0),cS=void 0,hS=function(e){var a=e.operation,r=e.variables;return ba(this,cS),r?{query:a,variables:r}:{query:a}}.bind(void 0);Wr.errorsToString=dS;Wr.getOperationType=sS;Wr.hasSubscription=oS;Wr.requestFromCompat=uS;Wr.requestToCompat=hS});var lu=T(r4=>{"use strict";l();Object.defineProperty(r4,"__esModule",{value:!0});var J6=function(){function t(e,a){for(var r=0;r1,n=!1,f=arguments[1],h=f;return new i(function(v){return r.subscribe({next:function(I){var S=!n;if(n=!0,!S||d)try{h=a(h,I)}catch(O){return v.error(O)}else h=I},error:function(I){v.error(I)},complete:function(){if(!n&&!d)return v.error(new TypeError("Cannot reduce an empty sequence"));v.next(h),v.complete()}})})}},{key:"concat",value:function(){for(var a=this,r=arguments.length,i=Array(r),d=0;d=0&&n.splice(S,1),h()}});n.push(I)},error:function(v){d.error(v)},complete:function(){h()}});function h(){f.closed&&n.length===0&&d.complete()}return function(){n.forEach(function(v){return v.unsubscribe()}),f.unsubscribe()}})}},{key:Y6,value:function(){return this}}],[{key:"from",value:function(a){var r=typeof this=="function"?this:t;if(a==null)throw new TypeError(a+" is not an object");var i=b2(a,Y6);if(i){var d=i.call(a);if(Object(d)!==d)throw new TypeError(d+" is not an object");return vS(d)&&d.constructor===r?d:new r(function(n){return d.subscribe(n)})}if(e4("iterator")&&(i=b2(a,mS),i))return new r(function(n){v2(function(){if(!n.closed){var f=!0,h=!1,v=void 0;try{for(var I=i.call(a)[Symbol.iterator](),S;!(f=(S=I.next()).done);f=!0){var O=S.value;if(n.next(O),n.closed)return}}catch(R){h=!0,v=R}finally{try{!f&&I.return&&I.return()}finally{if(h)throw v}}n.complete()}})});if(Array.isArray(a))return new r(function(n){v2(function(){if(!n.closed){for(var f=0;f{l();uu.exports=lu().Observable});var mu=T(()=>{"use strict";l();var hu=Bt(),xS=s2()(!0);hu(hu.P,"Array",{includes:function(e){return xS(this,e,arguments.length>1?arguments[1]:void 0)}});y0()("includes")});var bu=T((HR,vu)=>{l();var AS=Fr(),wS=g0(),_S=Gt()("match");vu.exports=function(t){var e;return AS(t)&&((e=t[_S])!==void 0?!!e:wS(t)=="RegExp")}});var yu=T((zR,gu)=>{l();var IS=bu(),SS=yi();gu.exports=function(t,e,a){if(IS(e))throw TypeError("String#"+a+" doesn't accept regex!");return String(SS(t))}});var Au=T((GR,xu)=>{l();var ES=Gt()("match");xu.exports=function(t){var e=/./;try{"/./"[t](e)}catch{try{return e[ES]=!1,!"/./"[t](e)}catch{}}return!0}});var _u=T(()=>{"use strict";l();var i4=Bt(),CS=yu(),wu="includes";i4(i4.P+i4.F*Au()(wu),"String",{includes:function(e){return!!~CS(this,e,wu).indexOf(e,arguments.length>1?arguments[1]:void 0)}})});var Su=T((ZR,Iu)=>{l();function NS(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}Iu.exports=NS});var Cu=T((tF,Eu)=>{l();var DS=Su();function MS(t){for(var e=1;e{l();function TS(t,e){if(t==null)return{};var a={},r=Object.keys(t),i,d;for(d=0;d=0)&&(a[i]=t[i]);return a}Nu.exports=TS});var Tu=T((dF,Mu)=>{l();var BS=Du();function qS(t,e){if(t==null)return{};var a=BS(t,e),r,i;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(t);for(i=0;i=0)&&(!Object.prototype.propertyIsEnumerable.call(t,r)||(a[r]=t[r]))}return a}Mu.exports=qS});var qu=T(()=>{"use strict";l();var d4=Bt(),OS=s2()(!1),p4=[].indexOf,Bu=!!p4&&1/[1].indexOf(1,-0)<0;d4(d4.P+d4.F*(Bu||!P0()(p4)),"Array",{indexOf:function(e){return Bu?p4.apply(this,arguments)||0:OS(this,e,arguments[1])}})});var uc=T(za=>{"use strict";l();Object.defineProperty(za,"__esModule",{value:!0});function R0(t){return t&&typeof t=="object"&&"default"in t?t.default:t}oo();uo();mo();var n4=I7();Cp();xl();wl();var U0=R0(Ml()),s4=nu(),PS=R0(cu());mu();_u();var Xt=R0(Cu()),g2=R0(Tu());qu();var y2=y6();K6();var G=R0(z6()),VS=void 0,f4=function(e){var a=e.activeObservers,r=e.canceledObservers,i=g2(e,["activeObservers","canceledObservers"]);return G(this,VS),Xt({},i,{isActive:!1,activeObservers:[],canceledObservers:U0(a).concat(U0(r))})}.bind(void 0),o4=void 0,US=function(e,a){var r=this;return G(this,o4),function(i){return G(this,r),i[e]&&i[e](a)}.bind(this)}.bind(void 0),RS=function(e){var a=e.name;return G(this,o4),"on".concat(a)}.bind(void 0),l4=function(e,a){return G(this,o4),e.forEach(US(RS(a),a.payload))}.bind(void 0),FS=void 0,Uu=function(e,a){return G(this,FS),l4(e.canceledObservers,a),e}.bind(void 0),F0={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},L0=void 0,LS=function(e){return G(this,L0),{payload:e,name:F0.start}}.bind(void 0),QS=function(e){return G(this,L0),{payload:e,name:F0.result}}.bind(void 0),x2=function(e){return G(this,L0),{payload:e,name:F0.error}}.bind(void 0),kS=function(){return G(this,L0),{name:F0.cancel,payload:void 0}}.bind(void 0),jS=function(e){return G(this,L0),{payload:e,name:F0.abort}}.bind(void 0),Ru=void 0,HS=function(e){return G(this,Ru),Xt({},e,{canceledObservers:[]})}.bind(void 0),Q0=function(e){return G(this,Ru),e.canceledObservers.length>0?HS(Uu(e,kS())):e}.bind(void 0),KS=void 0,Fu=function(e,a,r){return G(this,KS),e.findIndex(n4.hasIn([a],r))}.bind(void 0),zS=void 0,u4=function(e){var a=this;return G(this,zS),function(r){return G(this,a),y2.replace(Fu(r,"request",e.request),[e],r)}.bind(this)}.bind(void 0),$S=void 0,k0=function(e){var a=this;return G(this,$S),function(r){return G(this,a),y2.remove(Fu(r,"request",e.request),1,r)}.bind(this)}.bind(void 0),GS=void 0,ja=function(e,a){return G(this,GS),e.notifiers=a(e.notifiers),e}.bind(void 0),YS=void 0,Ha=function(e,a){return G(this,YS),ja(e,u4(a)),a}.bind(void 0),Zt={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},Lu=void 0,WS=function(e){var a=e.activeObservers,r=e.canceledObservers;return G(this,Lu),U0(a).concat(U0(r))}.bind(void 0),Qu=function(e,a){return G(this,Lu),l4(WS(e),a),e}.bind(void 0),JS=void 0,c4=function(e,a,r){return G(this,JS),ja(e,k0(Qu(a,jS(r))))}.bind(void 0),XS=void 0,A2=function(e,a,r){return G(this,XS),e.find(n4.hasIn([a],r))}.bind(void 0),ZS=void 0,w2=function(e,a){return G(this,ZS),l4(e.activeObservers,a),e}.bind(void 0),eE=void 0,ku=function(e,a){return G(this,eE),w2(e,QS(a))}.bind(void 0),tE=void 0,ju=function(e){return G(this,tE),w2(e,LS(e))}.bind(void 0),aE=void 0,Hu=function(e){return G(this,aE),Q0(Xt({},e,{isActive:!0,requestStatus:Zt.pending,subscriptionId:void 0}))}.bind(void 0),rE=void 0,Ku=function(e,a){return G(this,rE),e.receive("ok",a.onSucceed).receive("error",a.onError).receive("timeout",a.onTimeout)}.bind(void 0),h4=void 0,iE=function(e,a){var r=this;return G(this,h4),function(i){var d=this;return G(this,r),function(){G(this,d);var n=A2(e.notifiers,"request",a);if(n){for(var f=arguments.length,h=new Array(f),v=0;v0}.bind(void 0),FE=function(e){var a=this;return G(this,ga),function(){G(this,a),RE(e)&&rc(e)}.bind(this)}.bind(void 0),LE="__absinthe__:control",QE=function(e){G(this,ga);var a={phoenixSocket:e,channel:e.channel(LE),channelJoinCreated:!1,notifiers:[]};return e.onOpen(FE(a)),e.onClose(UE(a)),e.onMessage(qE(a)),a}.bind(void 0),kE=void 0,jE=function(e,a){var r=e.activeObservers,i=g2(e,["activeObservers"]);return G(this,kE),Xt({},i,{activeObservers:U0(r).concat([a]),isActive:!0})}.bind(void 0),HE=void 0,pc=function(e,a,r){return G(this,HE),Ha(e,jE(a,r))}.bind(void 0),nc=void 0,KE=function(e,a){return G(this,nc),{operationType:a,request:e,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:Zt.pending,subscriptionId:void 0}}.bind(void 0),zE=function(e){return G(this,nc),KE(e,s4.getOperationType(e.operation))}.bind(void 0),$E=void 0,GE=function(e){return G(this,$E),e.isActive?e:Xt({},e,{isActive:!0})}.bind(void 0),Xr=void 0,YE=function(e){G(this,Xr),e.phoenixSocket.isConnected()?rc(e):e.phoenixSocket.connect()}.bind(void 0),WE=function(e,a){G(this,Xr);var r=zE(a);return ja(e,y2.append([r])),e.channelJoinCreated?ac(e,r):YE(e),r}.bind(void 0),Vu=function(e,a){return G(this,Xr),Ha(e,GE(a))}.bind(void 0),JE=function(e,a){return G(this,Xr),a.requestStatus===Zt.sending?Vu(e,Q0(a)):Vu(e,a)}.bind(void 0),XE=function(e,a){return G(this,Xr),a.isActive?a:JE(e,a)}.bind(void 0),ZE=function(e,a){G(this,Xr);var r=A2(e.notifiers,"request",a);return r&&XE(e,r)}.bind(void 0),eC=function(e,a){return G(this,Xr),ZE(e,a)||WE(e,a)}.bind(void 0),S2=void 0,tC=function(e,a,r,i){var d=this,n=a.request;return G(this,S2),function(){G(this,d);var f=A2(e.notifiers,"request",n);i(e,f,f?r:void 0)}.bind(this)}.bind(void 0),aC=function(e,a){var r=this,i=e.operationType;return G(this,S2),function(d){G(this,r),a.next(d),i!=="subscription"&&a.complete()}.bind(this)}.bind(void 0),rC=function(e,a,r){return G(this,S2),Xt({},a,{onAbort:r.error.bind(r),onResult:aC(e,r)})}.bind(void 0),iC=function(e,a){var r=this,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},d=i.unsubscribe,n=g2(i,["unsubscribe"]);return G(this,S2),new PS(function(f){G(this,r);var h=rC(a,n,f);return pc(e,a,h),d&&tC(e,a,h,d)}.bind(this))}.bind(void 0),sc=void 0,dC=function(e,a){return G(this,sc),y2.remove(e.indexOf(a),1,e)}.bind(void 0),pC=function(e,a){var r=e.activeObservers,i=g2(e,["activeObservers"]);return G(this,sc),Xt({},i,{activeObservers:dC(r,a)})}.bind(void 0),fc=void 0,nC=function(e,a){if(G(this,fc),e.activeObservers.includes(a))return e;throw new Error("Observer is not attached to notifier")}.bind(void 0),oc=function(e,a,r){return G(this,fc),ja(e,u4(pC(nC(a,r),r)))}.bind(void 0),lc=void 0,sC=function(e,a,r){return G(this,lc),a.activeObservers.length===1?tc(e,a):oc(e,a,r)}.bind(void 0),fC=function(e,a,r){return G(this,lc),a.isActive?sC(e,a,r):e}.bind(void 0);za.cancel=tc;za.create=QE;za.observe=pc;za.send=eC;za.toObservable=iC;za.unobserve=oc;za.unobserveOrCancel=fC});var m4=T((uF,H0)=>{l();var{Socket:oC}=Cp(),lC=mf(),j0=uc();H0.exports.absintheCreate=function(t){let e=new oC(t,{transport:lC});return j0.create(e)};H0.exports.absintheSend=function(t,e){return j0.send(t,{operation:e})};H0.exports.absintheObserve=function(t,e,a){return new Promise((r,i)=>{j0.observe(t,e,{onStart:function(){r(e)},onError:function(d){j0.cancel(t,e),i(d)},onResult:function(d){a(d)}})})};H0.exports.absintheCancel=function(t,e){j0.cancel(t,e)}});var Ic=T((bF,mC)=>{mC.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var xa=T((Sc,g4)=>{l();(function(t,e){"use strict";function a(C,p){if(!C)throw new Error(p||"Assertion failed")}function r(C,p){C.super_=p;var o=function(){};o.prototype=p.prototype,C.prototype=new o,C.prototype.constructor=C}function i(C,p,o){if(i.isBN(C))return C;this.negative=0,this.words=null,this.length=0,this.red=null,C!==null&&((p==="le"||p==="be")&&(o=p,p=10),this._init(C||0,p||10,o||"be"))}typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var d;try{d=require("buffer").Buffer}catch{}i.isBN=function(p){return p instanceof i?!0:p!==null&&typeof p=="object"&&p.constructor.wordSize===i.wordSize&&Array.isArray(p.words)},i.max=function(p,o){return p.cmp(o)>0?p:o},i.min=function(p,o){return p.cmp(o)<0?p:o},i.prototype._init=function(p,o,c){if(typeof p=="number")return this._initNumber(p,o,c);if(typeof p=="object")return this._initArray(p,o,c);o==="hex"&&(o=16),a(o===(o|0)&&o>=2&&o<=36),p=p.toString().replace(/\s+/g,"");var g=0;p[0]==="-"&&g++,o===16?this._parseHex(p,g):this._parseBase(p,o,g),p[0]==="-"&&(this.negative=1),this.strip(),c==="le"&&this._initArray(this.toArray(),o,c)},i.prototype._initNumber=function(p,o,c){p<0&&(this.negative=1,p=-p),p<67108864?(this.words=[p&67108863],this.length=1):p<4503599627370496?(this.words=[p&67108863,p/67108864&67108863],this.length=2):(a(p<9007199254740992),this.words=[p&67108863,p/67108864&67108863,1],this.length=3),c==="le"&&this._initArray(this.toArray(),o,c)},i.prototype._initArray=function(p,o,c){if(a(typeof p.length=="number"),p.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(p.length/3),this.words=new Array(this.length);for(var g=0;g=0;g-=3)D=p[g]|p[g-1]<<8|p[g-2]<<16,this.words[A]|=D<>>26-P&67108863,P+=24,P>=26&&(P-=26,A++);else if(c==="le")for(g=0,A=0;g>>26-P&67108863,P+=24,P>=26&&(P-=26,A++);return this.strip()};function n(C,p,o){for(var c=0,g=Math.min(C.length,o),A=p;A=49&&D<=54?c|=D-49+10:D>=17&&D<=22?c|=D-17+10:c|=D&15}return c}i.prototype._parseHex=function(p,o){this.length=Math.ceil((p.length-o)/6),this.words=new Array(this.length);for(var c=0;c=o;c-=6)A=n(p,c,c+6),this.words[g]|=A<>>26-D&4194303,D+=24,D>=26&&(D-=26,g++);c+6!==o&&(A=n(p,o,c+6),this.words[g]|=A<>>26-D&4194303),this.strip()};function f(C,p,o,c){for(var g=0,A=Math.min(C.length,o),D=p;D=49?g+=P-49+10:P>=17?g+=P-17+10:g+=P}return g}i.prototype._parseBase=function(p,o,c){this.words=[0],this.length=1;for(var g=0,A=1;A<=67108863;A*=o)g++;g--,A=A/o|0;for(var D=p.length-c,P=D%g,M=Math.min(D,D-P)+c,u=0,B=c;B1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var h=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],v=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],I=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(p,o){p=p||10,o=o|0||1;var c;if(p===16||p==="hex"){c="";for(var g=0,A=0,D=0;D>>24-g&16777215,A!==0||D!==this.length-1?c=h[6-M.length]+M+c:c=M+c,g+=2,g>=26&&(g-=26,D--)}for(A!==0&&(c=A.toString(16)+c);c.length%o!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(p===(p|0)&&p>=2&&p<=36){var u=v[p],B=I[p];c="";var ae=this.clone();for(ae.negative=0;!ae.isZero();){var se=ae.modn(B).toString(p);ae=ae.idivn(B),ae.isZero()?c=se+c:c=h[u-se.length]+se+c}for(this.isZero()&&(c="0"+c);c.length%o!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}a(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var p=this.words[0];return this.length===2?p+=this.words[1]*67108864:this.length===3&&this.words[2]===1?p+=4503599627370496+this.words[1]*67108864:this.length>2&&a(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-p:p},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(p,o){return a(typeof d<"u"),this.toArrayLike(d,p,o)},i.prototype.toArray=function(p,o){return this.toArrayLike(Array,p,o)},i.prototype.toArrayLike=function(p,o,c){var g=this.byteLength(),A=c||Math.max(1,g);a(g<=A,"byte array longer than desired length"),a(A>0,"Requested array length <= 0"),this.strip();var D=o==="le",P=new p(A),M,u,B=this.clone();if(D){for(u=0;!B.isZero();u++)M=B.andln(255),B.iushrn(8),P[u]=M;for(;u=4096&&(c+=13,o>>>=13),o>=64&&(c+=7,o>>>=7),o>=8&&(c+=4,o>>>=4),o>=2&&(c+=2,o>>>=2),c+o},i.prototype._zeroBits=function(p){if(p===0)return 26;var o=p,c=0;return(o&8191)===0&&(c+=13,o>>>=13),(o&127)===0&&(c+=7,o>>>=7),(o&15)===0&&(c+=4,o>>>=4),(o&3)===0&&(c+=2,o>>>=2),(o&1)===0&&c++,c},i.prototype.bitLength=function(){var p=this.words[this.length-1],o=this._countBits(p);return(this.length-1)*26+o};function S(C){for(var p=new Array(C.bitLength()),o=0;o>>g}return p}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var p=0,o=0;op.length?this.clone().ior(p):p.clone().ior(this)},i.prototype.uor=function(p){return this.length>p.length?this.clone().iuor(p):p.clone().iuor(this)},i.prototype.iuand=function(p){var o;this.length>p.length?o=p:o=this;for(var c=0;cp.length?this.clone().iand(p):p.clone().iand(this)},i.prototype.uand=function(p){return this.length>p.length?this.clone().iuand(p):p.clone().iuand(this)},i.prototype.iuxor=function(p){var o,c;this.length>p.length?(o=this,c=p):(o=p,c=this);for(var g=0;gp.length?this.clone().ixor(p):p.clone().ixor(this)},i.prototype.uxor=function(p){return this.length>p.length?this.clone().iuxor(p):p.clone().iuxor(this)},i.prototype.inotn=function(p){a(typeof p=="number"&&p>=0);var o=Math.ceil(p/26)|0,c=p%26;this._expand(o),c>0&&o--;for(var g=0;g0&&(this.words[g]=~this.words[g]&67108863>>26-c),this.strip()},i.prototype.notn=function(p){return this.clone().inotn(p)},i.prototype.setn=function(p,o){a(typeof p=="number"&&p>=0);var c=p/26|0,g=p%26;return this._expand(c+1),o?this.words[c]=this.words[c]|1<p.length?(c=this,g=p):(c=p,g=this);for(var A=0,D=0;D>>26;for(;A!==0&&D>>26;if(this.length=c.length,A!==0)this.words[this.length]=A,this.length++;else if(c!==this)for(;Dp.length?this.clone().iadd(p):p.clone().iadd(this)},i.prototype.isub=function(p){if(p.negative!==0){p.negative=0;var o=this.iadd(p);return p.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(p),this.negative=1,this._normSign();var c=this.cmp(p);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var g,A;c>0?(g=this,A=p):(g=p,A=this);for(var D=0,P=0;P>26,this.words[P]=o&67108863;for(;D!==0&&P>26,this.words[P]=o&67108863;if(D===0&&P>>26,ae=M&67108863,se=Math.min(u,p.length-1),J=Math.max(0,u-C.length+1);J<=se;J++){var ue=u-J|0;g=C.words[ue]|0,A=p.words[J]|0,D=g*A+ae,B+=D/67108864|0,ae=D&67108863}o.words[u]=ae|0,M=B|0}return M!==0?o.words[u]=M|0:o.length--,o.strip()}var R=function(p,o,c){var g=p.words,A=o.words,D=c.words,P=0,M,u,B,ae=g[0]|0,se=ae&8191,J=ae>>>13,ue=g[1]|0,Z=ue&8191,b=ue>>>13,z=g[2]|0,k=z&8191,j=z>>>13,ne=g[3]|0,re=ne&8191,de=ne>>>13,he=g[4]|0,Ce=he&8191,fe=he>>>13,Ue=g[5]|0,y1=Ue&8191,x1=Ue>>>13,lt=g[6]|0,s1=lt&8191,A1=lt>>>13,Lt=g[7]|0,u1=Lt&8191,f1=Lt>>>13,Qt=g[8]|0,o1=Qt&8191,c1=Qt>>>13,kt=g[9]|0,w1=kt&8191,S1=kt>>>13,jt=A[0]|0,h1=jt&8191,l1=jt>>>13,wt=A[1]|0,r1=wt&8191,d1=wt>>>13,Dt=A[2]|0,p1=Dt&8191,n1=Dt>>>13,Ht=A[3]|0,_1=Ht&8191,E1=Ht>>>13,Ma=A[4]|0,We=Ma&8191,e1=Ma>>>13,ht=A[5]|0,m1=ht&8191,v1=ht>>>13,na=A[6]|0,C1=na&8191,Ke=na>>>13,sa=A[7]|0,m=sa&8191,w=sa>>>13,_=A[8]|0,s=_&8191,E=_>>>13,F=A[9]|0,U=F&8191,K=F>>>13;c.negative=p.negative^o.negative,c.length=19,M=Math.imul(se,h1),u=Math.imul(se,l1),u=u+Math.imul(J,h1)|0,B=Math.imul(J,l1);var te=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(te>>>26)|0,te&=67108863,M=Math.imul(Z,h1),u=Math.imul(Z,l1),u=u+Math.imul(b,h1)|0,B=Math.imul(b,l1),M=M+Math.imul(se,r1)|0,u=u+Math.imul(se,d1)|0,u=u+Math.imul(J,r1)|0,B=B+Math.imul(J,d1)|0;var ge=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(ge>>>26)|0,ge&=67108863,M=Math.imul(k,h1),u=Math.imul(k,l1),u=u+Math.imul(j,h1)|0,B=Math.imul(j,l1),M=M+Math.imul(Z,r1)|0,u=u+Math.imul(Z,d1)|0,u=u+Math.imul(b,r1)|0,B=B+Math.imul(b,d1)|0,M=M+Math.imul(se,p1)|0,u=u+Math.imul(se,n1)|0,u=u+Math.imul(J,p1)|0,B=B+Math.imul(J,n1)|0;var le=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(le>>>26)|0,le&=67108863,M=Math.imul(re,h1),u=Math.imul(re,l1),u=u+Math.imul(de,h1)|0,B=Math.imul(de,l1),M=M+Math.imul(k,r1)|0,u=u+Math.imul(k,d1)|0,u=u+Math.imul(j,r1)|0,B=B+Math.imul(j,d1)|0,M=M+Math.imul(Z,p1)|0,u=u+Math.imul(Z,n1)|0,u=u+Math.imul(b,p1)|0,B=B+Math.imul(b,n1)|0,M=M+Math.imul(se,_1)|0,u=u+Math.imul(se,E1)|0,u=u+Math.imul(J,_1)|0,B=B+Math.imul(J,E1)|0;var Fe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,M=Math.imul(Ce,h1),u=Math.imul(Ce,l1),u=u+Math.imul(fe,h1)|0,B=Math.imul(fe,l1),M=M+Math.imul(re,r1)|0,u=u+Math.imul(re,d1)|0,u=u+Math.imul(de,r1)|0,B=B+Math.imul(de,d1)|0,M=M+Math.imul(k,p1)|0,u=u+Math.imul(k,n1)|0,u=u+Math.imul(j,p1)|0,B=B+Math.imul(j,n1)|0,M=M+Math.imul(Z,_1)|0,u=u+Math.imul(Z,E1)|0,u=u+Math.imul(b,_1)|0,B=B+Math.imul(b,E1)|0,M=M+Math.imul(se,We)|0,u=u+Math.imul(se,e1)|0,u=u+Math.imul(J,We)|0,B=B+Math.imul(J,e1)|0;var ve=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(ve>>>26)|0,ve&=67108863,M=Math.imul(y1,h1),u=Math.imul(y1,l1),u=u+Math.imul(x1,h1)|0,B=Math.imul(x1,l1),M=M+Math.imul(Ce,r1)|0,u=u+Math.imul(Ce,d1)|0,u=u+Math.imul(fe,r1)|0,B=B+Math.imul(fe,d1)|0,M=M+Math.imul(re,p1)|0,u=u+Math.imul(re,n1)|0,u=u+Math.imul(de,p1)|0,B=B+Math.imul(de,n1)|0,M=M+Math.imul(k,_1)|0,u=u+Math.imul(k,E1)|0,u=u+Math.imul(j,_1)|0,B=B+Math.imul(j,E1)|0,M=M+Math.imul(Z,We)|0,u=u+Math.imul(Z,e1)|0,u=u+Math.imul(b,We)|0,B=B+Math.imul(b,e1)|0,M=M+Math.imul(se,m1)|0,u=u+Math.imul(se,v1)|0,u=u+Math.imul(J,m1)|0,B=B+Math.imul(J,v1)|0;var De=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(De>>>26)|0,De&=67108863,M=Math.imul(s1,h1),u=Math.imul(s1,l1),u=u+Math.imul(A1,h1)|0,B=Math.imul(A1,l1),M=M+Math.imul(y1,r1)|0,u=u+Math.imul(y1,d1)|0,u=u+Math.imul(x1,r1)|0,B=B+Math.imul(x1,d1)|0,M=M+Math.imul(Ce,p1)|0,u=u+Math.imul(Ce,n1)|0,u=u+Math.imul(fe,p1)|0,B=B+Math.imul(fe,n1)|0,M=M+Math.imul(re,_1)|0,u=u+Math.imul(re,E1)|0,u=u+Math.imul(de,_1)|0,B=B+Math.imul(de,E1)|0,M=M+Math.imul(k,We)|0,u=u+Math.imul(k,e1)|0,u=u+Math.imul(j,We)|0,B=B+Math.imul(j,e1)|0,M=M+Math.imul(Z,m1)|0,u=u+Math.imul(Z,v1)|0,u=u+Math.imul(b,m1)|0,B=B+Math.imul(b,v1)|0,M=M+Math.imul(se,C1)|0,u=u+Math.imul(se,Ke)|0,u=u+Math.imul(J,C1)|0,B=B+Math.imul(J,Ke)|0;var Me=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,M=Math.imul(u1,h1),u=Math.imul(u1,l1),u=u+Math.imul(f1,h1)|0,B=Math.imul(f1,l1),M=M+Math.imul(s1,r1)|0,u=u+Math.imul(s1,d1)|0,u=u+Math.imul(A1,r1)|0,B=B+Math.imul(A1,d1)|0,M=M+Math.imul(y1,p1)|0,u=u+Math.imul(y1,n1)|0,u=u+Math.imul(x1,p1)|0,B=B+Math.imul(x1,n1)|0,M=M+Math.imul(Ce,_1)|0,u=u+Math.imul(Ce,E1)|0,u=u+Math.imul(fe,_1)|0,B=B+Math.imul(fe,E1)|0,M=M+Math.imul(re,We)|0,u=u+Math.imul(re,e1)|0,u=u+Math.imul(de,We)|0,B=B+Math.imul(de,e1)|0,M=M+Math.imul(k,m1)|0,u=u+Math.imul(k,v1)|0,u=u+Math.imul(j,m1)|0,B=B+Math.imul(j,v1)|0,M=M+Math.imul(Z,C1)|0,u=u+Math.imul(Z,Ke)|0,u=u+Math.imul(b,C1)|0,B=B+Math.imul(b,Ke)|0,M=M+Math.imul(se,m)|0,u=u+Math.imul(se,w)|0,u=u+Math.imul(J,m)|0,B=B+Math.imul(J,w)|0;var qe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(qe>>>26)|0,qe&=67108863,M=Math.imul(o1,h1),u=Math.imul(o1,l1),u=u+Math.imul(c1,h1)|0,B=Math.imul(c1,l1),M=M+Math.imul(u1,r1)|0,u=u+Math.imul(u1,d1)|0,u=u+Math.imul(f1,r1)|0,B=B+Math.imul(f1,d1)|0,M=M+Math.imul(s1,p1)|0,u=u+Math.imul(s1,n1)|0,u=u+Math.imul(A1,p1)|0,B=B+Math.imul(A1,n1)|0,M=M+Math.imul(y1,_1)|0,u=u+Math.imul(y1,E1)|0,u=u+Math.imul(x1,_1)|0,B=B+Math.imul(x1,E1)|0,M=M+Math.imul(Ce,We)|0,u=u+Math.imul(Ce,e1)|0,u=u+Math.imul(fe,We)|0,B=B+Math.imul(fe,e1)|0,M=M+Math.imul(re,m1)|0,u=u+Math.imul(re,v1)|0,u=u+Math.imul(de,m1)|0,B=B+Math.imul(de,v1)|0,M=M+Math.imul(k,C1)|0,u=u+Math.imul(k,Ke)|0,u=u+Math.imul(j,C1)|0,B=B+Math.imul(j,Ke)|0,M=M+Math.imul(Z,m)|0,u=u+Math.imul(Z,w)|0,u=u+Math.imul(b,m)|0,B=B+Math.imul(b,w)|0,M=M+Math.imul(se,s)|0,u=u+Math.imul(se,E)|0,u=u+Math.imul(J,s)|0,B=B+Math.imul(J,E)|0;var Te=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Te>>>26)|0,Te&=67108863,M=Math.imul(w1,h1),u=Math.imul(w1,l1),u=u+Math.imul(S1,h1)|0,B=Math.imul(S1,l1),M=M+Math.imul(o1,r1)|0,u=u+Math.imul(o1,d1)|0,u=u+Math.imul(c1,r1)|0,B=B+Math.imul(c1,d1)|0,M=M+Math.imul(u1,p1)|0,u=u+Math.imul(u1,n1)|0,u=u+Math.imul(f1,p1)|0,B=B+Math.imul(f1,n1)|0,M=M+Math.imul(s1,_1)|0,u=u+Math.imul(s1,E1)|0,u=u+Math.imul(A1,_1)|0,B=B+Math.imul(A1,E1)|0,M=M+Math.imul(y1,We)|0,u=u+Math.imul(y1,e1)|0,u=u+Math.imul(x1,We)|0,B=B+Math.imul(x1,e1)|0,M=M+Math.imul(Ce,m1)|0,u=u+Math.imul(Ce,v1)|0,u=u+Math.imul(fe,m1)|0,B=B+Math.imul(fe,v1)|0,M=M+Math.imul(re,C1)|0,u=u+Math.imul(re,Ke)|0,u=u+Math.imul(de,C1)|0,B=B+Math.imul(de,Ke)|0,M=M+Math.imul(k,m)|0,u=u+Math.imul(k,w)|0,u=u+Math.imul(j,m)|0,B=B+Math.imul(j,w)|0,M=M+Math.imul(Z,s)|0,u=u+Math.imul(Z,E)|0,u=u+Math.imul(b,s)|0,B=B+Math.imul(b,E)|0,M=M+Math.imul(se,U)|0,u=u+Math.imul(se,K)|0,u=u+Math.imul(J,U)|0,B=B+Math.imul(J,K)|0;var Oe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,M=Math.imul(w1,r1),u=Math.imul(w1,d1),u=u+Math.imul(S1,r1)|0,B=Math.imul(S1,d1),M=M+Math.imul(o1,p1)|0,u=u+Math.imul(o1,n1)|0,u=u+Math.imul(c1,p1)|0,B=B+Math.imul(c1,n1)|0,M=M+Math.imul(u1,_1)|0,u=u+Math.imul(u1,E1)|0,u=u+Math.imul(f1,_1)|0,B=B+Math.imul(f1,E1)|0,M=M+Math.imul(s1,We)|0,u=u+Math.imul(s1,e1)|0,u=u+Math.imul(A1,We)|0,B=B+Math.imul(A1,e1)|0,M=M+Math.imul(y1,m1)|0,u=u+Math.imul(y1,v1)|0,u=u+Math.imul(x1,m1)|0,B=B+Math.imul(x1,v1)|0,M=M+Math.imul(Ce,C1)|0,u=u+Math.imul(Ce,Ke)|0,u=u+Math.imul(fe,C1)|0,B=B+Math.imul(fe,Ke)|0,M=M+Math.imul(re,m)|0,u=u+Math.imul(re,w)|0,u=u+Math.imul(de,m)|0,B=B+Math.imul(de,w)|0,M=M+Math.imul(k,s)|0,u=u+Math.imul(k,E)|0,u=u+Math.imul(j,s)|0,B=B+Math.imul(j,E)|0,M=M+Math.imul(Z,U)|0,u=u+Math.imul(Z,K)|0,u=u+Math.imul(b,U)|0,B=B+Math.imul(b,K)|0;var Ve=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,M=Math.imul(w1,p1),u=Math.imul(w1,n1),u=u+Math.imul(S1,p1)|0,B=Math.imul(S1,n1),M=M+Math.imul(o1,_1)|0,u=u+Math.imul(o1,E1)|0,u=u+Math.imul(c1,_1)|0,B=B+Math.imul(c1,E1)|0,M=M+Math.imul(u1,We)|0,u=u+Math.imul(u1,e1)|0,u=u+Math.imul(f1,We)|0,B=B+Math.imul(f1,e1)|0,M=M+Math.imul(s1,m1)|0,u=u+Math.imul(s1,v1)|0,u=u+Math.imul(A1,m1)|0,B=B+Math.imul(A1,v1)|0,M=M+Math.imul(y1,C1)|0,u=u+Math.imul(y1,Ke)|0,u=u+Math.imul(x1,C1)|0,B=B+Math.imul(x1,Ke)|0,M=M+Math.imul(Ce,m)|0,u=u+Math.imul(Ce,w)|0,u=u+Math.imul(fe,m)|0,B=B+Math.imul(fe,w)|0,M=M+Math.imul(re,s)|0,u=u+Math.imul(re,E)|0,u=u+Math.imul(de,s)|0,B=B+Math.imul(de,E)|0,M=M+Math.imul(k,U)|0,u=u+Math.imul(k,K)|0,u=u+Math.imul(j,U)|0,B=B+Math.imul(j,K)|0;var Pe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,M=Math.imul(w1,_1),u=Math.imul(w1,E1),u=u+Math.imul(S1,_1)|0,B=Math.imul(S1,E1),M=M+Math.imul(o1,We)|0,u=u+Math.imul(o1,e1)|0,u=u+Math.imul(c1,We)|0,B=B+Math.imul(c1,e1)|0,M=M+Math.imul(u1,m1)|0,u=u+Math.imul(u1,v1)|0,u=u+Math.imul(f1,m1)|0,B=B+Math.imul(f1,v1)|0,M=M+Math.imul(s1,C1)|0,u=u+Math.imul(s1,Ke)|0,u=u+Math.imul(A1,C1)|0,B=B+Math.imul(A1,Ke)|0,M=M+Math.imul(y1,m)|0,u=u+Math.imul(y1,w)|0,u=u+Math.imul(x1,m)|0,B=B+Math.imul(x1,w)|0,M=M+Math.imul(Ce,s)|0,u=u+Math.imul(Ce,E)|0,u=u+Math.imul(fe,s)|0,B=B+Math.imul(fe,E)|0,M=M+Math.imul(re,U)|0,u=u+Math.imul(re,K)|0,u=u+Math.imul(de,U)|0,B=B+Math.imul(de,K)|0;var xe=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(xe>>>26)|0,xe&=67108863,M=Math.imul(w1,We),u=Math.imul(w1,e1),u=u+Math.imul(S1,We)|0,B=Math.imul(S1,e1),M=M+Math.imul(o1,m1)|0,u=u+Math.imul(o1,v1)|0,u=u+Math.imul(c1,m1)|0,B=B+Math.imul(c1,v1)|0,M=M+Math.imul(u1,C1)|0,u=u+Math.imul(u1,Ke)|0,u=u+Math.imul(f1,C1)|0,B=B+Math.imul(f1,Ke)|0,M=M+Math.imul(s1,m)|0,u=u+Math.imul(s1,w)|0,u=u+Math.imul(A1,m)|0,B=B+Math.imul(A1,w)|0,M=M+Math.imul(y1,s)|0,u=u+Math.imul(y1,E)|0,u=u+Math.imul(x1,s)|0,B=B+Math.imul(x1,E)|0,M=M+Math.imul(Ce,U)|0,u=u+Math.imul(Ce,K)|0,u=u+Math.imul(fe,U)|0,B=B+Math.imul(fe,K)|0;var Ee=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,M=Math.imul(w1,m1),u=Math.imul(w1,v1),u=u+Math.imul(S1,m1)|0,B=Math.imul(S1,v1),M=M+Math.imul(o1,C1)|0,u=u+Math.imul(o1,Ke)|0,u=u+Math.imul(c1,C1)|0,B=B+Math.imul(c1,Ke)|0,M=M+Math.imul(u1,m)|0,u=u+Math.imul(u1,w)|0,u=u+Math.imul(f1,m)|0,B=B+Math.imul(f1,w)|0,M=M+Math.imul(s1,s)|0,u=u+Math.imul(s1,E)|0,u=u+Math.imul(A1,s)|0,B=B+Math.imul(A1,E)|0,M=M+Math.imul(y1,U)|0,u=u+Math.imul(y1,K)|0,u=u+Math.imul(x1,U)|0,B=B+Math.imul(x1,K)|0;var be=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(be>>>26)|0,be&=67108863,M=Math.imul(w1,C1),u=Math.imul(w1,Ke),u=u+Math.imul(S1,C1)|0,B=Math.imul(S1,Ke),M=M+Math.imul(o1,m)|0,u=u+Math.imul(o1,w)|0,u=u+Math.imul(c1,m)|0,B=B+Math.imul(c1,w)|0,M=M+Math.imul(u1,s)|0,u=u+Math.imul(u1,E)|0,u=u+Math.imul(f1,s)|0,B=B+Math.imul(f1,E)|0,M=M+Math.imul(s1,U)|0,u=u+Math.imul(s1,K)|0,u=u+Math.imul(A1,U)|0,B=B+Math.imul(A1,K)|0;var Ae=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,M=Math.imul(w1,m),u=Math.imul(w1,w),u=u+Math.imul(S1,m)|0,B=Math.imul(S1,w),M=M+Math.imul(o1,s)|0,u=u+Math.imul(o1,E)|0,u=u+Math.imul(c1,s)|0,B=B+Math.imul(c1,E)|0,M=M+Math.imul(u1,U)|0,u=u+Math.imul(u1,K)|0,u=u+Math.imul(f1,U)|0,B=B+Math.imul(f1,K)|0;var _e=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(_e>>>26)|0,_e&=67108863,M=Math.imul(w1,s),u=Math.imul(w1,E),u=u+Math.imul(S1,s)|0,B=Math.imul(S1,E),M=M+Math.imul(o1,U)|0,u=u+Math.imul(o1,K)|0,u=u+Math.imul(c1,U)|0,B=B+Math.imul(c1,K)|0;var me=(P+M|0)+((u&8191)<<13)|0;P=(B+(u>>>13)|0)+(me>>>26)|0,me&=67108863,M=Math.imul(w1,U),u=Math.imul(w1,K),u=u+Math.imul(S1,U)|0,B=Math.imul(S1,K);var Q=(P+M|0)+((u&8191)<<13)|0;return P=(B+(u>>>13)|0)+(Q>>>26)|0,Q&=67108863,D[0]=te,D[1]=ge,D[2]=le,D[3]=Fe,D[4]=ve,D[5]=De,D[6]=Me,D[7]=qe,D[8]=Te,D[9]=Oe,D[10]=Ve,D[11]=Pe,D[12]=xe,D[13]=Ee,D[14]=be,D[15]=Ae,D[16]=_e,D[17]=me,D[18]=Q,P!==0&&(D[19]=P,c.length++),c};Math.imul||(R=O);function V(C,p,o){o.negative=p.negative^C.negative,o.length=C.length+p.length;for(var c=0,g=0,A=0;A>>26)|0,g+=D>>>26,D&=67108863}o.words[A]=P,c=D,D=g}return c!==0?o.words[A]=c:o.length--,o.strip()}function L(C,p,o){var c=new $;return c.mulp(C,p,o)}i.prototype.mulTo=function(p,o){var c,g=this.length+p.length;return this.length===10&&p.length===10?c=R(this,p,o):g<63?c=O(this,p,o):g<1024?c=V(this,p,o):c=L(this,p,o),c};function $(C,p){this.x=C,this.y=p}$.prototype.makeRBT=function(p){for(var o=new Array(p),c=i.prototype._countBits(p)-1,g=0;g>=1;return g},$.prototype.permute=function(p,o,c,g,A,D){for(var P=0;P>>1)A++;return 1<>>13,c[2*D+1]=A&8191,A=A>>>13;for(D=2*o;D>=26,o+=g/67108864|0,o+=A>>>26,this.words[c]=A&67108863}return o!==0&&(this.words[c]=o,this.length++),this},i.prototype.muln=function(p){return this.clone().imuln(p)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(p){var o=S(p);if(o.length===0)return new i(1);for(var c=this,g=0;g=0);var o=p%26,c=(p-o)/26,g=67108863>>>26-o<<26-o,A;if(o!==0){var D=0;for(A=0;A>>26-o}D&&(this.words[A]=D,this.length++)}if(c!==0){for(A=this.length-1;A>=0;A--)this.words[A+c]=this.words[A];for(A=0;A=0);var g;o?g=(o-o%26)/26:g=0;var A=p%26,D=Math.min((p-A)/26,this.length),P=67108863^67108863>>>A<D)for(this.length-=D,u=0;u=0&&(B!==0||u>=g);u--){var ae=this.words[u]|0;this.words[u]=B<<26-A|ae>>>A,B=ae&P}return M&&B!==0&&(M.words[M.length++]=B),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(p,o,c){return a(this.negative===0),this.iushrn(p,o,c)},i.prototype.shln=function(p){return this.clone().ishln(p)},i.prototype.ushln=function(p){return this.clone().iushln(p)},i.prototype.shrn=function(p){return this.clone().ishrn(p)},i.prototype.ushrn=function(p){return this.clone().iushrn(p)},i.prototype.testn=function(p){a(typeof p=="number"&&p>=0);var o=p%26,c=(p-o)/26,g=1<=0);var o=p%26,c=(p-o)/26;if(a(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(o!==0&&c++,this.length=Math.min(c,this.length),o!==0){var g=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},i.prototype.isubn=function(p){if(a(typeof p=="number"),a(p<67108864),p<0)return this.iaddn(-p);if(this.negative!==0)return this.negative=0,this.iaddn(p),this.negative=1,this;if(this.words[0]-=p,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(M/67108864|0),this.words[A+c]=D&67108863}for(;A>26,this.words[A+c]=D&67108863;if(P===0)return this.strip();for(a(P===-1),P=0,A=0;A>26,this.words[A]=D&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(p,o){var c=this.length-p.length,g=this.clone(),A=p,D=A.words[A.length-1]|0,P=this._countBits(D);c=26-P,c!==0&&(A=A.ushln(c),g.iushln(c),D=A.words[A.length-1]|0);var M=g.length-A.length,u;if(o!=="mod"){u=new i(null),u.length=M+1,u.words=new Array(u.length);for(var B=0;B=0;se--){var J=(g.words[A.length+se]|0)*67108864+(g.words[A.length+se-1]|0);for(J=Math.min(J/D|0,67108863),g._ishlnsubmul(A,J,se);g.negative!==0;)J--,g.negative=0,g._ishlnsubmul(A,1,se),g.isZero()||(g.negative^=1);u&&(u.words[se]=J)}return u&&u.strip(),g.strip(),o!=="div"&&c!==0&&g.iushrn(c),{div:u||null,mod:g}},i.prototype.divmod=function(p,o,c){if(a(!p.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var g,A,D;return this.negative!==0&&p.negative===0?(D=this.neg().divmod(p,o),o!=="mod"&&(g=D.div.neg()),o!=="div"&&(A=D.mod.neg(),c&&A.negative!==0&&A.iadd(p)),{div:g,mod:A}):this.negative===0&&p.negative!==0?(D=this.divmod(p.neg(),o),o!=="mod"&&(g=D.div.neg()),{div:g,mod:D.mod}):(this.negative&p.negative)!==0?(D=this.neg().divmod(p.neg(),o),o!=="div"&&(A=D.mod.neg(),c&&A.negative!==0&&A.isub(p)),{div:D.div,mod:A}):p.length>this.length||this.cmp(p)<0?{div:new i(0),mod:this}:p.length===1?o==="div"?{div:this.divn(p.words[0]),mod:null}:o==="mod"?{div:null,mod:new i(this.modn(p.words[0]))}:{div:this.divn(p.words[0]),mod:new i(this.modn(p.words[0]))}:this._wordDiv(p,o)},i.prototype.div=function(p){return this.divmod(p,"div",!1).div},i.prototype.mod=function(p){return this.divmod(p,"mod",!1).mod},i.prototype.umod=function(p){return this.divmod(p,"mod",!0).mod},i.prototype.divRound=function(p){var o=this.divmod(p);if(o.mod.isZero())return o.div;var c=o.div.negative!==0?o.mod.isub(p):o.mod,g=p.ushrn(1),A=p.andln(1),D=c.cmp(g);return D<0||A===1&&D===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},i.prototype.modn=function(p){a(p<=67108863);for(var o=(1<<26)%p,c=0,g=this.length-1;g>=0;g--)c=(o*c+(this.words[g]|0))%p;return c},i.prototype.idivn=function(p){a(p<=67108863);for(var o=0,c=this.length-1;c>=0;c--){var g=(this.words[c]|0)+o*67108864;this.words[c]=g/p|0,o=g%p}return this.strip()},i.prototype.divn=function(p){return this.clone().idivn(p)},i.prototype.egcd=function(p){a(p.negative===0),a(!p.isZero());var o=this,c=p.clone();o.negative!==0?o=o.umod(p):o=o.clone();for(var g=new i(1),A=new i(0),D=new i(0),P=new i(1),M=0;o.isEven()&&c.isEven();)o.iushrn(1),c.iushrn(1),++M;for(var u=c.clone(),B=o.clone();!o.isZero();){for(var ae=0,se=1;(o.words[0]&se)===0&&ae<26;++ae,se<<=1);if(ae>0)for(o.iushrn(ae);ae-- >0;)(g.isOdd()||A.isOdd())&&(g.iadd(u),A.isub(B)),g.iushrn(1),A.iushrn(1);for(var J=0,ue=1;(c.words[0]&ue)===0&&J<26;++J,ue<<=1);if(J>0)for(c.iushrn(J);J-- >0;)(D.isOdd()||P.isOdd())&&(D.iadd(u),P.isub(B)),D.iushrn(1),P.iushrn(1);o.cmp(c)>=0?(o.isub(c),g.isub(D),A.isub(P)):(c.isub(o),D.isub(g),P.isub(A))}return{a:D,b:P,gcd:c.iushln(M)}},i.prototype._invmp=function(p){a(p.negative===0),a(!p.isZero());var o=this,c=p.clone();o.negative!==0?o=o.umod(p):o=o.clone();for(var g=new i(1),A=new i(0),D=c.clone();o.cmpn(1)>0&&c.cmpn(1)>0;){for(var P=0,M=1;(o.words[0]&M)===0&&P<26;++P,M<<=1);if(P>0)for(o.iushrn(P);P-- >0;)g.isOdd()&&g.iadd(D),g.iushrn(1);for(var u=0,B=1;(c.words[0]&B)===0&&u<26;++u,B<<=1);if(u>0)for(c.iushrn(u);u-- >0;)A.isOdd()&&A.iadd(D),A.iushrn(1);o.cmp(c)>=0?(o.isub(c),g.isub(A)):(c.isub(o),A.isub(g))}var ae;return o.cmpn(1)===0?ae=g:ae=A,ae.cmpn(0)<0&&ae.iadd(p),ae},i.prototype.gcd=function(p){if(this.isZero())return p.abs();if(p.isZero())return this.abs();var o=this.clone(),c=p.clone();o.negative=0,c.negative=0;for(var g=0;o.isEven()&&c.isEven();g++)o.iushrn(1),c.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;c.isEven();)c.iushrn(1);var A=o.cmp(c);if(A<0){var D=o;o=c,c=D}else if(A===0||c.cmpn(1)===0)break;o.isub(c)}while(!0);return c.iushln(g)},i.prototype.invm=function(p){return this.egcd(p).a.umod(p)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(p){return this.words[0]&p},i.prototype.bincn=function(p){a(typeof p=="number");var o=p%26,c=(p-o)/26,g=1<>>26,P&=67108863,this.words[D]=P}return A!==0&&(this.words[D]=A,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(p){var o=p<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var c;if(this.length>1)c=1;else{o&&(p=-p),a(p<=67108863,"Number is too big");var g=this.words[0]|0;c=g===p?0:gp.length)return 1;if(this.length=0;c--){var g=this.words[c]|0,A=p.words[c]|0;if(g!==A){gA&&(o=1);break}}return o},i.prototype.gtn=function(p){return this.cmpn(p)===1},i.prototype.gt=function(p){return this.cmp(p)===1},i.prototype.gten=function(p){return this.cmpn(p)>=0},i.prototype.gte=function(p){return this.cmp(p)>=0},i.prototype.ltn=function(p){return this.cmpn(p)===-1},i.prototype.lt=function(p){return this.cmp(p)===-1},i.prototype.lten=function(p){return this.cmpn(p)<=0},i.prototype.lte=function(p){return this.cmp(p)<=0},i.prototype.eqn=function(p){return this.cmpn(p)===0},i.prototype.eq=function(p){return this.cmp(p)===0},i.red=function(p){return new ce(p)},i.prototype.toRed=function(p){return a(!this.red,"Already a number in reduction context"),a(this.negative===0,"red works only with positives"),p.convertTo(this)._forceRed(p)},i.prototype.fromRed=function(){return a(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(p){return this.red=p,this},i.prototype.forceRed=function(p){return a(!this.red,"Already a number in reduction context"),this._forceRed(p)},i.prototype.redAdd=function(p){return a(this.red,"redAdd works only with red numbers"),this.red.add(this,p)},i.prototype.redIAdd=function(p){return a(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,p)},i.prototype.redSub=function(p){return a(this.red,"redSub works only with red numbers"),this.red.sub(this,p)},i.prototype.redISub=function(p){return a(this.red,"redISub works only with red numbers"),this.red.isub(this,p)},i.prototype.redShl=function(p){return a(this.red,"redShl works only with red numbers"),this.red.shl(this,p)},i.prototype.redMul=function(p){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.mul(this,p)},i.prototype.redIMul=function(p){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.imul(this,p)},i.prototype.redSqr=function(){return a(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return a(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return a(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return a(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return a(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(p){return a(this.red&&!p.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,p)};var X={k256:null,p224:null,p192:null,p25519:null};function ie(C,p){this.name=C,this.p=new i(p,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ie.prototype._tmp=function(){var p=new i(null);return p.words=new Array(Math.ceil(this.n/13)),p},ie.prototype.ireduce=function(p){var o=p,c;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),c=o.bitLength();while(c>this.n);var g=c0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ie.prototype.split=function(p,o){p.iushrn(this.n,0,o)},ie.prototype.imulK=function(p){return p.imul(this.k)};function oe(){ie.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}r(oe,ie),oe.prototype.split=function(p,o){for(var c=4194303,g=Math.min(p.length,9),A=0;A>>22,D=P}D>>>=22,p.words[A-10]=D,D===0&&p.length>10?p.length-=10:p.length-=9},oe.prototype.imulK=function(p){p.words[p.length]=0,p.words[p.length+1]=0,p.length+=2;for(var o=0,c=0;c>>=26,p.words[c]=A,o=g}return o!==0&&(p.words[p.length++]=o),p},i._prime=function(p){if(X[p])return X[p];var o;if(p==="k256")o=new oe;else if(p==="p224")o=new we;else if(p==="p192")o=new Ie;else if(p==="p25519")o=new ye;else throw new Error("Unknown prime "+p);return X[p]=o,o};function ce(C){if(typeof C=="string"){var p=i._prime(C);this.m=p.p,this.prime=p}else a(C.gtn(1),"modulus must be greater than 1"),this.m=C,this.prime=null}ce.prototype._verify1=function(p){a(p.negative===0,"red works only with positives"),a(p.red,"red works only with red numbers")},ce.prototype._verify2=function(p,o){a((p.negative|o.negative)===0,"red works only with positives"),a(p.red&&p.red===o.red,"red works only with red numbers")},ce.prototype.imod=function(p){return this.prime?this.prime.ireduce(p)._forceRed(this):p.umod(this.m)._forceRed(this)},ce.prototype.neg=function(p){return p.isZero()?p.clone():this.m.sub(p)._forceRed(this)},ce.prototype.add=function(p,o){this._verify2(p,o);var c=p.add(o);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},ce.prototype.iadd=function(p,o){this._verify2(p,o);var c=p.iadd(o);return c.cmp(this.m)>=0&&c.isub(this.m),c},ce.prototype.sub=function(p,o){this._verify2(p,o);var c=p.sub(o);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},ce.prototype.isub=function(p,o){this._verify2(p,o);var c=p.isub(o);return c.cmpn(0)<0&&c.iadd(this.m),c},ce.prototype.shl=function(p,o){return this._verify1(p),this.imod(p.ushln(o))},ce.prototype.imul=function(p,o){return this._verify2(p,o),this.imod(p.imul(o))},ce.prototype.mul=function(p,o){return this._verify2(p,o),this.imod(p.mul(o))},ce.prototype.isqr=function(p){return this.imul(p,p.clone())},ce.prototype.sqr=function(p){return this.mul(p,p)},ce.prototype.sqrt=function(p){if(p.isZero())return p.clone();var o=this.m.andln(3);if(a(o%2===1),o===3){var c=this.m.add(new i(1)).iushrn(2);return this.pow(p,c)}for(var g=this.m.subn(1),A=0;!g.isZero()&&g.andln(1)===0;)A++,g.iushrn(1);a(!g.isZero());var D=new i(1).toRed(this),P=D.redNeg(),M=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);this.pow(u,M).cmp(P)!==0;)u.redIAdd(P);for(var B=this.pow(u,g),ae=this.pow(p,g.addn(1).iushrn(1)),se=this.pow(p,g),J=A;se.cmp(D)!==0;){for(var ue=se,Z=0;ue.cmp(D)!==0;Z++)ue=ue.redSqr();a(Z=0;A--){for(var B=o.words[A],ae=u-1;ae>=0;ae--){var se=B>>ae&1;if(D!==g[0]&&(D=this.sqr(D)),se===0&&P===0){M=0;continue}P<<=1,P|=se,M++,!(M!==c&&(A!==0||ae!==0))&&(D=this.mul(D,g[P]),M=0,P=0)}u=26}return D},ce.prototype.convertTo=function(p){var o=p.umod(this.m);return o===p?o.clone():o},ce.prototype.convertFrom=function(p){var o=p.clone();return o.red=null,o},i.mont=function(p){return new Ne(p)};function Ne(C){ce.call(this,C),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}r(Ne,ce),Ne.prototype.convertTo=function(p){return this.imod(p.ushln(this.shift))},Ne.prototype.convertFrom=function(p){var o=this.imod(p.mul(this.rinv));return o.red=null,o},Ne.prototype.imul=function(p,o){if(p.isZero()||o.isZero())return p.words[0]=0,p.length=1,p;var c=p.imul(o),g=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),A=c.isub(g).iushrn(this.shift),D=A;return A.cmp(this.m)>=0?D=A.isub(this.m):A.cmpn(0)<0&&(D=A.iadd(this.m)),D._forceRed(this)},Ne.prototype.mul=function(p,o){if(p.isZero()||o.isZero())return new i(0)._forceRed(this);var c=p.mul(o),g=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),A=c.isub(g).iushrn(this.shift),D=A;return A.cmp(this.m)>=0?D=A.isub(this.m):A.cmpn(0)<0&&(D=A.iadd(this.m)),D._forceRed(this)},Ne.prototype.invm=function(p){var o=this.imod(p._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof g4>"u"||g4,Sc)});var Ar=T((yF,Cc)=>{l();Cc.exports=Ec;function Ec(t,e){if(!t)throw new Error(e||"Assertion failed")}Ec.equal=function(e,a,r){if(e!=a)throw new Error(r||"Assertion failed: "+e+" != "+a)}});var y4=T(Mc=>{"use strict";l();var C2=Mc;function vC(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var a=[];if(typeof t!="string"){for(var r=0;r>8,n=i&255;d?a.push(d,n):a.push(n)}return a}C2.toArray=vC;function Nc(t){return t.length===1?"0"+t:t}C2.zero2=Nc;function Dc(t){for(var e="",a=0;a{"use strict";l();var ea=Tc,bC=xa(),gC=Ar(),N2=y4();ea.assert=gC;ea.toArray=N2.toArray;ea.zero2=N2.zero2;ea.toHex=N2.toHex;ea.encode=N2.encode;function yC(t,e,a){var r=new Array(Math.max(t.bitLength(),a)+1);r.fill(0);for(var i=1<(i>>1)-1?f=(i>>1)-h:f=h,d.isubn(f)):f=0,r[n]=f,d.iushrn(1)}return r}ea.getNAF=yC;function xC(t,e){var a=[[],[]];t=t.clone(),e=e.clone();for(var r=0,i=0,d;t.cmpn(-r)>0||e.cmpn(-i)>0;){var n=t.andln(3)+r&3,f=e.andln(3)+i&3;n===3&&(n=-1),f===3&&(f=-1);var h;(n&1)===0?h=0:(d=t.andln(7)+r&7,(d===3||d===5)&&f===2?h=-n:h=n),a[0].push(h);var v;(f&1)===0?v=0:(d=e.andln(7)+i&7,(d===3||d===5)&&n===2?v=-f:v=f),a[1].push(v),2*r===h+1&&(r=1-r),2*i===v+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return a}ea.getJSF=xC;function AC(t,e,a){var r="_"+e;t.prototype[e]=function(){return this[r]!==void 0?this[r]:this[r]=a.call(this)}}ea.cachedProperty=AC;function wC(t){return typeof t=="string"?ea.toArray(t,"hex"):t}ea.parseBytes=wC;function _C(t){return new bC(t,"hex","le")}ea.intFromLE=_C});var _4=T((SF,w4)=>{l();var x4;w4.exports=function(e){return x4||(x4=new wr(null)),x4.generate(e)};function wr(t){this.rand=t}w4.exports.Rand=wr;wr.prototype.generate=function(e){return this._rand(e)};wr.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var a=new Uint8Array(e),r=0;r{"use strict";l();var Zr=xa(),K0=Nt(),D2=K0.getNAF,IC=K0.getJSF,M2=K0.assert;function _r(t,e){this.type=t,this.p=new Zr(e.p,16),this.red=e.prime?Zr.red(e.prime):Zr.mont(this.p),this.zero=new Zr(0).toRed(this.red),this.one=new Zr(1).toRed(this.red),this.two=new Zr(2).toRed(this.red),this.n=e.n&&new Zr(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var a=this.n&&this.p.div(this.n);!a||a.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}Bc.exports=_r;_r.prototype.point=function(){throw new Error("Not implemented")};_r.prototype.validate=function(){throw new Error("Not implemented")};_r.prototype._fixedNafMul=function(e,a){M2(e.precomputed);var r=e._getDoubles(),i=D2(a,1,this._bitLength),d=(1<=f;v--)h=(h<<1)+i[v];n.push(h)}for(var I=this.jpoint(null,null,null),S=this.jpoint(null,null,null),O=d;O>0;O--){for(f=0;f=0;h--){for(var v=0;h>=0&&n[h]===0;h--)v++;if(h>=0&&v++,f=f.dblp(v),h<0)break;var I=n[h];M2(I!==0),e.type==="affine"?I>0?f=f.mixedAdd(d[I-1>>1]):f=f.mixedAdd(d[-I-1>>1].neg()):I>0?f=f.add(d[I-1>>1]):f=f.add(d[-I-1>>1].neg())}return e.type==="affine"?f.toP():f};_r.prototype._wnafMulAdd=function(e,a,r,i,d){var n=this._wnafT1,f=this._wnafT2,h=this._wnafT3,v=0,I,S,O;for(I=0;I=1;I-=2){var V=I-1,L=I;if(n[V]!==1||n[L]!==1){h[V]=D2(r[V],n[V],this._bitLength),h[L]=D2(r[L],n[L],this._bitLength),v=Math.max(h[V].length,v),v=Math.max(h[L].length,v);continue}var $=[a[V],null,null,a[L]];a[V].y.cmp(a[L].y)===0?($[1]=a[V].add(a[L]),$[2]=a[V].toJ().mixedAdd(a[L].neg())):a[V].y.cmp(a[L].y.redNeg())===0?($[1]=a[V].toJ().mixedAdd(a[L]),$[2]=a[V].add(a[L].neg())):($[1]=a[V].toJ().mixedAdd(a[L]),$[2]=a[V].toJ().mixedAdd(a[L].neg()));var X=[-3,-1,-5,-7,0,7,5,1,3],ie=IC(r[V],r[L]);for(v=Math.max(ie[0].length,v),h[V]=new Array(v),h[L]=new Array(v),S=0;S=0;I--){for(var ce=0;I>=0;){var Ne=!0;for(S=0;S=0&&ce++,Ie=Ie.dblp(ce),I<0)break;for(S=0;S0?O=f[S][C-1>>1]:C<0&&(O=f[S][-C-1>>1].neg()),O.type==="affine"?Ie=Ie.mixedAdd(O):Ie=Ie.add(O))}}for(I=0;I=Math.ceil((e.bitLength()+1)/a.step):!1};Vt.prototype._getDoubles=function(e,a){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,d=0;d{l();typeof Object.create=="function"?I4.exports=function(e,a){a&&(e.super_=a,e.prototype=Object.create(a.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:I4.exports=function(e,a){if(a){e.super_=a;var r=function(){};r.prototype=a.prototype,e.prototype=new r,e.prototype.constructor=e}}});var $0=T((TF,E4)=>{l();try{if(S4=require("util"),typeof S4.inherits!="function")throw"";E4.exports=S4.inherits}catch{E4.exports=qc()}var S4});var Pc=T((qF,Oc)=>{"use strict";l();var SC=Nt(),L1=xa(),C4=$0(),Ei=z0(),EC=SC.assert;function Ut(t){Ei.call(this,"short",t),this.a=new L1(t.a,16).toRed(this.red),this.b=new L1(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}C4(Ut,Ei);Oc.exports=Ut;Ut.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var a,r;if(e.beta)a=new L1(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);a=i[0].cmp(i[1])<0?i[0]:i[1],a=a.toRed(this.red)}if(e.lambda)r=new L1(e.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(a))===0?r=d[0]:(r=d[1],EC(this.g.mul(r).x.cmp(this.g.x.redMul(a))===0))}var n;return e.basis?n=e.basis.map(function(f){return{a:new L1(f.a,16),b:new L1(f.b,16)}}):n=this._getEndoBasis(r),{beta:a,lambda:r,basis:n}}};Ut.prototype._getEndoRoots=function(e){var a=e===this.p?this.red:L1.mont(e),r=new L1(2).toRed(a).redInvm(),i=r.redNeg(),d=new L1(3).toRed(a).redNeg().redSqrt().redMul(r),n=i.redAdd(d).fromRed(),f=i.redSub(d).fromRed();return[n,f]};Ut.prototype._getEndoBasis=function(e){for(var a=this.n.ushrn(Math.floor(this.n.bitLength()/2)),r=e,i=this.n.clone(),d=new L1(1),n=new L1(0),f=new L1(0),h=new L1(1),v,I,S,O,R,V,L,$=0,X,ie;r.cmpn(0)!==0;){var oe=i.div(r);X=i.sub(oe.mul(r)),ie=f.sub(oe.mul(d));var we=h.sub(oe.mul(n));if(!S&&X.cmp(a)<0)v=L.neg(),I=d,S=X.neg(),O=ie;else if(S&&++$===2)break;L=X,i=r,r=X,f=d,d=ie,h=n,n=we}R=X.neg(),V=ie;var Ie=S.sqr().add(O.sqr()),ye=R.sqr().add(V.sqr());return ye.cmp(Ie)>=0&&(R=v,V=I),S.negative&&(S=S.neg(),O=O.neg()),R.negative&&(R=R.neg(),V=V.neg()),[{a:S,b:O},{a:R,b:V}]};Ut.prototype._endoSplit=function(e){var a=this.endo.basis,r=a[0],i=a[1],d=i.b.mul(e).divRound(this.n),n=r.b.neg().mul(e).divRound(this.n),f=d.mul(r.a),h=n.mul(i.a),v=d.mul(r.b),I=n.mul(i.b),S=e.sub(f).sub(h),O=v.add(I).neg();return{k1:S,k2:O}};Ut.prototype.pointFromX=function(e,a){e=new L1(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(i.redSqr().redSub(r).cmp(this.zero)!==0)throw new Error("invalid point");var d=i.fromRed().isOdd();return(a&&!d||!a&&d)&&(i=i.redNeg()),this.point(e,i)};Ut.prototype.validate=function(e){if(e.inf)return!0;var a=e.x,r=e.y,i=this.a.redMul(a),d=a.redSqr().redMul(a).redIAdd(i).redIAdd(this.b);return r.redSqr().redISub(d).cmpn(0)===0};Ut.prototype._endoWnafMulAdd=function(e,a,r){for(var i=this._endoWnafT1,d=this._endoWnafT2,n=0;n":""};J1.prototype.isInfinity=function(){return this.inf};J1.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var a=this.y.redSub(e.y);a.cmpn(0)!==0&&(a=a.redMul(this.x.redSub(e.x).redInvm()));var r=a.redSqr().redISub(this.x).redISub(e.x),i=a.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)};J1.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var a=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),d=r.redAdd(r).redIAdd(r).redIAdd(a).redMul(i),n=d.redSqr().redISub(this.x.redAdd(this.x)),f=d.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,f)};J1.prototype.getX=function(){return this.x.fromRed()};J1.prototype.getY=function(){return this.y.fromRed()};J1.prototype.mul=function(e){return e=new L1(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};J1.prototype.mulAdd=function(e,a,r){var i=[this,a],d=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,d):this.curve._wnafMulAdd(1,i,d,2)};J1.prototype.jmulAdd=function(e,a,r){var i=[this,a],d=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,d,!0):this.curve._wnafMulAdd(1,i,d,2,!0)};J1.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};J1.prototype.neg=function(e){if(this.inf)return this;var a=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(d){return d.neg()};a.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return a};J1.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function at(t,e,a,r){Ei.BasePoint.call(this,t,"jacobian"),e===null&&a===null&&r===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new L1(0)):(this.x=new L1(e,16),this.y=new L1(a,16),this.z=new L1(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}C4(at,Ei.BasePoint);Ut.prototype.jpoint=function(e,a,r){return new at(this,e,a,r)};at.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),a=e.redSqr(),r=this.x.redMul(a),i=this.y.redMul(a).redMul(e);return this.curve.point(r,i)};at.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};at.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var a=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(a),d=e.x.redMul(r),n=this.y.redMul(a.redMul(e.z)),f=e.y.redMul(r.redMul(this.z)),h=i.redSub(d),v=n.redSub(f);if(h.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var I=h.redSqr(),S=I.redMul(h),O=i.redMul(I),R=v.redSqr().redIAdd(S).redISub(O).redISub(O),V=v.redMul(O.redISub(R)).redISub(n.redMul(S)),L=this.z.redMul(e.z).redMul(h);return this.curve.jpoint(R,V,L)};at.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var a=this.z.redSqr(),r=this.x,i=e.x.redMul(a),d=this.y,n=e.y.redMul(a).redMul(this.z),f=r.redSub(i),h=d.redSub(n);if(f.cmpn(0)===0)return h.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=f.redSqr(),I=v.redMul(f),S=r.redMul(v),O=h.redSqr().redIAdd(I).redISub(S).redISub(S),R=h.redMul(S.redISub(O)).redISub(d.redMul(I)),V=this.z.redMul(f);return this.curve.jpoint(O,R,V)};at.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var a;if(this.curve.zeroA||this.curve.threeA){var r=this;for(a=0;a=0)return!1;if(r.redIAdd(d),this.x.cmp(r)===0)return!0}};at.prototype.inspect=function(){return this.isInfinity()?"":""};at.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var Rc=T((PF,Uc)=>{"use strict";l();var Ci=xa(),Vc=$0(),T2=z0(),CC=Nt();function Ni(t){T2.call(this,"mont",t),this.a=new Ci(t.a,16).toRed(this.red),this.b=new Ci(t.b,16).toRed(this.red),this.i4=new Ci(4).toRed(this.red).redInvm(),this.two=new Ci(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Vc(Ni,T2);Uc.exports=Ni;Ni.prototype.validate=function(e){var a=e.normalize().x,r=a.redSqr(),i=r.redMul(a).redAdd(r.redMul(this.a)).redAdd(a),d=i.redSqrt();return d.redSqr().cmp(i)===0};function X1(t,e,a){T2.BasePoint.call(this,t,"projective"),e===null&&a===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Ci(e,16),this.z=new Ci(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Vc(X1,T2.BasePoint);Ni.prototype.decodePoint=function(e,a){return this.point(CC.toArray(e,a),1)};Ni.prototype.point=function(e,a){return new X1(this,e,a)};Ni.prototype.pointFromJSON=function(e){return X1.fromJSON(this,e)};X1.prototype.precompute=function(){};X1.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};X1.fromJSON=function(e,a){return new X1(e,a[0],a[1]||e.one)};X1.prototype.inspect=function(){return this.isInfinity()?"":""};X1.prototype.isInfinity=function(){return this.z.cmpn(0)===0};X1.prototype.dbl=function(){var e=this.x.redAdd(this.z),a=e.redSqr(),r=this.x.redSub(this.z),i=r.redSqr(),d=a.redSub(i),n=a.redMul(i),f=d.redMul(i.redAdd(this.curve.a24.redMul(d)));return this.curve.point(n,f)};X1.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.diffAdd=function(e,a){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),d=e.x.redAdd(e.z),n=e.x.redSub(e.z),f=n.redMul(r),h=d.redMul(i),v=a.z.redMul(f.redAdd(h).redSqr()),I=a.x.redMul(f.redISub(h).redSqr());return this.curve.point(v,I)};X1.prototype.mul=function(e){for(var a=e.clone(),r=this,i=this.curve.point(null,null),d=this,n=[];a.cmpn(0)!==0;a.iushrn(1))n.push(a.andln(1));for(var f=n.length-1;f>=0;f--)n[f]===0?(r=r.diffAdd(i,d),i=i.dbl()):(i=r.diffAdd(i,d),r=r.dbl());return i};X1.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};X1.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};X1.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var Qc=T((UF,Lc)=>{"use strict";l();var NC=Nt(),Ga=xa(),Fc=$0(),B2=z0(),DC=NC.assert;function Aa(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,B2.call(this,"edwards",t),this.a=new Ga(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Ga(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Ga(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),DC(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Fc(Aa,B2);Lc.exports=Aa;Aa.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};Aa.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};Aa.prototype.jpoint=function(e,a,r,i){return this.point(e,a,r,i)};Aa.prototype.pointFromX=function(e,a){e=new Ga(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),d=this.one.redSub(this.c2.redMul(this.d).redMul(r)),n=i.redMul(d.redInvm()),f=n.redSqrt();if(f.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var h=f.fromRed().isOdd();return(a&&!h||!a&&h)&&(f=f.redNeg()),this.point(e,f)};Aa.prototype.pointFromY=function(e,a){e=new Ga(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),d=r.redMul(this.d).redMul(this.c2).redSub(this.a),n=i.redMul(d.redInvm());if(n.cmp(this.zero)===0){if(a)throw new Error("invalid point");return this.point(this.zero,e)}var f=n.redSqrt();if(f.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");return f.fromRed().isOdd()!==a&&(f=f.redNeg()),this.point(f,e)};Aa.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var a=e.x.redSqr(),r=e.y.redSqr(),i=a.redMul(this.a).redAdd(r),d=this.c2.redMul(this.one.redAdd(this.d.redMul(a).redMul(r)));return i.cmp(d)===0};function M1(t,e,a,r,i){B2.BasePoint.call(this,t,"projective"),e===null&&a===null&&r===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Ga(e,16),this.y=new Ga(a,16),this.z=r?new Ga(r,16):this.curve.one,this.t=i&&new Ga(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Fc(M1,B2.BasePoint);Aa.prototype.pointFromJSON=function(e){return M1.fromJSON(this,e)};Aa.prototype.point=function(e,a,r,i){return new M1(this,e,a,r,i)};M1.fromJSON=function(e,a){return new M1(e,a[0],a[1],a[2])};M1.prototype.inspect=function(){return this.isInfinity()?"":""};M1.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};M1.prototype._extDbl=function(){var e=this.x.redSqr(),a=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),d=this.x.redAdd(this.y).redSqr().redISub(e).redISub(a),n=i.redAdd(a),f=n.redSub(r),h=i.redSub(a),v=d.redMul(f),I=n.redMul(h),S=d.redMul(h),O=f.redMul(n);return this.curve.point(v,I,O,S)};M1.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),r=this.y.redSqr(),i,d,n,f,h,v;if(this.curve.twisted){f=this.curve._mulA(a);var I=f.redAdd(r);this.zOne?(i=e.redSub(a).redSub(r).redMul(I.redSub(this.curve.two)),d=I.redMul(f.redSub(r)),n=I.redSqr().redSub(I).redSub(I)):(h=this.z.redSqr(),v=I.redSub(h).redISub(h),i=e.redSub(a).redISub(r).redMul(v),d=I.redMul(f.redSub(r)),n=I.redMul(v))}else f=a.redAdd(r),h=this.curve._mulC(this.z).redSqr(),v=f.redSub(h).redSub(h),i=this.curve._mulC(e.redISub(f)).redMul(v),d=this.curve._mulC(f).redMul(a.redISub(r)),n=f.redMul(v);return this.curve.point(i,d,n)};M1.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};M1.prototype._extAdd=function(e){var a=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),d=this.z.redMul(e.z.redAdd(e.z)),n=r.redSub(a),f=d.redSub(i),h=d.redAdd(i),v=r.redAdd(a),I=n.redMul(f),S=h.redMul(v),O=n.redMul(v),R=f.redMul(h);return this.curve.point(I,S,R,O)};M1.prototype._projAdd=function(e){var a=this.z.redMul(e.z),r=a.redSqr(),i=this.x.redMul(e.x),d=this.y.redMul(e.y),n=this.curve.d.redMul(i).redMul(d),f=r.redSub(n),h=r.redAdd(n),v=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(d),I=a.redMul(f).redMul(v),S,O;return this.curve.twisted?(S=a.redMul(h).redMul(d.redSub(this.curve._mulA(i))),O=f.redMul(h)):(S=a.redMul(h).redMul(d.redSub(i)),O=this.curve._mulC(f).redMul(h)),this.curve.point(I,S,O)};M1.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};M1.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};M1.prototype.mulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!1)};M1.prototype.jmulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!0)};M1.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};M1.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};M1.prototype.getX=function(){return this.normalize(),this.x.fromRed()};M1.prototype.getY=function(){return this.normalize(),this.y.fromRed()};M1.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};M1.prototype.eqXToP=function(e){var a=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(a)===0)return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(a.redIAdd(i),this.x.cmp(a)===0)return!0}};M1.prototype.toP=M1.prototype.normalize;M1.prototype.mixedAdd=M1.prototype.add});var N4=T(kc=>{"use strict";l();var q2=kc;q2.base=z0();q2.short=Pc();q2.mont=Rc();q2.edwards=Qc()});var ta=T(D1=>{"use strict";l();var MC=Ar(),TC=$0();D1.inherits=TC;function BC(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function qC(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var a=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),i=0;i>6|192,a[r++]=d&63|128):BC(t,i)?(d=65536+((d&1023)<<10)+(t.charCodeAt(++i)&1023),a[r++]=d>>18|240,a[r++]=d>>12&63|128,a[r++]=d>>6&63|128,a[r++]=d&63|128):(a[r++]=d>>12|224,a[r++]=d>>6&63|128,a[r++]=d&63|128)}else for(i=0;i>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}D1.htonl=jc;function PC(t,e){for(var a="",r=0;r>>0}return d}D1.join32=VC;function UC(t,e){for(var a=new Array(t.length*4),r=0,i=0;r>>24,a[i+1]=d>>>16&255,a[i+2]=d>>>8&255,a[i+3]=d&255):(a[i+3]=d>>>24,a[i+2]=d>>>16&255,a[i+1]=d>>>8&255,a[i]=d&255)}return a}D1.split32=UC;function RC(t,e){return t>>>e|t<<32-e}D1.rotr32=RC;function FC(t,e){return t<>>32-e}D1.rotl32=FC;function LC(t,e){return t+e>>>0}D1.sum32=LC;function QC(t,e,a){return t+e+a>>>0}D1.sum32_3=QC;function kC(t,e,a,r){return t+e+a+r>>>0}D1.sum32_4=kC;function jC(t,e,a,r,i){return t+e+a+r+i>>>0}D1.sum32_5=jC;function HC(t,e,a,r){var i=t[e],d=t[e+1],n=r+d>>>0,f=(n>>0,t[e+1]=n}D1.sum64=HC;function KC(t,e,a,r){var i=e+r>>>0,d=(i>>0}D1.sum64_hi=KC;function zC(t,e,a,r){var i=e+r;return i>>>0}D1.sum64_lo=zC;function $C(t,e,a,r,i,d,n,f){var h=0,v=e;v=v+r>>>0,h+=v>>0,h+=v>>0,h+=v>>0}D1.sum64_4_hi=$C;function GC(t,e,a,r,i,d,n,f){var h=e+r+d+f;return h>>>0}D1.sum64_4_lo=GC;function YC(t,e,a,r,i,d,n,f,h,v){var I=0,S=e;S=S+r>>>0,I+=S>>0,I+=S>>0,I+=S>>0,I+=S>>0}D1.sum64_5_hi=YC;function WC(t,e,a,r,i,d,n,f,h,v){var I=e+r+d+f+v;return I>>>0}D1.sum64_5_lo=WC;function JC(t,e,a){var r=e<<32-a|t>>>a;return r>>>0}D1.rotr64_hi=JC;function XC(t,e,a){var r=t<<32-a|e>>>a;return r>>>0}D1.rotr64_lo=XC;function ZC(t,e,a){return t>>>a}D1.shr64_hi=ZC;function eN(t,e,a){var r=t<<32-a|e>>>a;return r>>>0}D1.shr64_lo=eN});var Di=T($c=>{"use strict";l();var zc=ta(),tN=Ar();function O2(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}$c.BlockHash=O2;O2.prototype.update=function(e,a){if(e=zc.toArray(e,a),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var r=e.length%this._delta8;this.pending=e.slice(e.length-r,e.length),this.pending.length===0&&(this.pending=null),e=zc.join32(e,0,e.length-r,this.endian);for(var i=0;i>>24&255,i[d++]=e>>>16&255,i[d++]=e>>>8&255,i[d++]=e&255}else for(i[d++]=e&255,i[d++]=e>>>8&255,i[d++]=e>>>16&255,i[d++]=e>>>24&255,i[d++]=0,i[d++]=0,i[d++]=0,i[d++]=0,n=8;n{"use strict";l();var aN=ta(),wa=aN.rotr32;function rN(t,e,a,r){if(t===0)return Gc(e,a,r);if(t===1||t===3)return Wc(e,a,r);if(t===2)return Yc(e,a,r)}Ya.ft_1=rN;function Gc(t,e,a){return t&e^~t&a}Ya.ch32=Gc;function Yc(t,e,a){return t&e^t&a^e&a}Ya.maj32=Yc;function Wc(t,e,a){return t^e^a}Ya.p32=Wc;function iN(t){return wa(t,2)^wa(t,13)^wa(t,22)}Ya.s0_256=iN;function dN(t){return wa(t,6)^wa(t,11)^wa(t,25)}Ya.s1_256=dN;function pN(t){return wa(t,7)^wa(t,18)^t>>>3}Ya.g0_256=pN;function nN(t){return wa(t,17)^wa(t,19)^t>>>10}Ya.g1_256=nN});var Zc=T(($F,Xc)=>{"use strict";l();var Mi=ta(),sN=Di(),fN=D4(),M4=Mi.rotl32,G0=Mi.sum32,oN=Mi.sum32_5,lN=fN.ft_1,Jc=sN.BlockHash,uN=[1518500249,1859775393,2400959708,3395469782];function _a(){if(!(this instanceof _a))return new _a;Jc.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Mi.inherits(_a,Jc);Xc.exports=_a;_a.blockSize=512;_a.outSize=160;_a.hmacStrength=80;_a.padLength=64;_a.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i{"use strict";l();var Ti=ta(),cN=Di(),Bi=D4(),hN=Ar(),aa=Ti.sum32,mN=Ti.sum32_4,vN=Ti.sum32_5,bN=Bi.ch32,gN=Bi.maj32,yN=Bi.s0_256,xN=Bi.s1_256,AN=Bi.g0_256,wN=Bi.g1_256,eh=cN.BlockHash,_N=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Ia(){if(!(this instanceof Ia))return new Ia;eh.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=_N,this.W=new Array(64)}Ti.inherits(Ia,eh);th.exports=Ia;Ia.blockSize=512;Ia.outSize=256;Ia.hmacStrength=192;Ia.padLength=64;Ia.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i{"use strict";l();var B4=ta(),ah=T4();function Wa(){if(!(this instanceof Wa))return new Wa;ah.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}B4.inherits(Wa,ah);rh.exports=Wa;Wa.blockSize=512;Wa.outSize=224;Wa.hmacStrength=192;Wa.padLength=64;Wa.prototype._digest=function(e){return e==="hex"?B4.toHex32(this.h.slice(0,7),"big"):B4.split32(this.h.slice(0,7),"big")}});var P4=T((ZF,sh)=>{"use strict";l();var yt=ta(),IN=Di(),SN=Ar(),Sa=yt.rotr64_hi,Ea=yt.rotr64_lo,dh=yt.shr64_hi,ph=yt.shr64_lo,Ir=yt.sum64,q4=yt.sum64_hi,O4=yt.sum64_lo,EN=yt.sum64_4_hi,CN=yt.sum64_4_lo,NN=yt.sum64_5_hi,DN=yt.sum64_5_lo,nh=IN.BlockHash,MN=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function ra(){if(!(this instanceof ra))return new ra;nh.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=MN,this.W=new Array(160)}yt.inherits(ra,nh);sh.exports=ra;ra.blockSize=1024;ra.outSize=512;ra.hmacStrength=192;ra.padLength=128;ra.prototype._prepareBlock=function(e,a){for(var r=this.W,i=0;i<32;i++)r[i]=e[a+i];for(;i{"use strict";l();var V4=ta(),fh=P4();function Ja(){if(!(this instanceof Ja))return new Ja;fh.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}V4.inherits(Ja,fh);oh.exports=Ja;Ja.blockSize=1024;Ja.outSize=384;Ja.hmacStrength=192;Ja.padLength=128;Ja.prototype._digest=function(e){return e==="hex"?V4.toHex32(this.h.slice(0,12),"big"):V4.split32(this.h.slice(0,12),"big")}});var uh=T(qi=>{"use strict";l();qi.sha1=Zc();qi.sha224=ih();qi.sha256=T4();qi.sha384=lh();qi.sha512=P4()});var gh=T(bh=>{"use strict";l();var ei=ta(),jN=Di(),P2=ei.rotl32,ch=ei.sum32,Y0=ei.sum32_3,hh=ei.sum32_4,vh=jN.BlockHash;function Ca(){if(!(this instanceof Ca))return new Ca;vh.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}ei.inherits(Ca,vh);bh.ripemd160=Ca;Ca.blockSize=512;Ca.outSize=160;Ca.hmacStrength=192;Ca.padLength=64;Ca.prototype._update=function(e,a){for(var r=this.h[0],i=this.h[1],d=this.h[2],n=this.h[3],f=this.h[4],h=r,v=i,I=d,S=n,O=f,R=0;R<80;R++){var V=ch(P2(hh(r,mh(R,i,d,n),e[zN[R]+a],HN(R)),GN[R]),f);r=f,f=n,n=P2(d,10),d=i,i=V,V=ch(P2(hh(h,mh(79-R,v,I,S),e[$N[R]+a],KN(R)),YN[R]),O),h=O,O=S,S=P2(I,10),I=v,v=V}V=Y0(this.h[1],d,S),this.h[1]=Y0(this.h[2],n,O),this.h[2]=Y0(this.h[3],f,h),this.h[3]=Y0(this.h[4],r,v),this.h[4]=Y0(this.h[0],i,I),this.h[0]=V};Ca.prototype._digest=function(e){return e==="hex"?ei.toHex32(this.h,"little"):ei.split32(this.h,"little")};function mh(t,e,a,r){return t<=15?e^a^r:t<=31?e&a|~e&r:t<=47?(e|~a)^r:t<=63?e&r|a&~r:e^(a|~r)}function HN(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function KN(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var zN=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],$N=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],GN=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],YN=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var xh=T((nL,yh)=>{"use strict";l();var WN=ta(),JN=Ar();function Oi(t,e,a){if(!(this instanceof Oi))return new Oi(t,e,a);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(WN.toArray(e,a))}yh.exports=Oi;Oi.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),JN(e.length<=this.blockSize);for(var a=e.length;a{l();var rt=Ah;rt.utils=ta();rt.common=Di();rt.sha=uh();rt.ripemd=gh();rt.hmac=xh();rt.sha1=rt.sha.sha1;rt.sha256=rt.sha.sha256;rt.sha224=rt.sha.sha224;rt.sha384=rt.sha.sha384;rt.sha512=rt.sha.sha512;rt.ripemd160=rt.ripemd.ripemd160});var _h=T((lL,wh)=>{l();wh.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var U2=T(Eh=>{"use strict";l();var R4=Eh,Sr=V2(),U4=N4(),XN=Nt(),Ih=XN.assert;function Sh(t){t.type==="short"?this.curve=new U4.short(t):t.type==="edwards"?this.curve=new U4.edwards(t):this.curve=new U4.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,Ih(this.g.validate(),"Invalid curve"),Ih(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}R4.PresetCurve=Sh;function Er(t,e){Object.defineProperty(R4,t,{configurable:!0,enumerable:!0,get:function(){var a=new Sh(e);return Object.defineProperty(R4,t,{configurable:!0,enumerable:!0,value:a}),a}})}Er("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:Sr.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});Er("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:Sr.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});Er("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:Sr.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});Er("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:Sr.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});Er("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:Sr.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});Er("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Sr.sha256,gRed:!1,g:["9"]});Er("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Sr.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var F4;try{F4=_h()}catch{F4=void 0}Er("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:Sr.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",F4]})});var Dh=T((mL,Nh)=>{"use strict";l();var ZN=V2(),ti=y4(),Ch=Ar();function Cr(t){if(!(this instanceof Cr))return new Cr(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=ti.toArray(t.entropy,t.entropyEnc||"hex"),a=ti.toArray(t.nonce,t.nonceEnc||"hex"),r=ti.toArray(t.pers,t.persEnc||"hex");Ch(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,a,r)}Nh.exports=Cr;Cr.prototype._init=function(e,a,r){var i=e.concat(a).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var d=0;d=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1};Cr.prototype.generate=function(e,a,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof a!="string"&&(i=r,r=a,a=null),r&&(r=ti.toArray(r,i||"hex"),this._update(r));for(var d=[];d.length{"use strict";l();var eD=xa(),tD=Nt(),L4=tD.assert;function ft(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}Mh.exports=ft;ft.fromPublic=function(e,a,r){return a instanceof ft?a:new ft(e,{pub:a,pubEnc:r})};ft.fromPrivate=function(e,a,r){return a instanceof ft?a:new ft(e,{priv:a,privEnc:r})};ft.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};ft.prototype.getPublic=function(e,a){return typeof e=="string"&&(a=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),a?this.pub.encode(a,e):this.pub};ft.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};ft.prototype._importPrivate=function(e,a){this.priv=new eD(e,a||16),this.priv=this.priv.umod(this.ec.curve.n)};ft.prototype._importPublic=function(e,a){if(e.x||e.y){this.ec.curve.type==="mont"?L4(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&L4(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,a)};ft.prototype.derive=function(e){return e.validate()||L4(e.validate(),"public point not validated"),e.mul(this.priv).getX()};ft.prototype.sign=function(e,a,r){return this.ec.sign(e,this,a,r)};ft.prototype.verify=function(e,a){return this.ec.verify(e,a,this)};ft.prototype.inspect=function(){return""}});var Oh=T((yL,qh)=>{"use strict";l();var R2=xa(),j4=Nt(),aD=j4.assert;function F2(t,e){if(t instanceof F2)return t;this._importDER(t,e)||(aD(t.r&&t.s,"Signature without r or s"),this.r=new R2(t.r,16),this.s=new R2(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}qh.exports=F2;function rD(){this.place=0}function Q4(t,e){var a=t[e.place++];if(!(a&128))return a;var r=a&15;if(r===0||r>4)return!1;for(var i=0,d=0,n=e.place;d>>=0;return i<=127?!1:(e.place=n,i)}function Bh(t){for(var e=0,a=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(a|128);--a;)t.push(e>>>(a<<3)&255);t.push(e)}F2.prototype.toDER=function(e){var a=this.r.toArray(),r=this.s.toArray();for(a[0]&128&&(a=[0].concat(a)),r[0]&128&&(r=[0].concat(r)),a=Bh(a),r=Bh(r);!r[0]&&!(r[1]&128);)r=r.slice(1);var i=[2];k4(i,a.length),i=i.concat(a),i.push(2),k4(i,r.length);var d=i.concat(r),n=[48];return k4(n,d.length),n=n.concat(d),j4.encode(n,e)}});var Rh=T((AL,Uh)=>{"use strict";l();var ai=xa(),Ph=Dh(),iD=Nt(),H4=U2(),dD=_4(),Vh=iD.assert,K4=Th(),L2=Oh();function Rt(t){if(!(this instanceof Rt))return new Rt(t);typeof t=="string"&&(Vh(Object.prototype.hasOwnProperty.call(H4,t),"Unknown curve "+t),t=H4[t]),t instanceof H4.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}Uh.exports=Rt;Rt.prototype.keyPair=function(e){return new K4(this,e)};Rt.prototype.keyFromPrivate=function(e,a){return K4.fromPrivate(this,e,a)};Rt.prototype.keyFromPublic=function(e,a){return K4.fromPublic(this,e,a)};Rt.prototype.genKeyPair=function(e){e||(e={});for(var a=new Ph({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||dD(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),i=this.n.sub(new ai(2));;){var d=new ai(a.generate(r));if(!(d.cmp(i)>0))return d.iaddn(1),this.keyFromPrivate(d)}};Rt.prototype._truncateToN=function(e,a){var r=e.byteLength()*8-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!a&&e.cmp(this.n)>=0?e.sub(this.n):e};Rt.prototype.sign=function(e,a,r,i){typeof r=="object"&&(i=r,r=null),i||(i={}),a=this.keyFromPrivate(a,r),e=this._truncateToN(new ai(e,16));for(var d=this.n.byteLength(),n=a.getPrivate().toArray("be",d),f=e.toArray("be",d),h=new Ph({hash:this.hash,entropy:n,nonce:f,pers:i.pers,persEnc:i.persEnc||"utf8"}),v=this.n.sub(new ai(1)),I=0;;I++){var S=i.k?i.k(I):new ai(h.generate(this.n.byteLength()));if(S=this._truncateToN(S,!0),!(S.cmpn(1)<=0||S.cmp(v)>=0)){var O=this.g.mul(S);if(!O.isInfinity()){var R=O.getX(),V=R.umod(this.n);if(V.cmpn(0)!==0){var L=S.invm(this.n).mul(V.mul(a.getPrivate()).iadd(e));if(L=L.umod(this.n),L.cmpn(0)!==0){var $=(O.getY().isOdd()?1:0)|(R.cmp(V)!==0?2:0);return i.canonical&&L.cmp(this.nh)>0&&(L=this.n.sub(L),$^=1),new L2({r:V,s:L,recoveryParam:$})}}}}}};Rt.prototype.verify=function(e,a,r,i){e=this._truncateToN(new ai(e,16)),r=this.keyFromPublic(r,i),a=new L2(a,"hex");var d=a.r,n=a.s;if(d.cmpn(1)<0||d.cmp(this.n)>=0||n.cmpn(1)<0||n.cmp(this.n)>=0)return!1;var f=n.invm(this.n),h=f.mul(e).umod(this.n),v=f.mul(d).umod(this.n),I;return this.curve._maxwellTrick?(I=this.g.jmulAdd(h,r.getPublic(),v),I.isInfinity()?!1:I.eqXToP(d)):(I=this.g.mulAdd(h,r.getPublic(),v),I.isInfinity()?!1:I.getX().umod(this.n).cmp(d)===0)};Rt.prototype.recoverPubKey=function(t,e,a,r){Vh((3&a)===a,"The recovery param is more than two bits"),e=new L2(e,r);var i=this.n,d=new ai(t),n=e.r,f=e.s,h=a&1,v=a>>1;if(n.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?n=this.curve.pointFromX(n.add(this.curve.n),h):n=this.curve.pointFromX(n,h);var I=e.r.invm(i),S=i.sub(d).mul(I).umod(i),O=f.mul(I).umod(i);return this.g.mulAdd(S,n,O)};Rt.prototype.getKeyRecoveryParam=function(t,e,a,r){if(e=new L2(e,r),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var d;try{d=this.recoverPubKey(t,e,i)}catch{continue}if(d.eq(a))return i}throw new Error("Unable to find valid recovery factor")}});var kh=T((_L,Qh)=>{"use strict";l();var W0=Nt(),Lh=W0.assert,Fh=W0.parseBytes,Pi=W0.cachedProperty;function Z1(t,e){this.eddsa=t,this._secret=Fh(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=Fh(e.pub)}Z1.fromPublic=function(e,a){return a instanceof Z1?a:new Z1(e,{pub:a})};Z1.fromSecret=function(e,a){return a instanceof Z1?a:new Z1(e,{secret:a})};Z1.prototype.secret=function(){return this._secret};Pi(Z1,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});Pi(Z1,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});Pi(Z1,"privBytes",function(){var e=this.eddsa,a=this.hash(),r=e.encodingLength-1,i=a.slice(0,e.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i});Pi(Z1,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});Pi(Z1,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});Pi(Z1,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});Z1.prototype.sign=function(e){return Lh(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};Z1.prototype.verify=function(e,a){return this.eddsa.verify(e,a,this)};Z1.prototype.getSecret=function(e){return Lh(this._secret,"KeyPair is public only"),W0.encode(this.secret(),e)};Z1.prototype.getPublic=function(e){return W0.encode(this.pubBytes(),e)};Qh.exports=Z1});var Hh=T((SL,jh)=>{"use strict";l();var pD=xa(),Q2=Nt(),nD=Q2.assert,k2=Q2.cachedProperty,sD=Q2.parseBytes;function ri(t,e){this.eddsa=t,typeof e!="object"&&(e=sD(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),nD(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof pD&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}k2(ri,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});k2(ri,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});k2(ri,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});k2(ri,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});ri.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};ri.prototype.toHex=function(){return Q2.encode(this.toBytes(),"hex").toUpperCase()};jh.exports=ri});var Yh=T((CL,Gh)=>{"use strict";l();var fD=V2(),oD=U2(),Vi=Nt(),lD=Vi.assert,zh=Vi.parseBytes,$h=kh(),Kh=Hh();function xt(t){if(lD(t==="ed25519","only tested with ed25519 so far"),!(this instanceof xt))return new xt(t);t=oD[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=fD.sha512}Gh.exports=xt;xt.prototype.sign=function(e,a){e=zh(e);var r=this.keyFromSecret(a),i=this.hashInt(r.messagePrefix(),e),d=this.g.mul(i),n=this.encodePoint(d),f=this.hashInt(n,r.pubBytes(),e).mul(r.priv()),h=i.add(f).umod(this.curve.n);return this.makeSignature({R:d,S:h,Rencoded:n})};xt.prototype.verify=function(e,a,r){e=zh(e),a=this.makeSignature(a);var i=this.keyFromPublic(r),d=this.hashInt(a.Rencoded(),i.pubBytes(),e),n=this.g.mul(a.S()),f=a.R().add(i.pub().mul(d));return f.eq(n)};xt.prototype.hashInt=function(){for(var e=this.hash(),a=0;a{"use strict";l();var ii=Wh;ii.version=Ic().version;ii.utils=Nt();ii.rand=_4();ii.curve=N4();ii.curves=U2();ii.ec=Rh();ii.eddsa=Yh()});var Xh=T((TL,j2)=>{l();(function(){"use strict";var t="input is invalid type",e="finalize already called",a=typeof window=="object",r=a?window:{};r.JS_SHA3_NO_WINDOW&&(a=!1);var i=!a&&typeof self=="object",d=!r.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?r=global:i&&(r=self);var n=!r.JS_SHA3_NO_COMMON_JS&&typeof j2=="object"&&j2.exports,f=typeof define=="function"&&define.amd,h=!r.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),I=[31,7936,2031616,520093696],S=[4,1024,262144,67108864],O=[1,256,65536,16777216],R=[6,1536,393216,100663296],V=[0,8,16,24],L=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],$=[224,256,384,512],X=[128,256],ie=["hex","buffer","arrayBuffer","array","digest"],oe={128:168,256:136};(r.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(b){return Object.prototype.toString.call(b)==="[object Array]"}),h&&(r.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(b){return typeof b=="object"&&b.buffer&&b.buffer.constructor===ArrayBuffer});for(var we=function(b,z,k){return function(j){return new J(b,z,b).update(j)[k]()}},Ie=function(b,z,k){return function(j,ne){return new J(b,z,ne).update(j)[k]()}},ye=function(b,z,k){return function(j,ne,re,de){return A["cshake"+b].update(j,ne,re,de)[k]()}},ce=function(b,z,k){return function(j,ne,re,de){return A["kmac"+b].update(j,ne,re,de)[k]()}},Ne=function(b,z,k,j){for(var ne=0;ne>5,this.byteCount=this.blockCount<<2,this.outputBlocks=k>>5,this.extraBytes=(k&31)>>3;for(var j=0;j<50;++j)this.s[j]=0}J.prototype.update=function(b){if(this.finalized)throw new Error(e);var z,k=typeof b;if(k!=="string"){if(k==="object"){if(b===null)throw new Error(t);if(h&&b.constructor===ArrayBuffer)b=new Uint8Array(b);else if(!Array.isArray(b)&&(!h||!ArrayBuffer.isView(b)))throw new Error(t)}else throw new Error(t);z=!0}for(var j=this.blocks,ne=this.byteCount,re=b.length,de=this.blockCount,he=0,Ce=this.s,fe,Ue;he>2]|=b[he]<>2]|=Ue<>2]|=(192|Ue>>6)<>2]|=(128|Ue&63)<=57344?(j[fe>>2]|=(224|Ue>>12)<>2]|=(128|Ue>>6&63)<>2]|=(128|Ue&63)<>2]|=(240|Ue>>18)<>2]|=(128|Ue>>12&63)<>2]|=(128|Ue>>6&63)<>2]|=(128|Ue&63)<=ne){for(this.start=fe-ne,this.block=j[de],fe=0;fe>8,k=b&255;k>0;)ne.unshift(k),b=b>>8,k=b&255,++j;return z?ne.push(j):ne.unshift(j),this.update(ne),ne.length},J.prototype.encodeString=function(b){var z,k=typeof b;if(k!=="string"){if(k==="object"){if(b===null)throw new Error(t);if(h&&b.constructor===ArrayBuffer)b=new Uint8Array(b);else if(!Array.isArray(b)&&(!h||!ArrayBuffer.isView(b)))throw new Error(t)}else throw new Error(t);z=!0}var j=0,ne=b.length;if(z)j=ne;else for(var re=0;re=57344?j+=3:(de=65536+((de&1023)<<10|b.charCodeAt(++re)&1023),j+=4)}return j+=this.encode(j*8),this.update(b),j},J.prototype.bytepad=function(b,z){for(var k=this.encode(z),j=0;j>2]|=this.padding[z&3],this.lastByteIndex===this.byteCount)for(b[0]=b[k],z=1;z>4&15]+v[he&15]+v[he>>12&15]+v[he>>8&15]+v[he>>20&15]+v[he>>16&15]+v[he>>28&15]+v[he>>24&15];re%b===0&&(Z(z),ne=0)}return j&&(he=z[ne],de+=v[he>>4&15]+v[he&15],j>1&&(de+=v[he>>12&15]+v[he>>8&15]),j>2&&(de+=v[he>>20&15]+v[he>>16&15])),de},J.prototype.arrayBuffer=function(){this.finalize();var b=this.blockCount,z=this.s,k=this.outputBlocks,j=this.extraBytes,ne=0,re=0,de=this.outputBits>>3,he;j?he=new ArrayBuffer(k+1<<2):he=new ArrayBuffer(de);for(var Ce=new Uint32Array(he);re>8&255,de[he+2]=Ce>>16&255,de[he+3]=Ce>>24&255;re%b===0&&Z(z)}return j&&(he=re<<2,Ce=z[ne],de[he]=Ce&255,j>1&&(de[he+1]=Ce>>8&255),j>2&&(de[he+2]=Ce>>16&255)),de};function ue(b,z,k){J.call(this,b,z,k)}ue.prototype=new J,ue.prototype.finalize=function(){return this.encode(this.outputBits,!0),J.prototype.finalize.call(this)};var Z=function(b){var z,k,j,ne,re,de,he,Ce,fe,Ue,y1,x1,lt,s1,A1,Lt,u1,f1,Qt,o1,c1,kt,w1,S1,jt,h1,l1,wt,r1,d1,Dt,p1,n1,Ht,_1,E1,Ma,We,e1,ht,m1,v1,na,C1,Ke,sa,m,w,_,s,E,F,U,K,te,ge,le,Fe,ve,De,Me,qe,Te;for(j=0;j<48;j+=2)ne=b[0]^b[10]^b[20]^b[30]^b[40],re=b[1]^b[11]^b[21]^b[31]^b[41],de=b[2]^b[12]^b[22]^b[32]^b[42],he=b[3]^b[13]^b[23]^b[33]^b[43],Ce=b[4]^b[14]^b[24]^b[34]^b[44],fe=b[5]^b[15]^b[25]^b[35]^b[45],Ue=b[6]^b[16]^b[26]^b[36]^b[46],y1=b[7]^b[17]^b[27]^b[37]^b[47],x1=b[8]^b[18]^b[28]^b[38]^b[48],lt=b[9]^b[19]^b[29]^b[39]^b[49],z=x1^(de<<1|he>>>31),k=lt^(he<<1|de>>>31),b[0]^=z,b[1]^=k,b[10]^=z,b[11]^=k,b[20]^=z,b[21]^=k,b[30]^=z,b[31]^=k,b[40]^=z,b[41]^=k,z=ne^(Ce<<1|fe>>>31),k=re^(fe<<1|Ce>>>31),b[2]^=z,b[3]^=k,b[12]^=z,b[13]^=k,b[22]^=z,b[23]^=k,b[32]^=z,b[33]^=k,b[42]^=z,b[43]^=k,z=de^(Ue<<1|y1>>>31),k=he^(y1<<1|Ue>>>31),b[4]^=z,b[5]^=k,b[14]^=z,b[15]^=k,b[24]^=z,b[25]^=k,b[34]^=z,b[35]^=k,b[44]^=z,b[45]^=k,z=Ce^(x1<<1|lt>>>31),k=fe^(lt<<1|x1>>>31),b[6]^=z,b[7]^=k,b[16]^=z,b[17]^=k,b[26]^=z,b[27]^=k,b[36]^=z,b[37]^=k,b[46]^=z,b[47]^=k,z=Ue^(ne<<1|re>>>31),k=y1^(re<<1|ne>>>31),b[8]^=z,b[9]^=k,b[18]^=z,b[19]^=k,b[28]^=z,b[29]^=k,b[38]^=z,b[39]^=k,b[48]^=z,b[49]^=k,s1=b[0],A1=b[1],sa=b[11]<<4|b[10]>>>28,m=b[10]<<4|b[11]>>>28,wt=b[20]<<3|b[21]>>>29,r1=b[21]<<3|b[20]>>>29,De=b[31]<<9|b[30]>>>23,Me=b[30]<<9|b[31]>>>23,v1=b[40]<<18|b[41]>>>14,na=b[41]<<18|b[40]>>>14,Ht=b[2]<<1|b[3]>>>31,_1=b[3]<<1|b[2]>>>31,Lt=b[13]<<12|b[12]>>>20,u1=b[12]<<12|b[13]>>>20,w=b[22]<<10|b[23]>>>22,_=b[23]<<10|b[22]>>>22,d1=b[33]<<13|b[32]>>>19,Dt=b[32]<<13|b[33]>>>19,qe=b[42]<<2|b[43]>>>30,Te=b[43]<<2|b[42]>>>30,K=b[5]<<30|b[4]>>>2,te=b[4]<<30|b[5]>>>2,E1=b[14]<<6|b[15]>>>26,Ma=b[15]<<6|b[14]>>>26,f1=b[25]<<11|b[24]>>>21,Qt=b[24]<<11|b[25]>>>21,s=b[34]<<15|b[35]>>>17,E=b[35]<<15|b[34]>>>17,p1=b[45]<<29|b[44]>>>3,n1=b[44]<<29|b[45]>>>3,S1=b[6]<<28|b[7]>>>4,jt=b[7]<<28|b[6]>>>4,ge=b[17]<<23|b[16]>>>9,le=b[16]<<23|b[17]>>>9,We=b[26]<<25|b[27]>>>7,e1=b[27]<<25|b[26]>>>7,o1=b[36]<<21|b[37]>>>11,c1=b[37]<<21|b[36]>>>11,F=b[47]<<24|b[46]>>>8,U=b[46]<<24|b[47]>>>8,C1=b[8]<<27|b[9]>>>5,Ke=b[9]<<27|b[8]>>>5,h1=b[18]<<20|b[19]>>>12,l1=b[19]<<20|b[18]>>>12,Fe=b[29]<<7|b[28]>>>25,ve=b[28]<<7|b[29]>>>25,ht=b[38]<<8|b[39]>>>24,m1=b[39]<<8|b[38]>>>24,kt=b[48]<<14|b[49]>>>18,w1=b[49]<<14|b[48]>>>18,b[0]=s1^~Lt&f1,b[1]=A1^~u1&Qt,b[10]=S1^~h1&wt,b[11]=jt^~l1&r1,b[20]=Ht^~E1&We,b[21]=_1^~Ma&e1,b[30]=C1^~sa&w,b[31]=Ke^~m&_,b[40]=K^~ge&Fe,b[41]=te^~le&ve,b[2]=Lt^~f1&o1,b[3]=u1^~Qt&c1,b[12]=h1^~wt&d1,b[13]=l1^~r1&Dt,b[22]=E1^~We&ht,b[23]=Ma^~e1&m1,b[32]=sa^~w&s,b[33]=m^~_&E,b[42]=ge^~Fe&De,b[43]=le^~ve&Me,b[4]=f1^~o1&kt,b[5]=Qt^~c1&w1,b[14]=wt^~d1&p1,b[15]=r1^~Dt&n1,b[24]=We^~ht&v1,b[25]=e1^~m1&na,b[34]=w^~s&F,b[35]=_^~E&U,b[44]=Fe^~De&qe,b[45]=ve^~Me&Te,b[6]=o1^~kt&s1,b[7]=c1^~w1&A1,b[16]=d1^~p1&S1,b[17]=Dt^~n1&jt,b[26]=ht^~v1&Ht,b[27]=m1^~na&_1,b[36]=s^~F&C1,b[37]=E^~U&Ke,b[46]=De^~qe&K,b[47]=Me^~Te&te,b[8]=kt^~s1&Lt,b[9]=w1^~A1&u1,b[18]=p1^~S1&h1,b[19]=n1^~jt&l1,b[28]=v1^~Ht&E1,b[29]=na^~_1&Ma,b[38]=F^~C1&sa,b[39]=U^~Ke&m,b[48]=qe^~K&ge,b[49]=Te^~te&le,b[0]^=L[j],b[1]^=L[j+1]};if(n)j2.exports=A;else{for(P=0;P{l();Xa.notEqual=cD;Xa.notOk=hD;Xa.equal=uD;Xa.ok=Xa;Zh.exports=Xa;function uD(t,e,a){Xa(t==e,a)}function cD(t,e,a){Xa(t!=e,a)}function hD(t,e){Xa(!t,e)}function Xa(t,e){if(!t)throw new Error(e||"AssertionError")}});var tm=T((PL,em)=>{l();em.exports=$4;$4.supported=typeof WebAssembly<"u";function $4(t){if(!$4.supported)return null;var e=t&&t.imports,a=mD("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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"),r=null,i={buffer:a,memory:null,exports:null,realloc:d,onload:n};return n(function(){}),i;function d(h){i.exports.memory.grow(Math.ceil(Math.abs(h-i.memory.length)/65536)),i.memory=new Uint8Array(i.exports.memory.buffer)}function n(h){if(i.exports)return h();if(r){r.then(h.bind(null,null)).catch(h);return}try{if(t&&t.async)throw new Error("async");f({instance:new WebAssembly.Instance(new WebAssembly.Module(a),e)})}catch{r=WebAssembly.instantiate(a,e).then(f)}n(h)}function f(h){i.exports=h.instance.exports,i.memory=i.exports.memory&&i.exports.memory.buffer&&new Uint8Array(i.exports.memory.buffer)}}function mD(t){return typeof atob=="function"?new Uint8Array(atob(t).split("").map(vD)):new(require("buffer")).Buffer(t,"base64")}function vD(t){return t.charCodeAt(0)}});var sm=T((FL,Da)=>{l();var Na=z4(),T1=tm()(),Za=64,H2=[];Da.exports=Ft;var am=Da.exports.BYTES_MIN=16,rm=Da.exports.BYTES_MAX=64,UL=Da.exports.BYTES=32,im=Da.exports.KEYBYTES_MIN=16,dm=Da.exports.KEYBYTES_MAX=64,RL=Da.exports.KEYBYTES=32,pm=Da.exports.SALTBYTES=16,nm=Da.exports.PERSONALBYTES=16;function Ft(t,e,a,r,i){if(!(this instanceof Ft))return new Ft(t,e,a,r,i);if(!(T1&&T1.exports))throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),i!==!0&&(Na(t>=am,"digestLength must be at least "+am+", was given "+t),Na(t<=rm,"digestLength must be at most "+rm+", was given "+t),e!=null&&Na(e.length>=im,"key must be at least "+im+", was given "+e.length),e!=null&&Na(e.length<=dm,"key must be at least "+dm+", was given "+e.length),a!=null&&Na(a.length===pm,"salt must be exactly "+pm+", was given "+a.length),r!=null&&Na(r.length===nm,"personal must be exactly "+nm+", was given "+r.length)),H2.length||(H2.push(Za),Za+=216),this.digestLength=t,this.finalized=!1,this.pointer=H2.pop(),T1.memory.fill(0,0,64),T1.memory[0]=this.digestLength,T1.memory[1]=e?e.length:0,T1.memory[2]=1,T1.memory[3]=1,a&&T1.memory.set(a,32),r&&T1.memory.set(r,48),this.pointer+216>T1.memory.length&&T1.realloc(this.pointer+216),T1.exports.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),T1.memory.fill(0,Za,Za+e.length),T1.memory[this.pointer+200]=128)}Ft.prototype.update=function(t){return Na(this.finalized===!1,"Hash instance finalized"),Na(t,"input must be TypedArray or Buffer"),Za+t.length>T1.memory.length&&T1.realloc(Za+t.length),T1.memory.set(t,Za),T1.exports.blake2b_update(this.pointer,Za,Za+t.length),this};Ft.prototype.digest=function(t){if(Na(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,H2.push(this.pointer),T1.exports.blake2b_final(this.pointer),!t||t==="binary")return T1.memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(t==="hex")return gD(T1.memory,this.pointer+128,this.digestLength);Na(t.length>=this.digestLength,"input must be TypedArray or Buffer");for(var e=0;e{l();var Mr=z4(),X0=sm();function K2(t,e,a){var r=t[e]+t[a],i=t[e+1]+t[a+1];r>=4294967296&&i++,t[e]=r,t[e+1]=i}function fm(t,e,a,r){var i=t[e]+a;a<0&&(i+=4294967296);var d=t[e+1]+r;i>=4294967296&&d++,t[e]=i,t[e+1]=d}function vm(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function Nr(t,e,a,r,i,d){var n=J0[i],f=J0[i+1],h=J0[d],v=J0[d+1];K2(ke,t,e),fm(ke,t,n,f);var I=ke[r]^ke[t],S=ke[r+1]^ke[t+1];ke[r]=S,ke[r+1]=I,K2(ke,a,r),I=ke[e]^ke[a],S=ke[e+1]^ke[a+1],ke[e]=I>>>24^S<<8,ke[e+1]=S>>>24^I<<8,K2(ke,t,e),fm(ke,t,h,v),I=ke[r]^ke[t],S=ke[r+1]^ke[t+1],ke[r]=I>>>16^S<<16,ke[r+1]=S>>>16^I<<16,K2(ke,a,r),I=ke[e]^ke[a],S=ke[e+1]^ke[a+1],ke[e]=S>>>31^I<<1,ke[e+1]=I>>>31^S<<1}var bm=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),xD=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],ot=new Uint8Array(xD.map(function(t){return t*2})),ke=new Uint32Array(32),J0=new Uint32Array(32);function gm(t,e){var a=0;for(a=0;a<16;a++)ke[a]=t.h[a],ke[a+16]=bm[a];for(ke[24]=ke[24]^t.t,ke[25]=ke[25]^t.t/4294967296,e&&(ke[28]=~ke[28],ke[29]=~ke[29]),a=0;a<32;a++)J0[a]=vm(t.b,4*a);for(a=0;a<12;a++)Nr(0,8,16,24,ot[a*16+0],ot[a*16+1]),Nr(2,10,18,26,ot[a*16+2],ot[a*16+3]),Nr(4,12,20,28,ot[a*16+4],ot[a*16+5]),Nr(6,14,22,30,ot[a*16+6],ot[a*16+7]),Nr(0,10,20,30,ot[a*16+8],ot[a*16+9]),Nr(2,12,22,24,ot[a*16+10],ot[a*16+11]),Nr(4,14,16,26,ot[a*16+12],ot[a*16+13]),Nr(6,8,18,28,ot[a*16+14],ot[a*16+15]);for(a=0;a<16;a++)t.h[a]=t.h[a]^ke[a]^ke[a+16]}var Dr=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Ui(t,e,a,r){Dr.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=t,Dr[0]=t,e&&(Dr[1]=e.length),Dr[2]=1,Dr[3]=1,a&&Dr.set(a,32),r&&Dr.set(r,48);for(var i=0;i<16;i++)this.h[i]=bm[i]^vm(Dr,i*4);e&&(ym(this,e),this.c=128)}Ui.prototype.update=function(t){return Mr(t!=null,"input must be Uint8Array or Buffer"),ym(this,t),this};Ui.prototype.digest=function(t){var e=!t||t==="binary"||t==="hex"?new Uint8Array(this.outlen):t;return Mr(e.length>=this.outlen,"out must have at least outlen bytes of space"),AD(this,e),t==="hex"?wD(e):e};Ui.prototype.final=Ui.prototype.digest;Ui.ready=function(t){X0.ready(function(){t()})};function ym(t,e){for(var a=0;a>2]>>8*(a&3);return e}function wD(t){for(var e="",a=0;a=om,"outlen must be at least "+om+", was given "+e),Mr(e<=lm,"outlen must be at most "+lm+", was given "+e),a!=null&&Mr(a.length>=um,"key must be at least "+um+", was given "+a.length),a!=null&&Mr(a.length<=cm,"key must be at most "+cm+", was given "+a.length),r!=null&&Mr(r.length===hm,"salt must be exactly "+hm+", was given "+r.length),i!=null&&Mr(i.length===mm,"personal must be exactly "+mm+", was given "+i.length)),new xm(e,a,r,i)};At.exports.ready=function(t){X0.ready(function(){t()})};At.exports.WASM_SUPPORTED=X0.SUPPORTED;At.exports.WASM_LOADED=!1;var om=At.exports.BYTES_MIN=16,lm=At.exports.BYTES_MAX=64,QL=At.exports.BYTES=32,um=At.exports.KEYBYTES_MIN=16,cm=At.exports.KEYBYTES_MAX=64,kL=At.exports.KEYBYTES=32,hm=At.exports.SALTBYTES=16,mm=At.exports.PERSONALBYTES=16;X0.ready(function(t){t||(At.exports.WASM_LOADED=!0,xm=X0)})});var Pm=T(er=>{"use strict";l();Object.defineProperty(er,"__esModule",{value:!0});var KL=new Uint8Array(16),Dm=new Uint8Array(32);Dm[0]=9;function Se(t){var e,a=new Float64Array(16);if(t)for(e=0;e>24&255,t[e+1]=a>>16&255,t[e+2]=a>>8&255,t[e+3]=a&255,t[e+4]=r>>24&255,t[e+5]=r>>16&255,t[e+6]=r>>8&255,t[e+7]=r&255}function ND(t,e,a,r,i){var d,n=0;for(d=0;d>>8)-1}function Mm(t,e,a,r){return ND(t,e,a,r,32)}function Tr(t,e){var a;for(a=0;a<16;a++)t[a]=e[a]|0}function G4(t){var e,a,r=1;for(e=0;e<16;e++)a=t[e]+r+65535,r=Math.floor(a/65536),t[e]=a-r*65536;t[0]+=r-1+37*(r-1)}function Ri(t,e,a){for(var r,i=~(a-1),d=0;d<16;d++)r=i&(t[d]^e[d]),t[d]^=r,e[d]^=r}function Li(t,e){var a,r,i,d=Se(),n=Se();for(a=0;a<16;a++)n[a]=e[a];for(G4(n),G4(n),G4(n),r=0;r<2;r++){for(d[0]=n[0]-65517,a=1;a<15;a++)d[a]=n[a]-65535-(d[a-1]>>16&1),d[a-1]&=65535;d[15]=n[15]-32767-(d[14]>>16&1),i=d[15]>>16&1,d[14]&=65535,Ri(n,d,1-i)}for(a=0;a<16;a++)t[2*a]=n[a]&255,t[2*a+1]=n[a]>>8}function Sm(t,e){var a=new Uint8Array(32),r=new Uint8Array(32);return Li(a,t),Li(r,e),Mm(a,0,r,0)}function Tm(t){var e=new Uint8Array(32);return Li(e,t),e[0]&1}function Z4(t,e){var a;for(a=0;a<16;a++)t[a]=e[2*a]+(e[2*a+1]<<8);t[15]&=32767}function ia(t,e,a){for(var r=0;r<16;r++)t[r]=e[r]+a[r]}function pa(t,e,a){for(var r=0;r<16;r++)t[r]=e[r]-a[r]}function Je(t,e,a){var r,i,d=0,n=0,f=0,h=0,v=0,I=0,S=0,O=0,R=0,V=0,L=0,$=0,X=0,ie=0,oe=0,we=0,Ie=0,ye=0,ce=0,Ne=0,C=0,p=0,o=0,c=0,g=0,A=0,D=0,P=0,M=0,u=0,B=0,ae=a[0],se=a[1],J=a[2],ue=a[3],Z=a[4],b=a[5],z=a[6],k=a[7],j=a[8],ne=a[9],re=a[10],de=a[11],he=a[12],Ce=a[13],fe=a[14],Ue=a[15];r=e[0],d+=r*ae,n+=r*se,f+=r*J,h+=r*ue,v+=r*Z,I+=r*b,S+=r*z,O+=r*k,R+=r*j,V+=r*ne,L+=r*re,$+=r*de,X+=r*he,ie+=r*Ce,oe+=r*fe,we+=r*Ue,r=e[1],n+=r*ae,f+=r*se,h+=r*J,v+=r*ue,I+=r*Z,S+=r*b,O+=r*z,R+=r*k,V+=r*j,L+=r*ne,$+=r*re,X+=r*de,ie+=r*he,oe+=r*Ce,we+=r*fe,Ie+=r*Ue,r=e[2],f+=r*ae,h+=r*se,v+=r*J,I+=r*ue,S+=r*Z,O+=r*b,R+=r*z,V+=r*k,L+=r*j,$+=r*ne,X+=r*re,ie+=r*de,oe+=r*he,we+=r*Ce,Ie+=r*fe,ye+=r*Ue,r=e[3],h+=r*ae,v+=r*se,I+=r*J,S+=r*ue,O+=r*Z,R+=r*b,V+=r*z,L+=r*k,$+=r*j,X+=r*ne,ie+=r*re,oe+=r*de,we+=r*he,Ie+=r*Ce,ye+=r*fe,ce+=r*Ue,r=e[4],v+=r*ae,I+=r*se,S+=r*J,O+=r*ue,R+=r*Z,V+=r*b,L+=r*z,$+=r*k,X+=r*j,ie+=r*ne,oe+=r*re,we+=r*de,Ie+=r*he,ye+=r*Ce,ce+=r*fe,Ne+=r*Ue,r=e[5],I+=r*ae,S+=r*se,O+=r*J,R+=r*ue,V+=r*Z,L+=r*b,$+=r*z,X+=r*k,ie+=r*j,oe+=r*ne,we+=r*re,Ie+=r*de,ye+=r*he,ce+=r*Ce,Ne+=r*fe,C+=r*Ue,r=e[6],S+=r*ae,O+=r*se,R+=r*J,V+=r*ue,L+=r*Z,$+=r*b,X+=r*z,ie+=r*k,oe+=r*j,we+=r*ne,Ie+=r*re,ye+=r*de,ce+=r*he,Ne+=r*Ce,C+=r*fe,p+=r*Ue,r=e[7],O+=r*ae,R+=r*se,V+=r*J,L+=r*ue,$+=r*Z,X+=r*b,ie+=r*z,oe+=r*k,we+=r*j,Ie+=r*ne,ye+=r*re,ce+=r*de,Ne+=r*he,C+=r*Ce,p+=r*fe,o+=r*Ue,r=e[8],R+=r*ae,V+=r*se,L+=r*J,$+=r*ue,X+=r*Z,ie+=r*b,oe+=r*z,we+=r*k,Ie+=r*j,ye+=r*ne,ce+=r*re,Ne+=r*de,C+=r*he,p+=r*Ce,o+=r*fe,c+=r*Ue,r=e[9],V+=r*ae,L+=r*se,$+=r*J,X+=r*ue,ie+=r*Z,oe+=r*b,we+=r*z,Ie+=r*k,ye+=r*j,ce+=r*ne,Ne+=r*re,C+=r*de,p+=r*he,o+=r*Ce,c+=r*fe,g+=r*Ue,r=e[10],L+=r*ae,$+=r*se,X+=r*J,ie+=r*ue,oe+=r*Z,we+=r*b,Ie+=r*z,ye+=r*k,ce+=r*j,Ne+=r*ne,C+=r*re,p+=r*de,o+=r*he,c+=r*Ce,g+=r*fe,A+=r*Ue,r=e[11],$+=r*ae,X+=r*se,ie+=r*J,oe+=r*ue,we+=r*Z,Ie+=r*b,ye+=r*z,ce+=r*k,Ne+=r*j,C+=r*ne,p+=r*re,o+=r*de,c+=r*he,g+=r*Ce,A+=r*fe,D+=r*Ue,r=e[12],X+=r*ae,ie+=r*se,oe+=r*J,we+=r*ue,Ie+=r*Z,ye+=r*b,ce+=r*z,Ne+=r*k,C+=r*j,p+=r*ne,o+=r*re,c+=r*de,g+=r*he,A+=r*Ce,D+=r*fe,P+=r*Ue,r=e[13],ie+=r*ae,oe+=r*se,we+=r*J,Ie+=r*ue,ye+=r*Z,ce+=r*b,Ne+=r*z,C+=r*k,p+=r*j,o+=r*ne,c+=r*re,g+=r*de,A+=r*he,D+=r*Ce,P+=r*fe,M+=r*Ue,r=e[14],oe+=r*ae,we+=r*se,Ie+=r*J,ye+=r*ue,ce+=r*Z,Ne+=r*b,C+=r*z,p+=r*k,o+=r*j,c+=r*ne,g+=r*re,A+=r*de,D+=r*he,P+=r*Ce,M+=r*fe,u+=r*Ue,r=e[15],we+=r*ae,Ie+=r*se,ye+=r*J,ce+=r*ue,Ne+=r*Z,C+=r*b,p+=r*z,o+=r*k,c+=r*j,g+=r*ne,A+=r*re,D+=r*de,P+=r*he,M+=r*Ce,u+=r*fe,B+=r*Ue,d+=38*Ie,n+=38*ye,f+=38*ce,h+=38*Ne,v+=38*C,I+=38*p,S+=38*o,O+=38*c,R+=38*g,V+=38*A,L+=38*D,$+=38*P,X+=38*M,ie+=38*u,oe+=38*B,i=1,r=d+i+65535,i=Math.floor(r/65536),d=r-i*65536,r=n+i+65535,i=Math.floor(r/65536),n=r-i*65536,r=f+i+65535,i=Math.floor(r/65536),f=r-i*65536,r=h+i+65535,i=Math.floor(r/65536),h=r-i*65536,r=v+i+65535,i=Math.floor(r/65536),v=r-i*65536,r=I+i+65535,i=Math.floor(r/65536),I=r-i*65536,r=S+i+65535,i=Math.floor(r/65536),S=r-i*65536,r=O+i+65535,i=Math.floor(r/65536),O=r-i*65536,r=R+i+65535,i=Math.floor(r/65536),R=r-i*65536,r=V+i+65535,i=Math.floor(r/65536),V=r-i*65536,r=L+i+65535,i=Math.floor(r/65536),L=r-i*65536,r=$+i+65535,i=Math.floor(r/65536),$=r-i*65536,r=X+i+65535,i=Math.floor(r/65536),X=r-i*65536,r=ie+i+65535,i=Math.floor(r/65536),ie=r-i*65536,r=oe+i+65535,i=Math.floor(r/65536),oe=r-i*65536,r=we+i+65535,i=Math.floor(r/65536),we=r-i*65536,d+=i-1+37*(i-1),i=1,r=d+i+65535,i=Math.floor(r/65536),d=r-i*65536,r=n+i+65535,i=Math.floor(r/65536),n=r-i*65536,r=f+i+65535,i=Math.floor(r/65536),f=r-i*65536,r=h+i+65535,i=Math.floor(r/65536),h=r-i*65536,r=v+i+65535,i=Math.floor(r/65536),v=r-i*65536,r=I+i+65535,i=Math.floor(r/65536),I=r-i*65536,r=S+i+65535,i=Math.floor(r/65536),S=r-i*65536,r=O+i+65535,i=Math.floor(r/65536),O=r-i*65536,r=R+i+65535,i=Math.floor(r/65536),R=r-i*65536,r=V+i+65535,i=Math.floor(r/65536),V=r-i*65536,r=L+i+65535,i=Math.floor(r/65536),L=r-i*65536,r=$+i+65535,i=Math.floor(r/65536),$=r-i*65536,r=X+i+65535,i=Math.floor(r/65536),X=r-i*65536,r=ie+i+65535,i=Math.floor(r/65536),ie=r-i*65536,r=oe+i+65535,i=Math.floor(r/65536),oe=r-i*65536,r=we+i+65535,i=Math.floor(r/65536),we=r-i*65536,d+=i-1+37*(i-1),t[0]=d,t[1]=n,t[2]=f,t[3]=h,t[4]=v,t[5]=I,t[6]=S,t[7]=O,t[8]=R,t[9]=V,t[10]=L,t[11]=$,t[12]=X,t[13]=ie,t[14]=oe,t[15]=we}function da(t,e){Je(t,e,e)}function es(t,e){var a=Se(),r;for(r=0;r<16;r++)a[r]=e[r];for(r=253;r>=0;r--)da(a,a),r!==2&&r!==4&&Je(a,a,e);for(r=0;r<16;r++)t[r]=a[r]}function DD(t,e){var a=Se(),r;for(r=0;r<16;r++)a[r]=e[r];for(r=250;r>=0;r--)da(a,a),r!==1&&Je(a,a,e);for(r=0;r<16;r++)t[r]=a[r]}function Bm(t,e,a){var r=new Uint8Array(32),i=new Float64Array(80),d,n,f=Se(),h=Se(),v=Se(),I=Se(),S=Se(),O=Se();for(n=0;n<31;n++)r[n]=e[n];for(r[31]=e[31]&127|64,r[0]&=248,Z4(i,a),n=0;n<16;n++)h[n]=i[n],I[n]=f[n]=v[n]=0;for(f[0]=I[0]=1,n=254;n>=0;--n)d=r[n>>>3]>>>(n&7)&1,Ri(f,h,d),Ri(v,I,d),ia(S,f,v),pa(f,f,v),ia(v,h,I),pa(h,h,I),da(I,S),da(O,f),Je(f,v,f),Je(v,h,S),ia(S,f,v),pa(f,f,v),da(h,f),pa(v,I,O),Je(f,v,ID),ia(f,f,I),Je(v,v,f),Je(f,I,O),Je(I,h,i),da(h,S),Ri(f,h,d),Ri(v,I,d);for(n=0;n<16;n++)i[n+16]=f[n],i[n+32]=v[n],i[n+48]=h[n],i[n+64]=I[n];var R=i.subarray(32),V=i.subarray(16);return es(R,R),Je(V,V,R),Li(t,V),0}function MD(t,e){return Bm(t,e,Dm)}var Em=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Cm(t,e,a,r){for(var i=new Int32Array(16),d=new Int32Array(16),n,f,h,v,I,S,O,R,V,L,$,X,ie,oe,we,Ie,ye,ce,Ne,C,p,o,c,g,A,D,P=t[0],M=t[1],u=t[2],B=t[3],ae=t[4],se=t[5],J=t[6],ue=t[7],Z=e[0],b=e[1],z=e[2],k=e[3],j=e[4],ne=e[5],re=e[6],de=e[7],he=0;r>=128;){for(Ne=0;Ne<16;Ne++)C=8*Ne+he,i[Ne]=a[C+0]<<24|a[C+1]<<16|a[C+2]<<8|a[C+3],d[Ne]=a[C+4]<<24|a[C+5]<<16|a[C+6]<<8|a[C+7];for(Ne=0;Ne<80;Ne++)if(n=P,f=M,h=u,v=B,I=ae,S=se,O=J,R=ue,V=Z,L=b,$=z,X=k,ie=j,oe=ne,we=re,Ie=de,p=ue,o=de,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=(ae>>>14|j<<32-14)^(ae>>>18|j<<32-18)^(j>>>41-32|ae<<32-(41-32)),o=(j>>>14|ae<<32-14)^(j>>>18|ae<<32-18)^(ae>>>41-32|j<<32-(41-32)),c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,p=ae&se^~ae&J,o=j&ne^~j&re,c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,p=Em[Ne*2],o=Em[Ne*2+1],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,p=i[Ne%16],o=d[Ne%16],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,ye=A&65535|D<<16,ce=c&65535|g<<16,p=ye,o=ce,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=(P>>>28|Z<<32-28)^(Z>>>34-32|P<<32-(34-32))^(Z>>>39-32|P<<32-(39-32)),o=(Z>>>28|P<<32-28)^(P>>>34-32|Z<<32-(34-32))^(P>>>39-32|Z<<32-(39-32)),c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,p=P&M^P&u^M&u,o=Z&b^Z&z^b&z,c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,R=A&65535|D<<16,Ie=c&65535|g<<16,p=v,o=X,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=ye,o=ce,c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,v=A&65535|D<<16,X=c&65535|g<<16,M=n,u=f,B=h,ae=v,se=I,J=S,ue=O,P=R,b=V,z=L,k=$,j=X,ne=ie,re=oe,de=we,Z=Ie,Ne%16===15)for(C=0;C<16;C++)p=i[C],o=d[C],c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=i[(C+9)%16],o=d[(C+9)%16],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,ye=i[(C+1)%16],ce=d[(C+1)%16],p=(ye>>>1|ce<<32-1)^(ye>>>8|ce<<32-8)^ye>>>7,o=(ce>>>1|ye<<32-1)^(ce>>>8|ye<<32-8)^(ce>>>7|ye<<32-7),c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,ye=i[(C+14)%16],ce=d[(C+14)%16],p=(ye>>>19|ce<<32-19)^(ce>>>61-32|ye<<32-(61-32))^ye>>>6,o=(ce>>>19|ye<<32-19)^(ye>>>61-32|ce<<32-(61-32))^(ce>>>6|ye<<32-6),c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,i[C]=A&65535|D<<16,d[C]=c&65535|g<<16;p=P,o=Z,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[0],o=e[0],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[0]=P=A&65535|D<<16,e[0]=Z=c&65535|g<<16,p=M,o=b,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[1],o=e[1],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[1]=M=A&65535|D<<16,e[1]=b=c&65535|g<<16,p=u,o=z,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[2],o=e[2],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[2]=u=A&65535|D<<16,e[2]=z=c&65535|g<<16,p=B,o=k,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[3],o=e[3],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[3]=B=A&65535|D<<16,e[3]=k=c&65535|g<<16,p=ae,o=j,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[4],o=e[4],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[4]=ae=A&65535|D<<16,e[4]=j=c&65535|g<<16,p=se,o=ne,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[5],o=e[5],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[5]=se=A&65535|D<<16,e[5]=ne=c&65535|g<<16,p=J,o=re,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[6],o=e[6],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[6]=J=A&65535|D<<16,e[6]=re=c&65535|g<<16,p=ue,o=de,c=o&65535,g=o>>>16,A=p&65535,D=p>>>16,p=t[7],o=e[7],c+=o&65535,g+=o>>>16,A+=p&65535,D+=p>>>16,g+=c>>>16,A+=g>>>16,D+=A>>>16,t[7]=ue=A&65535|D<<16,e[7]=de=c&65535|g<<16,he+=128,r-=128}return r}function Z0(t,e,a){var r=new Int32Array(8),i=new Int32Array(8),d=new Uint8Array(256),n,f=a;for(r[0]=1779033703,r[1]=3144134277,r[2]=1013904242,r[3]=2773480762,r[4]=1359893119,r[5]=2600822924,r[6]=528734635,r[7]=1541459225,i[0]=4089235720,i[1]=2227873595,i[2]=4271175723,i[3]=1595750129,i[4]=2917565137,i[5]=725511199,i[6]=4215389547,i[7]=327033209,Cm(r,i,e,a),a%=128,n=0;n=0;--i)r=a[i/8|0]>>(i&7)&1,Nm(t,e,r),J4(e,t),J4(t,t),Nm(t,e,r)}function $2(t,e){var a=[Se(),Se(),Se(),Se()];Tr(a[0],wm),Tr(a[1],_m),Tr(a[2],Fi),Je(a[3],wm,_m),qm(t,a,e)}var Y4=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ts(t,e){var a,r,i,d;for(r=63;r>=32;--r){for(a=0,i=r-32,d=r-12;i>8,e[i]-=a*256;e[i]+=a,e[r]=0}for(a=0,i=0;i<32;i++)e[i]+=a-(e[31]>>4)*Y4[i],a=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=a*Y4[i];for(r=0;r<32;r++)e[r+1]+=e[r]>>8,t[r]=e[r]&255}function ed(t){var e=new Float64Array(64),a;for(a=0;a<64;a++)e[a]=t[a];for(a=0;a<64;a++)t[a]=0;ts(t,e)}function TD(t,e,a,r){var i=new Uint8Array(64),d=new Uint8Array(64),n,f,h=new Float64Array(64),v=[Se(),Se(),Se(),Se()];for(n=0;n>7&&pa(t[0],W4,t[0]),Je(t[3],t[0],t[1]),0)}function OD(t,e,a,r){var i,d,n=new Uint8Array(32),f=new Uint8Array(64),h=[Se(),Se(),Se(),Se()],v=[Se(),Se(),Se(),Se()];if(d=-1,a<64||qD(v,r))return-1;for(i=0;i=0}er.verify=LD;function QD(t){if(Br(t),t.length!==32)throw new Error("wrong seed length");for(var e=new Uint8Array(32),a=new Uint8Array(32),r=0;r<32;r++)e[r]=t[r];return MD(a,e),e[0]&=248,e[31]&=127,e[31]|=64,a[31]&=127,{public:a,private:e}}er.generateKeyPair=QD;er.default={}});var Vm=T((GL,G2)=>{l();(function(t){"use strict";var e=function(m){var w,_=new Float64Array(16);if(m)for(w=0;w>24&255,m[w+1]=_>>16&255,m[w+2]=_>>8&255,m[w+3]=_&255,m[w+4]=s>>24&255,m[w+5]=s>>16&255,m[w+6]=s>>8&255,m[w+7]=s&255}function V(m,w,_,s,E){var F,U=0;for(F=0;F>>8)-1}function L(m,w,_,s){return V(m,w,_,s,16)}function $(m,w,_,s){return V(m,w,_,s,32)}function X(m,w,_,s){for(var E=s[0]&255|(s[1]&255)<<8|(s[2]&255)<<16|(s[3]&255)<<24,F=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,U=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,K=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,te=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,ge=s[4]&255|(s[5]&255)<<8|(s[6]&255)<<16|(s[7]&255)<<24,le=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,Fe=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ve=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,De=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Me=s[8]&255|(s[9]&255)<<8|(s[10]&255)<<16|(s[11]&255)<<24,qe=_[16]&255|(_[17]&255)<<8|(_[18]&255)<<16|(_[19]&255)<<24,Te=_[20]&255|(_[21]&255)<<8|(_[22]&255)<<16|(_[23]&255)<<24,Oe=_[24]&255|(_[25]&255)<<8|(_[26]&255)<<16|(_[27]&255)<<24,Ve=_[28]&255|(_[29]&255)<<8|(_[30]&255)<<16|(_[31]&255)<<24,Pe=s[12]&255|(s[13]&255)<<8|(s[14]&255)<<16|(s[15]&255)<<24,xe=E,Ee=F,be=U,Ae=K,_e=te,me=ge,Q=le,H=Fe,ee=ve,Y=De,W=Me,pe=qe,Be=Te,Le=Oe,je=Ve,Qe=Pe,q,ze=0;ze<20;ze+=2)q=xe+Be|0,_e^=q<<7|q>>>32-7,q=_e+xe|0,ee^=q<<9|q>>>32-9,q=ee+_e|0,Be^=q<<13|q>>>32-13,q=Be+ee|0,xe^=q<<18|q>>>32-18,q=me+Ee|0,Y^=q<<7|q>>>32-7,q=Y+me|0,Le^=q<<9|q>>>32-9,q=Le+Y|0,Ee^=q<<13|q>>>32-13,q=Ee+Le|0,me^=q<<18|q>>>32-18,q=W+Q|0,je^=q<<7|q>>>32-7,q=je+W|0,be^=q<<9|q>>>32-9,q=be+je|0,Q^=q<<13|q>>>32-13,q=Q+be|0,W^=q<<18|q>>>32-18,q=Qe+pe|0,Ae^=q<<7|q>>>32-7,q=Ae+Qe|0,H^=q<<9|q>>>32-9,q=H+Ae|0,pe^=q<<13|q>>>32-13,q=pe+H|0,Qe^=q<<18|q>>>32-18,q=xe+Ae|0,Ee^=q<<7|q>>>32-7,q=Ee+xe|0,be^=q<<9|q>>>32-9,q=be+Ee|0,Ae^=q<<13|q>>>32-13,q=Ae+be|0,xe^=q<<18|q>>>32-18,q=me+_e|0,Q^=q<<7|q>>>32-7,q=Q+me|0,H^=q<<9|q>>>32-9,q=H+Q|0,_e^=q<<13|q>>>32-13,q=_e+H|0,me^=q<<18|q>>>32-18,q=W+Y|0,pe^=q<<7|q>>>32-7,q=pe+W|0,ee^=q<<9|q>>>32-9,q=ee+pe|0,Y^=q<<13|q>>>32-13,q=Y+ee|0,W^=q<<18|q>>>32-18,q=Qe+je|0,Be^=q<<7|q>>>32-7,q=Be+Qe|0,Le^=q<<9|q>>>32-9,q=Le+Be|0,je^=q<<13|q>>>32-13,q=je+Le|0,Qe^=q<<18|q>>>32-18;xe=xe+E|0,Ee=Ee+F|0,be=be+U|0,Ae=Ae+K|0,_e=_e+te|0,me=me+ge|0,Q=Q+le|0,H=H+Fe|0,ee=ee+ve|0,Y=Y+De|0,W=W+Me|0,pe=pe+qe|0,Be=Be+Te|0,Le=Le+Oe|0,je=je+Ve|0,Qe=Qe+Pe|0,m[0]=xe>>>0&255,m[1]=xe>>>8&255,m[2]=xe>>>16&255,m[3]=xe>>>24&255,m[4]=Ee>>>0&255,m[5]=Ee>>>8&255,m[6]=Ee>>>16&255,m[7]=Ee>>>24&255,m[8]=be>>>0&255,m[9]=be>>>8&255,m[10]=be>>>16&255,m[11]=be>>>24&255,m[12]=Ae>>>0&255,m[13]=Ae>>>8&255,m[14]=Ae>>>16&255,m[15]=Ae>>>24&255,m[16]=_e>>>0&255,m[17]=_e>>>8&255,m[18]=_e>>>16&255,m[19]=_e>>>24&255,m[20]=me>>>0&255,m[21]=me>>>8&255,m[22]=me>>>16&255,m[23]=me>>>24&255,m[24]=Q>>>0&255,m[25]=Q>>>8&255,m[26]=Q>>>16&255,m[27]=Q>>>24&255,m[28]=H>>>0&255,m[29]=H>>>8&255,m[30]=H>>>16&255,m[31]=H>>>24&255,m[32]=ee>>>0&255,m[33]=ee>>>8&255,m[34]=ee>>>16&255,m[35]=ee>>>24&255,m[36]=Y>>>0&255,m[37]=Y>>>8&255,m[38]=Y>>>16&255,m[39]=Y>>>24&255,m[40]=W>>>0&255,m[41]=W>>>8&255,m[42]=W>>>16&255,m[43]=W>>>24&255,m[44]=pe>>>0&255,m[45]=pe>>>8&255,m[46]=pe>>>16&255,m[47]=pe>>>24&255,m[48]=Be>>>0&255,m[49]=Be>>>8&255,m[50]=Be>>>16&255,m[51]=Be>>>24&255,m[52]=Le>>>0&255,m[53]=Le>>>8&255,m[54]=Le>>>16&255,m[55]=Le>>>24&255,m[56]=je>>>0&255,m[57]=je>>>8&255,m[58]=je>>>16&255,m[59]=je>>>24&255,m[60]=Qe>>>0&255,m[61]=Qe>>>8&255,m[62]=Qe>>>16&255,m[63]=Qe>>>24&255}function ie(m,w,_,s){for(var E=s[0]&255|(s[1]&255)<<8|(s[2]&255)<<16|(s[3]&255)<<24,F=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,U=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,K=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,te=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,ge=s[4]&255|(s[5]&255)<<8|(s[6]&255)<<16|(s[7]&255)<<24,le=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,Fe=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ve=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,De=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Me=s[8]&255|(s[9]&255)<<8|(s[10]&255)<<16|(s[11]&255)<<24,qe=_[16]&255|(_[17]&255)<<8|(_[18]&255)<<16|(_[19]&255)<<24,Te=_[20]&255|(_[21]&255)<<8|(_[22]&255)<<16|(_[23]&255)<<24,Oe=_[24]&255|(_[25]&255)<<8|(_[26]&255)<<16|(_[27]&255)<<24,Ve=_[28]&255|(_[29]&255)<<8|(_[30]&255)<<16|(_[31]&255)<<24,Pe=s[12]&255|(s[13]&255)<<8|(s[14]&255)<<16|(s[15]&255)<<24,xe=E,Ee=F,be=U,Ae=K,_e=te,me=ge,Q=le,H=Fe,ee=ve,Y=De,W=Me,pe=qe,Be=Te,Le=Oe,je=Ve,Qe=Pe,q,ze=0;ze<20;ze+=2)q=xe+Be|0,_e^=q<<7|q>>>32-7,q=_e+xe|0,ee^=q<<9|q>>>32-9,q=ee+_e|0,Be^=q<<13|q>>>32-13,q=Be+ee|0,xe^=q<<18|q>>>32-18,q=me+Ee|0,Y^=q<<7|q>>>32-7,q=Y+me|0,Le^=q<<9|q>>>32-9,q=Le+Y|0,Ee^=q<<13|q>>>32-13,q=Ee+Le|0,me^=q<<18|q>>>32-18,q=W+Q|0,je^=q<<7|q>>>32-7,q=je+W|0,be^=q<<9|q>>>32-9,q=be+je|0,Q^=q<<13|q>>>32-13,q=Q+be|0,W^=q<<18|q>>>32-18,q=Qe+pe|0,Ae^=q<<7|q>>>32-7,q=Ae+Qe|0,H^=q<<9|q>>>32-9,q=H+Ae|0,pe^=q<<13|q>>>32-13,q=pe+H|0,Qe^=q<<18|q>>>32-18,q=xe+Ae|0,Ee^=q<<7|q>>>32-7,q=Ee+xe|0,be^=q<<9|q>>>32-9,q=be+Ee|0,Ae^=q<<13|q>>>32-13,q=Ae+be|0,xe^=q<<18|q>>>32-18,q=me+_e|0,Q^=q<<7|q>>>32-7,q=Q+me|0,H^=q<<9|q>>>32-9,q=H+Q|0,_e^=q<<13|q>>>32-13,q=_e+H|0,me^=q<<18|q>>>32-18,q=W+Y|0,pe^=q<<7|q>>>32-7,q=pe+W|0,ee^=q<<9|q>>>32-9,q=ee+pe|0,Y^=q<<13|q>>>32-13,q=Y+ee|0,W^=q<<18|q>>>32-18,q=Qe+je|0,Be^=q<<7|q>>>32-7,q=Be+Qe|0,Le^=q<<9|q>>>32-9,q=Le+Be|0,je^=q<<13|q>>>32-13,q=je+Le|0,Qe^=q<<18|q>>>32-18;m[0]=xe>>>0&255,m[1]=xe>>>8&255,m[2]=xe>>>16&255,m[3]=xe>>>24&255,m[4]=me>>>0&255,m[5]=me>>>8&255,m[6]=me>>>16&255,m[7]=me>>>24&255,m[8]=W>>>0&255,m[9]=W>>>8&255,m[10]=W>>>16&255,m[11]=W>>>24&255,m[12]=Qe>>>0&255,m[13]=Qe>>>8&255,m[14]=Qe>>>16&255,m[15]=Qe>>>24&255,m[16]=Q>>>0&255,m[17]=Q>>>8&255,m[18]=Q>>>16&255,m[19]=Q>>>24&255,m[20]=H>>>0&255,m[21]=H>>>8&255,m[22]=H>>>16&255,m[23]=H>>>24&255,m[24]=ee>>>0&255,m[25]=ee>>>8&255,m[26]=ee>>>16&255,m[27]=ee>>>24&255,m[28]=Y>>>0&255,m[29]=Y>>>8&255,m[30]=Y>>>16&255,m[31]=Y>>>24&255}function oe(m,w,_,s){X(m,w,_,s)}function we(m,w,_,s){ie(m,w,_,s)}var Ie=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function ye(m,w,_,s,E,F,U){var K=new Uint8Array(16),te=new Uint8Array(64),ge,le;for(le=0;le<16;le++)K[le]=0;for(le=0;le<8;le++)K[le]=F[le];for(;E>=64;){for(oe(te,K,U,Ie),le=0;le<64;le++)m[w+le]=_[s+le]^te[le];for(ge=1,le=8;le<16;le++)ge=ge+(K[le]&255)|0,K[le]=ge&255,ge>>>=8;E-=64,w+=64,s+=64}if(E>0)for(oe(te,K,U,Ie),le=0;le=64;){for(oe(U,F,E,Ie),te=0;te<64;te++)m[w+te]=U[te];for(K=1,te=8;te<16;te++)K=K+(F[te]&255)|0,F[te]=K&255,K>>>=8;_-=64,w+=64}if(_>0)for(oe(U,F,E,Ie),te=0;te<_;te++)m[w+te]=U[te];return 0}function Ne(m,w,_,s,E){var F=new Uint8Array(32);we(F,s,E,Ie);for(var U=new Uint8Array(8),K=0;K<8;K++)U[K]=s[K+16];return ce(m,w,_,U,F)}function C(m,w,_,s,E,F,U){var K=new Uint8Array(32);we(K,F,U,Ie);for(var te=new Uint8Array(8),ge=0;ge<8;ge++)te[ge]=F[ge+16];return ye(m,w,_,s,E,te,K)}var p=function(m){this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.leftover=0,this.fin=0;var w,_,s,E,F,U,K,te;w=m[0]&255|(m[1]&255)<<8,this.r[0]=w&8191,_=m[2]&255|(m[3]&255)<<8,this.r[1]=(w>>>13|_<<3)&8191,s=m[4]&255|(m[5]&255)<<8,this.r[2]=(_>>>10|s<<6)&7939,E=m[6]&255|(m[7]&255)<<8,this.r[3]=(s>>>7|E<<9)&8191,F=m[8]&255|(m[9]&255)<<8,this.r[4]=(E>>>4|F<<12)&255,this.r[5]=F>>>1&8190,U=m[10]&255|(m[11]&255)<<8,this.r[6]=(F>>>14|U<<2)&8191,K=m[12]&255|(m[13]&255)<<8,this.r[7]=(U>>>11|K<<5)&8065,te=m[14]&255|(m[15]&255)<<8,this.r[8]=(K>>>8|te<<8)&8191,this.r[9]=te>>>5&127,this.pad[0]=m[16]&255|(m[17]&255)<<8,this.pad[1]=m[18]&255|(m[19]&255)<<8,this.pad[2]=m[20]&255|(m[21]&255)<<8,this.pad[3]=m[22]&255|(m[23]&255)<<8,this.pad[4]=m[24]&255|(m[25]&255)<<8,this.pad[5]=m[26]&255|(m[27]&255)<<8,this.pad[6]=m[28]&255|(m[29]&255)<<8,this.pad[7]=m[30]&255|(m[31]&255)<<8};p.prototype.blocks=function(m,w,_){for(var s=this.fin?0:2048,E,F,U,K,te,ge,le,Fe,ve,De,Me,qe,Te,Oe,Ve,Pe,xe,Ee,be,Ae=this.h[0],_e=this.h[1],me=this.h[2],Q=this.h[3],H=this.h[4],ee=this.h[5],Y=this.h[6],W=this.h[7],pe=this.h[8],Be=this.h[9],Le=this.r[0],je=this.r[1],Qe=this.r[2],q=this.r[3],ze=this.r[4],t1=this.r[5],a1=this.r[6],He=this.r[7],Xe=this.r[8],Ze=this.r[9];_>=16;)E=m[w+0]&255|(m[w+1]&255)<<8,Ae+=E&8191,F=m[w+2]&255|(m[w+3]&255)<<8,_e+=(E>>>13|F<<3)&8191,U=m[w+4]&255|(m[w+5]&255)<<8,me+=(F>>>10|U<<6)&8191,K=m[w+6]&255|(m[w+7]&255)<<8,Q+=(U>>>7|K<<9)&8191,te=m[w+8]&255|(m[w+9]&255)<<8,H+=(K>>>4|te<<12)&8191,ee+=te>>>1&8191,ge=m[w+10]&255|(m[w+11]&255)<<8,Y+=(te>>>14|ge<<2)&8191,le=m[w+12]&255|(m[w+13]&255)<<8,W+=(ge>>>11|le<<5)&8191,Fe=m[w+14]&255|(m[w+15]&255)<<8,pe+=(le>>>8|Fe<<8)&8191,Be+=Fe>>>5|s,ve=0,De=ve,De+=Ae*Le,De+=_e*(5*Ze),De+=me*(5*Xe),De+=Q*(5*He),De+=H*(5*a1),ve=De>>>13,De&=8191,De+=ee*(5*t1),De+=Y*(5*ze),De+=W*(5*q),De+=pe*(5*Qe),De+=Be*(5*je),ve+=De>>>13,De&=8191,Me=ve,Me+=Ae*je,Me+=_e*Le,Me+=me*(5*Ze),Me+=Q*(5*Xe),Me+=H*(5*He),ve=Me>>>13,Me&=8191,Me+=ee*(5*a1),Me+=Y*(5*t1),Me+=W*(5*ze),Me+=pe*(5*q),Me+=Be*(5*Qe),ve+=Me>>>13,Me&=8191,qe=ve,qe+=Ae*Qe,qe+=_e*je,qe+=me*Le,qe+=Q*(5*Ze),qe+=H*(5*Xe),ve=qe>>>13,qe&=8191,qe+=ee*(5*He),qe+=Y*(5*a1),qe+=W*(5*t1),qe+=pe*(5*ze),qe+=Be*(5*q),ve+=qe>>>13,qe&=8191,Te=ve,Te+=Ae*q,Te+=_e*Qe,Te+=me*je,Te+=Q*Le,Te+=H*(5*Ze),ve=Te>>>13,Te&=8191,Te+=ee*(5*Xe),Te+=Y*(5*He),Te+=W*(5*a1),Te+=pe*(5*t1),Te+=Be*(5*ze),ve+=Te>>>13,Te&=8191,Oe=ve,Oe+=Ae*ze,Oe+=_e*q,Oe+=me*Qe,Oe+=Q*je,Oe+=H*Le,ve=Oe>>>13,Oe&=8191,Oe+=ee*(5*Ze),Oe+=Y*(5*Xe),Oe+=W*(5*He),Oe+=pe*(5*a1),Oe+=Be*(5*t1),ve+=Oe>>>13,Oe&=8191,Ve=ve,Ve+=Ae*t1,Ve+=_e*ze,Ve+=me*q,Ve+=Q*Qe,Ve+=H*je,ve=Ve>>>13,Ve&=8191,Ve+=ee*Le,Ve+=Y*(5*Ze),Ve+=W*(5*Xe),Ve+=pe*(5*He),Ve+=Be*(5*a1),ve+=Ve>>>13,Ve&=8191,Pe=ve,Pe+=Ae*a1,Pe+=_e*t1,Pe+=me*ze,Pe+=Q*q,Pe+=H*Qe,ve=Pe>>>13,Pe&=8191,Pe+=ee*je,Pe+=Y*Le,Pe+=W*(5*Ze),Pe+=pe*(5*Xe),Pe+=Be*(5*He),ve+=Pe>>>13,Pe&=8191,xe=ve,xe+=Ae*He,xe+=_e*a1,xe+=me*t1,xe+=Q*ze,xe+=H*q,ve=xe>>>13,xe&=8191,xe+=ee*Qe,xe+=Y*je,xe+=W*Le,xe+=pe*(5*Ze),xe+=Be*(5*Xe),ve+=xe>>>13,xe&=8191,Ee=ve,Ee+=Ae*Xe,Ee+=_e*He,Ee+=me*a1,Ee+=Q*t1,Ee+=H*ze,ve=Ee>>>13,Ee&=8191,Ee+=ee*q,Ee+=Y*Qe,Ee+=W*je,Ee+=pe*Le,Ee+=Be*(5*Ze),ve+=Ee>>>13,Ee&=8191,be=ve,be+=Ae*Ze,be+=_e*Xe,be+=me*He,be+=Q*a1,be+=H*t1,ve=be>>>13,be&=8191,be+=ee*ze,be+=Y*q,be+=W*Qe,be+=pe*je,be+=Be*Le,ve+=be>>>13,be&=8191,ve=(ve<<2)+ve|0,ve=ve+De|0,De=ve&8191,ve=ve>>>13,Me+=ve,Ae=De,_e=Me,me=qe,Q=Te,H=Oe,ee=Ve,Y=Pe,W=xe,pe=Ee,Be=be,w+=16,_-=16;this.h[0]=Ae,this.h[1]=_e,this.h[2]=me,this.h[3]=Q,this.h[4]=H,this.h[5]=ee,this.h[6]=Y,this.h[7]=W,this.h[8]=pe,this.h[9]=Be},p.prototype.finish=function(m,w){var _=new Uint16Array(10),s,E,F,U;if(this.leftover){for(U=this.leftover,this.buffer[U++]=1;U<16;U++)this.buffer[U]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(s=this.h[1]>>>13,this.h[1]&=8191,U=2;U<10;U++)this.h[U]+=s,s=this.h[U]>>>13,this.h[U]&=8191;for(this.h[0]+=s*5,s=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=s,s=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=s,_[0]=this.h[0]+5,s=_[0]>>>13,_[0]&=8191,U=1;U<10;U++)_[U]=this.h[U]+s,s=_[U]>>>13,_[U]&=8191;for(_[9]-=1<<13,E=(s^1)-1,U=0;U<10;U++)_[U]&=E;for(E=~E,U=0;U<10;U++)this.h[U]=this.h[U]&E|_[U];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,F=this.h[0]+this.pad[0],this.h[0]=F&65535,U=1;U<8;U++)F=(this.h[U]+this.pad[U]|0)+(F>>>16)|0,this.h[U]=F&65535;m[w+0]=this.h[0]>>>0&255,m[w+1]=this.h[0]>>>8&255,m[w+2]=this.h[1]>>>0&255,m[w+3]=this.h[1]>>>8&255,m[w+4]=this.h[2]>>>0&255,m[w+5]=this.h[2]>>>8&255,m[w+6]=this.h[3]>>>0&255,m[w+7]=this.h[3]>>>8&255,m[w+8]=this.h[4]>>>0&255,m[w+9]=this.h[4]>>>8&255,m[w+10]=this.h[5]>>>0&255,m[w+11]=this.h[5]>>>8&255,m[w+12]=this.h[6]>>>0&255,m[w+13]=this.h[6]>>>8&255,m[w+14]=this.h[7]>>>0&255,m[w+15]=this.h[7]>>>8&255},p.prototype.update=function(m,w,_){var s,E;if(this.leftover){for(E=16-this.leftover,E>_&&(E=_),s=0;s=16&&(E=_-_%16,this.blocks(m,w,E),w+=E,_-=E),_){for(s=0;s<_;s++)this.buffer[this.leftover+s]=m[w+s];this.leftover+=_}};function o(m,w,_,s,E,F){var U=new p(F);return U.update(_,s,E),U.finish(m,w),0}function c(m,w,_,s,E,F){var U=new Uint8Array(16);return o(U,0,_,s,E,F),L(m,w,U,0)}function g(m,w,_,s,E){var F;if(_<32)return-1;for(C(m,0,w,0,_,s,E),o(m,16,m,32,_-32,m),F=0;F<16;F++)m[F]=0;return 0}function A(m,w,_,s,E){var F,U=new Uint8Array(32);if(_<32||(Ne(U,0,32,s,E),c(w,16,w,32,_-32,U)!==0))return-1;for(C(m,0,w,0,_,s,E),F=0;F<32;F++)m[F]=0;return 0}function D(m,w){var _;for(_=0;_<16;_++)m[_]=w[_]|0}function P(m){var w,_,s=1;for(w=0;w<16;w++)_=m[w]+s+65535,s=Math.floor(_/65536),m[w]=_-s*65536;m[0]+=s-1+37*(s-1)}function M(m,w,_){for(var s,E=~(_-1),F=0;F<16;F++)s=E&(m[F]^w[F]),m[F]^=s,w[F]^=s}function u(m,w){var _,s,E,F=e(),U=e();for(_=0;_<16;_++)U[_]=w[_];for(P(U),P(U),P(U),s=0;s<2;s++){for(F[0]=U[0]-65517,_=1;_<15;_++)F[_]=U[_]-65535-(F[_-1]>>16&1),F[_-1]&=65535;F[15]=U[15]-32767-(F[14]>>16&1),E=F[15]>>16&1,F[14]&=65535,M(U,F,1-E)}for(_=0;_<16;_++)m[2*_]=U[_]&255,m[2*_+1]=U[_]>>8}function B(m,w){var _=new Uint8Array(32),s=new Uint8Array(32);return u(_,m),u(s,w),$(_,0,s,0)}function ae(m){var w=new Uint8Array(32);return u(w,m),w[0]&1}function se(m,w){var _;for(_=0;_<16;_++)m[_]=w[2*_]+(w[2*_+1]<<8);m[15]&=32767}function J(m,w,_){for(var s=0;s<16;s++)m[s]=w[s]+_[s]}function ue(m,w,_){for(var s=0;s<16;s++)m[s]=w[s]-_[s]}function Z(m,w,_){var s,E,F=0,U=0,K=0,te=0,ge=0,le=0,Fe=0,ve=0,De=0,Me=0,qe=0,Te=0,Oe=0,Ve=0,Pe=0,xe=0,Ee=0,be=0,Ae=0,_e=0,me=0,Q=0,H=0,ee=0,Y=0,W=0,pe=0,Be=0,Le=0,je=0,Qe=0,q=_[0],ze=_[1],t1=_[2],a1=_[3],He=_[4],Xe=_[5],Ze=_[6],Q1=_[7],b1=_[8],O1=_[9],P1=_[10],V1=_[11],H1=_[12],it=_[13],dt=_[14],pt=_[15];s=w[0],F+=s*q,U+=s*ze,K+=s*t1,te+=s*a1,ge+=s*He,le+=s*Xe,Fe+=s*Ze,ve+=s*Q1,De+=s*b1,Me+=s*O1,qe+=s*P1,Te+=s*V1,Oe+=s*H1,Ve+=s*it,Pe+=s*dt,xe+=s*pt,s=w[1],U+=s*q,K+=s*ze,te+=s*t1,ge+=s*a1,le+=s*He,Fe+=s*Xe,ve+=s*Ze,De+=s*Q1,Me+=s*b1,qe+=s*O1,Te+=s*P1,Oe+=s*V1,Ve+=s*H1,Pe+=s*it,xe+=s*dt,Ee+=s*pt,s=w[2],K+=s*q,te+=s*ze,ge+=s*t1,le+=s*a1,Fe+=s*He,ve+=s*Xe,De+=s*Ze,Me+=s*Q1,qe+=s*b1,Te+=s*O1,Oe+=s*P1,Ve+=s*V1,Pe+=s*H1,xe+=s*it,Ee+=s*dt,be+=s*pt,s=w[3],te+=s*q,ge+=s*ze,le+=s*t1,Fe+=s*a1,ve+=s*He,De+=s*Xe,Me+=s*Ze,qe+=s*Q1,Te+=s*b1,Oe+=s*O1,Ve+=s*P1,Pe+=s*V1,xe+=s*H1,Ee+=s*it,be+=s*dt,Ae+=s*pt,s=w[4],ge+=s*q,le+=s*ze,Fe+=s*t1,ve+=s*a1,De+=s*He,Me+=s*Xe,qe+=s*Ze,Te+=s*Q1,Oe+=s*b1,Ve+=s*O1,Pe+=s*P1,xe+=s*V1,Ee+=s*H1,be+=s*it,Ae+=s*dt,_e+=s*pt,s=w[5],le+=s*q,Fe+=s*ze,ve+=s*t1,De+=s*a1,Me+=s*He,qe+=s*Xe,Te+=s*Ze,Oe+=s*Q1,Ve+=s*b1,Pe+=s*O1,xe+=s*P1,Ee+=s*V1,be+=s*H1,Ae+=s*it,_e+=s*dt,me+=s*pt,s=w[6],Fe+=s*q,ve+=s*ze,De+=s*t1,Me+=s*a1,qe+=s*He,Te+=s*Xe,Oe+=s*Ze,Ve+=s*Q1,Pe+=s*b1,xe+=s*O1,Ee+=s*P1,be+=s*V1,Ae+=s*H1,_e+=s*it,me+=s*dt,Q+=s*pt,s=w[7],ve+=s*q,De+=s*ze,Me+=s*t1,qe+=s*a1,Te+=s*He,Oe+=s*Xe,Ve+=s*Ze,Pe+=s*Q1,xe+=s*b1,Ee+=s*O1,be+=s*P1,Ae+=s*V1,_e+=s*H1,me+=s*it,Q+=s*dt,H+=s*pt,s=w[8],De+=s*q,Me+=s*ze,qe+=s*t1,Te+=s*a1,Oe+=s*He,Ve+=s*Xe,Pe+=s*Ze,xe+=s*Q1,Ee+=s*b1,be+=s*O1,Ae+=s*P1,_e+=s*V1,me+=s*H1,Q+=s*it,H+=s*dt,ee+=s*pt,s=w[9],Me+=s*q,qe+=s*ze,Te+=s*t1,Oe+=s*a1,Ve+=s*He,Pe+=s*Xe,xe+=s*Ze,Ee+=s*Q1,be+=s*b1,Ae+=s*O1,_e+=s*P1,me+=s*V1,Q+=s*H1,H+=s*it,ee+=s*dt,Y+=s*pt,s=w[10],qe+=s*q,Te+=s*ze,Oe+=s*t1,Ve+=s*a1,Pe+=s*He,xe+=s*Xe,Ee+=s*Ze,be+=s*Q1,Ae+=s*b1,_e+=s*O1,me+=s*P1,Q+=s*V1,H+=s*H1,ee+=s*it,Y+=s*dt,W+=s*pt,s=w[11],Te+=s*q,Oe+=s*ze,Ve+=s*t1,Pe+=s*a1,xe+=s*He,Ee+=s*Xe,be+=s*Ze,Ae+=s*Q1,_e+=s*b1,me+=s*O1,Q+=s*P1,H+=s*V1,ee+=s*H1,Y+=s*it,W+=s*dt,pe+=s*pt,s=w[12],Oe+=s*q,Ve+=s*ze,Pe+=s*t1,xe+=s*a1,Ee+=s*He,be+=s*Xe,Ae+=s*Ze,_e+=s*Q1,me+=s*b1,Q+=s*O1,H+=s*P1,ee+=s*V1,Y+=s*H1,W+=s*it,pe+=s*dt,Be+=s*pt,s=w[13],Ve+=s*q,Pe+=s*ze,xe+=s*t1,Ee+=s*a1,be+=s*He,Ae+=s*Xe,_e+=s*Ze,me+=s*Q1,Q+=s*b1,H+=s*O1,ee+=s*P1,Y+=s*V1,W+=s*H1,pe+=s*it,Be+=s*dt,Le+=s*pt,s=w[14],Pe+=s*q,xe+=s*ze,Ee+=s*t1,be+=s*a1,Ae+=s*He,_e+=s*Xe,me+=s*Ze,Q+=s*Q1,H+=s*b1,ee+=s*O1,Y+=s*P1,W+=s*V1,pe+=s*H1,Be+=s*it,Le+=s*dt,je+=s*pt,s=w[15],xe+=s*q,Ee+=s*ze,be+=s*t1,Ae+=s*a1,_e+=s*He,me+=s*Xe,Q+=s*Ze,H+=s*Q1,ee+=s*b1,Y+=s*O1,W+=s*P1,pe+=s*V1,Be+=s*H1,Le+=s*it,je+=s*dt,Qe+=s*pt,F+=38*Ee,U+=38*be,K+=38*Ae,te+=38*_e,ge+=38*me,le+=38*Q,Fe+=38*H,ve+=38*ee,De+=38*Y,Me+=38*W,qe+=38*pe,Te+=38*Be,Oe+=38*Le,Ve+=38*je,Pe+=38*Qe,E=1,s=F+E+65535,E=Math.floor(s/65536),F=s-E*65536,s=U+E+65535,E=Math.floor(s/65536),U=s-E*65536,s=K+E+65535,E=Math.floor(s/65536),K=s-E*65536,s=te+E+65535,E=Math.floor(s/65536),te=s-E*65536,s=ge+E+65535,E=Math.floor(s/65536),ge=s-E*65536,s=le+E+65535,E=Math.floor(s/65536),le=s-E*65536,s=Fe+E+65535,E=Math.floor(s/65536),Fe=s-E*65536,s=ve+E+65535,E=Math.floor(s/65536),ve=s-E*65536,s=De+E+65535,E=Math.floor(s/65536),De=s-E*65536,s=Me+E+65535,E=Math.floor(s/65536),Me=s-E*65536,s=qe+E+65535,E=Math.floor(s/65536),qe=s-E*65536,s=Te+E+65535,E=Math.floor(s/65536),Te=s-E*65536,s=Oe+E+65535,E=Math.floor(s/65536),Oe=s-E*65536,s=Ve+E+65535,E=Math.floor(s/65536),Ve=s-E*65536,s=Pe+E+65535,E=Math.floor(s/65536),Pe=s-E*65536,s=xe+E+65535,E=Math.floor(s/65536),xe=s-E*65536,F+=E-1+37*(E-1),E=1,s=F+E+65535,E=Math.floor(s/65536),F=s-E*65536,s=U+E+65535,E=Math.floor(s/65536),U=s-E*65536,s=K+E+65535,E=Math.floor(s/65536),K=s-E*65536,s=te+E+65535,E=Math.floor(s/65536),te=s-E*65536,s=ge+E+65535,E=Math.floor(s/65536),ge=s-E*65536,s=le+E+65535,E=Math.floor(s/65536),le=s-E*65536,s=Fe+E+65535,E=Math.floor(s/65536),Fe=s-E*65536,s=ve+E+65535,E=Math.floor(s/65536),ve=s-E*65536,s=De+E+65535,E=Math.floor(s/65536),De=s-E*65536,s=Me+E+65535,E=Math.floor(s/65536),Me=s-E*65536,s=qe+E+65535,E=Math.floor(s/65536),qe=s-E*65536,s=Te+E+65535,E=Math.floor(s/65536),Te=s-E*65536,s=Oe+E+65535,E=Math.floor(s/65536),Oe=s-E*65536,s=Ve+E+65535,E=Math.floor(s/65536),Ve=s-E*65536,s=Pe+E+65535,E=Math.floor(s/65536),Pe=s-E*65536,s=xe+E+65535,E=Math.floor(s/65536),xe=s-E*65536,F+=E-1+37*(E-1),m[0]=F,m[1]=U,m[2]=K,m[3]=te,m[4]=ge,m[5]=le,m[6]=Fe,m[7]=ve,m[8]=De,m[9]=Me,m[10]=qe,m[11]=Te,m[12]=Oe,m[13]=Ve,m[14]=Pe,m[15]=xe}function b(m,w){Z(m,w,w)}function z(m,w){var _=e(),s;for(s=0;s<16;s++)_[s]=w[s];for(s=253;s>=0;s--)b(_,_),s!==2&&s!==4&&Z(_,_,w);for(s=0;s<16;s++)m[s]=_[s]}function k(m,w){var _=e(),s;for(s=0;s<16;s++)_[s]=w[s];for(s=250;s>=0;s--)b(_,_),s!==1&&Z(_,_,w);for(s=0;s<16;s++)m[s]=_[s]}function j(m,w,_){var s=new Uint8Array(32),E=new Float64Array(80),F,U,K=e(),te=e(),ge=e(),le=e(),Fe=e(),ve=e();for(U=0;U<31;U++)s[U]=w[U];for(s[31]=w[31]&127|64,s[0]&=248,se(E,_),U=0;U<16;U++)te[U]=E[U],le[U]=K[U]=ge[U]=0;for(K[0]=le[0]=1,U=254;U>=0;--U)F=s[U>>>3]>>>(U&7)&1,M(K,te,F),M(ge,le,F),J(Fe,K,ge),ue(K,K,ge),J(ge,te,le),ue(te,te,le),b(le,Fe),b(ve,K),Z(K,ge,K),Z(ge,te,Fe),J(Fe,K,ge),ue(K,K,ge),b(te,K),ue(ge,le,ve),Z(K,ge,f),J(K,K,le),Z(ge,ge,K),Z(K,le,ve),Z(le,te,E),b(te,Fe),M(K,te,F),M(ge,le,F);for(U=0;U<16;U++)E[U+16]=K[U],E[U+32]=ge[U],E[U+48]=te[U],E[U+64]=le[U];var De=E.subarray(32),Me=E.subarray(16);return z(De,De),Z(Me,Me,De),u(m,Me),0}function ne(m,w){return j(m,w,i)}function re(m,w){return a(w,32),ne(m,w)}function de(m,w,_){var s=new Uint8Array(32);return j(s,_,w),we(m,r,s,Ie)}var he=g,Ce=A;function fe(m,w,_,s,E,F){var U=new Uint8Array(32);return de(U,E,F),he(m,w,_,s,U)}function Ue(m,w,_,s,E,F){var U=new Uint8Array(32);return de(U,E,F),Ce(m,w,_,s,U)}var y1=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function x1(m,w,_,s){for(var E=new Int32Array(16),F=new Int32Array(16),U,K,te,ge,le,Fe,ve,De,Me,qe,Te,Oe,Ve,Pe,xe,Ee,be,Ae,_e,me,Q,H,ee,Y,W,pe,Be=m[0],Le=m[1],je=m[2],Qe=m[3],q=m[4],ze=m[5],t1=m[6],a1=m[7],He=w[0],Xe=w[1],Ze=w[2],Q1=w[3],b1=w[4],O1=w[5],P1=w[6],V1=w[7],H1=0;s>=128;){for(_e=0;_e<16;_e++)me=8*_e+H1,E[_e]=_[me+0]<<24|_[me+1]<<16|_[me+2]<<8|_[me+3],F[_e]=_[me+4]<<24|_[me+5]<<16|_[me+6]<<8|_[me+7];for(_e=0;_e<80;_e++)if(U=Be,K=Le,te=je,ge=Qe,le=q,Fe=ze,ve=t1,De=a1,Me=He,qe=Xe,Te=Ze,Oe=Q1,Ve=b1,Pe=O1,xe=P1,Ee=V1,Q=a1,H=V1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=(q>>>14|b1<<32-14)^(q>>>18|b1<<32-18)^(b1>>>41-32|q<<32-(41-32)),H=(b1>>>14|q<<32-14)^(b1>>>18|q<<32-18)^(q>>>41-32|b1<<32-(41-32)),ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Q=q&ze^~q&t1,H=b1&O1^~b1&P1,ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Q=y1[_e*2],H=y1[_e*2+1],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Q=E[_e%16],H=F[_e%16],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,be=W&65535|pe<<16,Ae=ee&65535|Y<<16,Q=be,H=Ae,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=(Be>>>28|He<<32-28)^(He>>>34-32|Be<<32-(34-32))^(He>>>39-32|Be<<32-(39-32)),H=(He>>>28|Be<<32-28)^(Be>>>34-32|He<<32-(34-32))^(Be>>>39-32|He<<32-(39-32)),ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Q=Be&Le^Be&je^Le&je,H=He&Xe^He&Ze^Xe&Ze,ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,De=W&65535|pe<<16,Ee=ee&65535|Y<<16,Q=ge,H=Oe,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=be,H=Ae,ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,ge=W&65535|pe<<16,Oe=ee&65535|Y<<16,Le=U,je=K,Qe=te,q=ge,ze=le,t1=Fe,a1=ve,Be=De,Xe=Me,Ze=qe,Q1=Te,b1=Oe,O1=Ve,P1=Pe,V1=xe,He=Ee,_e%16===15)for(me=0;me<16;me++)Q=E[me],H=F[me],ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=E[(me+9)%16],H=F[(me+9)%16],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,be=E[(me+1)%16],Ae=F[(me+1)%16],Q=(be>>>1|Ae<<32-1)^(be>>>8|Ae<<32-8)^be>>>7,H=(Ae>>>1|be<<32-1)^(Ae>>>8|be<<32-8)^(Ae>>>7|be<<32-7),ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,be=E[(me+14)%16],Ae=F[(me+14)%16],Q=(be>>>19|Ae<<32-19)^(Ae>>>61-32|be<<32-(61-32))^be>>>6,H=(Ae>>>19|be<<32-19)^(be>>>61-32|Ae<<32-(61-32))^(Ae>>>6|be<<32-6),ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,E[me]=W&65535|pe<<16,F[me]=ee&65535|Y<<16;Q=Be,H=He,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[0],H=w[0],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[0]=Be=W&65535|pe<<16,w[0]=He=ee&65535|Y<<16,Q=Le,H=Xe,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[1],H=w[1],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[1]=Le=W&65535|pe<<16,w[1]=Xe=ee&65535|Y<<16,Q=je,H=Ze,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[2],H=w[2],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[2]=je=W&65535|pe<<16,w[2]=Ze=ee&65535|Y<<16,Q=Qe,H=Q1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[3],H=w[3],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[3]=Qe=W&65535|pe<<16,w[3]=Q1=ee&65535|Y<<16,Q=q,H=b1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[4],H=w[4],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[4]=q=W&65535|pe<<16,w[4]=b1=ee&65535|Y<<16,Q=ze,H=O1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[5],H=w[5],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[5]=ze=W&65535|pe<<16,w[5]=O1=ee&65535|Y<<16,Q=t1,H=P1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[6],H=w[6],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[6]=t1=W&65535|pe<<16,w[6]=P1=ee&65535|Y<<16,Q=a1,H=V1,ee=H&65535,Y=H>>>16,W=Q&65535,pe=Q>>>16,Q=m[7],H=w[7],ee+=H&65535,Y+=H>>>16,W+=Q&65535,pe+=Q>>>16,Y+=ee>>>16,W+=Y>>>16,pe+=W>>>16,m[7]=a1=W&65535|pe<<16,w[7]=V1=ee&65535|Y<<16,H1+=128,s-=128}return s}function lt(m,w,_){var s=new Int32Array(8),E=new Int32Array(8),F=new Uint8Array(256),U,K=_;for(s[0]=1779033703,s[1]=3144134277,s[2]=1013904242,s[3]=2773480762,s[4]=1359893119,s[5]=2600822924,s[6]=528734635,s[7]=1541459225,E[0]=4089235720,E[1]=2227873595,E[2]=4271175723,E[3]=1595750129,E[4]=2917565137,E[5]=725511199,E[6]=4215389547,E[7]=327033209,x1(s,E,w,_),_%=128,U=0;U<_;U++)F[U]=w[K-_+U];for(F[_]=128,_=256-128*(_<112?1:0),F[_-9]=0,R(F,_-8,K/536870912|0,K<<3),x1(s,E,F,_),U=0;U<8;U++)R(m,8*U,s[U],E[U]);return 0}function s1(m,w){var _=e(),s=e(),E=e(),F=e(),U=e(),K=e(),te=e(),ge=e(),le=e();ue(_,m[1],m[0]),ue(le,w[1],w[0]),Z(_,_,le),J(s,m[0],m[1]),J(le,w[0],w[1]),Z(s,s,le),Z(E,m[3],w[3]),Z(E,E,v),Z(F,m[2],w[2]),J(F,F,F),ue(U,s,_),ue(K,F,E),J(te,F,E),J(ge,s,_),Z(m[0],U,K),Z(m[1],ge,te),Z(m[2],te,K),Z(m[3],U,ge)}function A1(m,w,_){var s;for(s=0;s<4;s++)M(m[s],w[s],_)}function Lt(m,w){var _=e(),s=e(),E=e();z(E,w[2]),Z(_,w[0],E),Z(s,w[1],E),u(m,s),m[31]^=ae(_)<<7}function u1(m,w,_){var s,E;for(D(m[0],d),D(m[1],n),D(m[2],n),D(m[3],d),E=255;E>=0;--E)s=_[E/8|0]>>(E&7)&1,A1(m,w,s),s1(w,m),s1(m,m),A1(m,w,s)}function f1(m,w){var _=[e(),e(),e(),e()];D(_[0],I),D(_[1],S),D(_[2],n),Z(_[3],I,S),u1(m,_,w)}function Qt(m,w,_){var s=new Uint8Array(64),E=[e(),e(),e(),e()],F;for(_||a(w,32),lt(s,w,32),s[0]&=248,s[31]&=127,s[31]|=64,f1(E,s),Lt(m,E),F=0;F<32;F++)w[F+32]=m[F];return 0}var o1=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function c1(m,w){var _,s,E,F;for(s=63;s>=32;--s){for(_=0,E=s-32,F=s-12;E>4)*o1[E],_=w[E]>>8,w[E]&=255;for(E=0;E<32;E++)w[E]-=_*o1[E];for(s=0;s<32;s++)w[s+1]+=w[s]>>8,m[s]=w[s]&255}function kt(m){var w=new Float64Array(64),_;for(_=0;_<64;_++)w[_]=m[_];for(_=0;_<64;_++)m[_]=0;c1(m,w)}function w1(m,w,_,s){var E=new Uint8Array(64),F=new Uint8Array(64),U=new Uint8Array(64),K,te,ge=new Float64Array(64),le=[e(),e(),e(),e()];lt(E,s,32),E[0]&=248,E[31]&=127,E[31]|=64;var Fe=_+64;for(K=0;K<_;K++)m[64+K]=w[K];for(K=0;K<32;K++)m[32+K]=E[32+K];for(lt(U,m.subarray(32),_+32),kt(U),f1(le,U),Lt(m,le),K=32;K<64;K++)m[K]=s[K];for(lt(F,m,_+64),kt(F),K=0;K<64;K++)ge[K]=0;for(K=0;K<32;K++)ge[K]=U[K];for(K=0;K<32;K++)for(te=0;te<32;te++)ge[K+te]+=F[K]*E[te];return c1(m.subarray(32),ge),Fe}function S1(m,w){var _=e(),s=e(),E=e(),F=e(),U=e(),K=e(),te=e();return D(m[2],n),se(m[1],w),b(E,m[1]),Z(F,E,h),ue(E,E,m[2]),J(F,m[2],F),b(U,F),b(K,U),Z(te,K,U),Z(_,te,E),Z(_,_,F),k(_,_),Z(_,_,E),Z(_,_,F),Z(_,_,F),Z(m[0],_,F),b(s,m[0]),Z(s,s,F),B(s,E)&&Z(m[0],m[0],O),b(s,m[0]),Z(s,s,F),B(s,E)?-1:(ae(m[0])===w[31]>>7&&ue(m[0],d,m[0]),Z(m[3],m[0],m[1]),0)}function jt(m,w,_,s){var E,F=new Uint8Array(32),U=new Uint8Array(64),K=[e(),e(),e(),e()],te=[e(),e(),e(),e()];if(_<64||S1(te,s))return-1;for(E=0;E<_;E++)m[E]=w[E];for(E=0;E<32;E++)m[E+32]=s[E];if(lt(U,m,_),kt(U),u1(K,te,U),f1(te,w.subarray(32)),s1(K,te),Lt(F,K),_-=64,$(w,0,F,0)){for(E=0;E<_;E++)m[E]=0;return-1}for(E=0;E<_;E++)m[E]=w[E+64];return _}var h1=32,l1=24,wt=32,r1=16,d1=32,Dt=32,p1=32,n1=32,Ht=32,_1=l1,E1=wt,Ma=r1,We=64,e1=32,ht=64,m1=32,v1=64;t.lowlevel={crypto_core_hsalsa20:we,crypto_stream_xor:C,crypto_stream:Ne,crypto_stream_salsa20_xor:ye,crypto_stream_salsa20:ce,crypto_onetimeauth:o,crypto_onetimeauth_verify:c,crypto_verify_16:L,crypto_verify_32:$,crypto_secretbox:g,crypto_secretbox_open:A,crypto_scalarmult:j,crypto_scalarmult_base:ne,crypto_box_beforenm:de,crypto_box_afternm:he,crypto_box:fe,crypto_box_open:Ue,crypto_box_keypair:re,crypto_hash:lt,crypto_sign:w1,crypto_sign_keypair:Qt,crypto_sign_open:jt,crypto_secretbox_KEYBYTES:h1,crypto_secretbox_NONCEBYTES:l1,crypto_secretbox_ZEROBYTES:wt,crypto_secretbox_BOXZEROBYTES:r1,crypto_scalarmult_BYTES:d1,crypto_scalarmult_SCALARBYTES:Dt,crypto_box_PUBLICKEYBYTES:p1,crypto_box_SECRETKEYBYTES:n1,crypto_box_BEFORENMBYTES:Ht,crypto_box_NONCEBYTES:_1,crypto_box_ZEROBYTES:E1,crypto_box_BOXZEROBYTES:Ma,crypto_sign_BYTES:We,crypto_sign_PUBLICKEYBYTES:e1,crypto_sign_SECRETKEYBYTES:ht,crypto_sign_SEEDBYTES:m1,crypto_hash_BYTES:v1,gf:e,D:h,L:o1,pack25519:u,unpack25519:se,M:Z,A:J,S:b,Z:ue,pow2523:k,add:s1,set25519:D,modL:c1,scalarmult:u1,scalarbase:f1};function na(m,w){if(m.length!==h1)throw new Error("bad key size");if(w.length!==l1)throw new Error("bad nonce size")}function C1(m,w){if(m.length!==p1)throw new Error("bad public key size");if(w.length!==n1)throw new Error("bad secret key size")}function Ke(){for(var m=0;m=0},t.sign.keyPair=function(){var m=new Uint8Array(e1),w=new Uint8Array(ht);return Qt(m,w),{publicKey:m,secretKey:w}},t.sign.keyPair.fromSecretKey=function(m){if(Ke(m),m.length!==ht)throw new Error("bad secret key size");for(var w=new Uint8Array(e1),_=0;_{l();(function(t,e){"use strict";typeof Y2<"u"&&Y2.exports?Y2.exports=e(Vm()):t.ed2curve=e(t.nacl)})(Um,function(t){"use strict";if(!t)throw new Error("tweetnacl not loaded");var e=function(C){var p,o=new Float64Array(16);if(C)for(p=0;p=0;c--)O(o,o),c!==2&&c!==4&&S(o,o,p);for(c=0;c<16;c++)C[c]=o[c]}function V(C,p){var o,c,g,A=e(),D=e();for(o=0;o<16;o++)D[o]=p[o];for(n(D),n(D),n(D),c=0;c<2;c++){for(A[0]=D[0]-65517,o=1;o<15;o++)A[o]=D[o]-65535-(A[o-1]>>16&1),A[o-1]&=65535;A[15]=D[15]-32767-(A[14]>>16&1),g=A[15]>>16&1,A[14]&=65535,f(D,A,1-g)}for(o=0;o<16;o++)C[2*o]=D[o]&255,C[2*o+1]=D[o]>>8}function L(C){var p=new Uint8Array(32);return V(p,C),p[0]&1}function $(C,p,o,c,g){var A,D=0;for(A=0;A>>8)-1}function X(C,p,o,c){return $(C,p,o,c,32)}function ie(C,p){var o=new Uint8Array(32),c=new Uint8Array(32);return V(o,C),V(c,p),X(o,0,c,0)}function oe(C,p){var o=e(),c;for(c=0;c<16;c++)o[c]=p[c];for(c=250;c>=0;c--)O(o,o),c!==1&&S(o,o,p);for(c=0;c<16;c++)C[c]=o[c]}function we(C,p){var o;for(o=0;o<16;o++)C[o]=p[o]|0}function Ie(C,p){var o=e(),c=e(),g=e(),A=e(),D=e(),P=e(),M=e();return we(C[2],r),h(C[1],p),O(g,C[1]),S(A,g,i),I(g,g,C[2]),v(A,C[2],A),O(D,A),O(P,D),S(M,P,D),S(o,M,g),S(o,o,A),oe(o,o),S(o,o,g),S(o,o,A),S(o,o,A),S(C[0],o,A),O(c,C[0]),S(c,c,A),ie(c,g)&&S(C[0],C[0],d),O(c,C[0]),S(c,c,A),ie(c,g)?-1:(L(C[0])===p[31]>>7&&I(C[0],a,C[0]),S(C[3],C[0],C[1]),0)}function ye(C){var p=new Uint8Array(32),o=[e(),e(),e(),e()],c=e(),g=e();if(Ie(o,C))return null;var A=o[1];return v(c,r,A),I(g,r,A),R(g,g),S(c,c,g),V(p,c),p}function ce(C){var p=new Uint8Array(64),o=new Uint8Array(32),c;for(t.lowlevel.crypto_hash(p,C,32),p[0]&=248,p[31]&=127,p[31]|=64,c=0;c<32;c++)o[c]=p[c];for(c=0;c<64;c++)p[c]=0;return o}function Ne(C){var p=ye(C.publicKey);return p?{publicKey:p,secretKey:ce(C.secretKey)}:null}return{convertPublicKey:ye,convertSecretKey:ce,convertKeyPair:Ne}})});var Hm=T(fs=>{"use strict";l();Object.defineProperty(fs,"__esModule",{value:!0});function YD(t){var e=4,a=t.length,r=a%e;if(!r)return t;var i=a,d=e-r,n=a+d,f=N.alloc(n);for(f.write(t);d--;)f.write("=",i++);return f.toString()}fs.default=YD});var zm=T(us=>{"use strict";l();Object.defineProperty(us,"__esModule",{value:!0});var WD=Hm();function Km(t,e){return e===void 0&&(e="utf8"),N.isBuffer(t)?os(t.toString("base64")):os(N.from(t,e).toString("base64"))}function JD(t,e){return e===void 0&&(e="utf8"),N.from(ls(t),"base64").toString(e)}function ls(t){return t=t.toString(),WD.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function os(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function XD(t){return N.from(ls(t),"base64")}var Hi=Km;Hi.encode=Km;Hi.decode=JD;Hi.toBase64=ls;Hi.fromBase64=os;Hi.toBuffer=XD;us.default=Hi});var $m=T((rQ,pp)=>{l();pp.exports=zm().default;pp.exports.default=pp.exports});var nM={};op(nM,{Crypto:()=>ss,Utils:()=>b4,default:()=>fp});module.exports=rv(nM);l();l();var $a=fa(Ip(),1),Si=fa(m4(),1);var b4={};op(b4,{concatUint8Arrays:()=>g1,decodeInt32:()=>v4,encodeInt32:()=>ya,encodeInt64:()=>E2,fromBigInt:()=>hC,hexToUint8Array:()=>i1,isHex:()=>Ye,originPrivateKey:()=>uC,toBigInt:()=>cC,toByteArray:()=>yr,uint8ArrayToHex:()=>I1});l();var cc=[];for(let t=0;t<=255;++t){let e=t.toString(16).padStart(2,"0");cc.push(e)}var uC="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function Ye(t){return/^([0-9A-Fa-f])*$/.test(t)}function i1(t){return new Uint8Array(t.match(/.{1,2}/g).map(e=>parseInt(e,16)))}function I1(t){let e=new Uint8Array(t),a=new Array(e.length);for(let r=0;rr+i.byteLength,0),{buffer:a}=t.reduce(({buffer:r,pos:i},d)=>(r.set(new Uint8Array(d),i),{buffer:r,pos:i+d.byteLength}),{buffer:new Uint8Array(e),pos:0});return a}function ya(t){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,t,!0),new Uint8Array(e).reverse()}function E2(t){let e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,BigInt(t),!0),new Uint8Array(e).reverse()}function v4(t){let e=0;for(let a=0;a=256;)t=t>>>8,e.unshift(t&255);return e}async function hc(t){let e=new URL("/api",t);return(0,$a.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { +`+a)}function Fr(t,e,a,r,i){if(t.listenerCount("wsClientError")){let d=new Error(i);Error.captureStackTrace(d,Fr),t.emit("wsClientError",d,a,e)}else m0(a,r,i)}});var ho=T((eB,co)=>{"use strict";l();var Fa=Wp();Fa.createWebSocketStream=ao();Fa.Server=uo();Fa.Receiver=kp();Fa.Sender=jp();Fa.WebSocket=Fa;Fa.WebSocketServer=Fa.Server;co.exports=Fa});var vo=T((aB,mo)=>{"use strict";l();mo.exports=ho()});var fr=T((iB,bo)=>{l();var xg=bo.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=xg)});var Nd=T((pB,go)=>{l();var wg=go.exports={version:"2.6.0"};typeof __e=="number"&&(__e=wg)});var Lr=T((sB,yo)=>{l();yo.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var vi=T((fB,xo)=>{l();var Ag=Lr();xo.exports=function(t){if(!Ag(t))throw TypeError(t+" is not an object!");return t}});var v0=T((uB,wo)=>{l();wo.exports=function(t){try{return!!t()}catch{return!0}}});var bi=T((hB,Ao)=>{l();Ao.exports=!v0()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Zp=T((vB,Io)=>{l();var _o=Lr(),Xp=fr().document,_g=_o(Xp)&&_o(Xp.createElement);Io.exports=function(t){return _g?Xp.createElement(t):{}}});var Eo=T((gB,So)=>{l();So.exports=!bi()&&!v0()(function(){return Object.defineProperty(Zp()("div"),"a",{get:function(){return 7}}).a!=7})});var No=T((xB,Co)=>{l();var Dd=Lr();Co.exports=function(t,e){if(!Dd(t))return t;var a,r;if(e&&typeof(a=t.toString)=="function"&&!Dd(r=a.call(t))||typeof(a=t.valueOf)=="function"&&!Dd(r=a.call(t))||!e&&typeof(a=t.toString)=="function"&&!Dd(r=a.call(t)))return r;throw TypeError("Can't convert object to primitive value")}});var b0=T(Mo=>{l();var Do=vi(),Ig=Eo(),Sg=No(),Eg=Object.defineProperty;Mo.f=bi()?Object.defineProperty:function(e,a,r){if(Do(e),a=Sg(a,!0),Do(r),Ig)try{return Eg(e,a,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[a]=r.value),e}});var en=T((IB,To)=>{l();To.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var lr=T((EB,Bo)=>{l();var Cg=b0(),Ng=en();Bo.exports=bi()?function(t,e,a){return Cg.f(t,e,Ng(1,a))}:function(t,e,a){return t[e]=a,t}});var g0=T((NB,qo)=>{l();var Dg={}.hasOwnProperty;qo.exports=function(t,e){return Dg.call(t,e)}});var Md=T((MB,Oo)=>{l();var Mg=0,Tg=Math.random();Oo.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++Mg+Tg).toString(36))}});var y0=T((BB,Uo)=>{l();var Bg=fr(),Td=lr(),Po=g0(),tn=Md()("src"),an="toString",rn=Function[an],qg=(""+rn).split(an);Nd().inspectSource=function(t){return rn.call(t)};(Uo.exports=function(t,e,a,r){var i=typeof a=="function";i&&(Po(a,"name")||Td(a,"name",e)),t[e]!==a&&(i&&(Po(a,tn)||Td(a,tn,t[e]?""+t[e]:qg.join(String(e)))),t===Bg?t[e]=a:r?t[e]?t[e]=a:Td(t,e,a):(delete t[e],Td(t,e,a)))})(Function.prototype,an,function(){return typeof this=="function"&&this[tn]||rn.call(this)})});var dn=T((OB,Vo)=>{l();Vo.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var pn=T((UB,Ro)=>{l();var Og=dn();Ro.exports=function(t,e,a){if(Og(t),e===void 0)return t;switch(a){case 1:return function(r){return t.call(e,r)};case 2:return function(r,i){return t.call(e,r,i)};case 3:return function(r,i,d){return t.call(e,r,i,d)}}return function(){return t.apply(e,arguments)}}});var Pt=T((RB,Lo)=>{l();var gi=fr(),Bd=Nd(),Pg=lr(),Ug=y0(),Fo=pn(),nn="prototype",ut=function(t,e,a){var r=t&ut.F,i=t&ut.G,d=t&ut.S,n=t&ut.P,s=t&ut.B,c=i?gi:d?gi[e]||(gi[e]={}):(gi[e]||{})[nn],v=i?Bd:Bd[e]||(Bd[e]={}),I=v[nn]||(v[nn]={}),S,O,R,V;i&&(a=e);for(S in a)O=!r&&c&&c[S]!==void 0,R=(O?c:a)[S],V=s&&O?Fo(R,gi):n&&typeof R=="function"?Fo(Function.call,R):R,c&&Ug(c,S,R,t&ut.U),v[S]!=R&&Pg(v,S,V),n&&I[S]!=R&&(I[S]=R)};gi.core=Bd;ut.F=1;ut.G=2;ut.S=4;ut.P=8;ut.B=16;ut.W=32;ut.U=64;ut.R=128;Lo.exports=ut});var x0=T((LB,Qo)=>{l();var Vg={}.toString;Qo.exports=function(t){return Vg.call(t).slice(8,-1)}});var sn=T((kB,ko)=>{l();var Rg=x0();ko.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return Rg(t)=="String"?t.split(""):Object(t)}});var yi=T((HB,jo)=>{l();jo.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var on=T((zB,Ho)=>{l();var Fg=yi();Ho.exports=function(t){return Object(Fg(t))}});var qd=T((GB,Ko)=>{l();var Lg=Math.ceil,Qg=Math.floor;Ko.exports=function(t){return isNaN(t=+t)?0:(t>0?Qg:Lg)(t)}});var Od=T((WB,zo)=>{l();var kg=qd(),jg=Math.min;zo.exports=function(t){return t>0?jg(kg(t),9007199254740991):0}});var Go=T((XB,$o)=>{l();var Hg=x0();$o.exports=Array.isArray||function(e){return Hg(e)=="Array"}});var fn=T((eq,Yo)=>{l();Yo.exports=!1});var ln=T((aq,Zo)=>{l();var Kg=Nd(),Wo=fr(),Jo="__core-js_shared__",Xo=Wo[Jo]||(Wo[Jo]={});(Zo.exports=function(t,e){return Xo[t]||(Xo[t]=e!==void 0?e:{})})("versions",[]).push({version:Kg.version,mode:fn()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var Yt=T((iq,tf)=>{l();var un=ln()("wks"),zg=Md(),cn=fr().Symbol,ef=typeof cn=="function",$g=tf.exports=function(t){return un[t]||(un[t]=ef&&cn[t]||(ef?cn:zg)("Symbol."+t))};$g.store=un});var df=T((pq,rf)=>{l();var Gg=Lr(),af=Go(),Yg=Yt()("species");rf.exports=function(t){var e;return af(t)&&(e=t.constructor,typeof e=="function"&&(e===Array||af(e.prototype))&&(e=void 0),Gg(e)&&(e=e[Yg],e===null&&(e=void 0))),e===void 0?Array:e}});var nf=T((sq,pf)=>{l();var Wg=df();pf.exports=function(t,e){return new(Wg(t))(e)}});var xi=T((fq,sf)=>{l();var Jg=pn(),Xg=sn(),Zg=on(),ey=Od(),ty=nf();sf.exports=function(t,e){var a=t==1,r=t==2,i=t==3,d=t==4,n=t==6,s=t==5||n,c=e||ty;return function(v,I,S){for(var O=Zg(v),R=Xg(O),V=Jg(I,S,3),L=ey(R.length),G=0,J=a?c(v,L):r?c(v,0):void 0,fe,oe;L>G;G++)if((s||G in R)&&(fe=R[G],oe=V(fe,G,O),t)){if(a)J[G]=oe;else if(oe)switch(t){case 3:return!0;case 5:return fe;case 6:return G;case 2:J.push(fe)}else if(d)return!1}return n?-1:i||d?d:J}}});var w0=T((uq,of)=>{l();var hn=Yt()("unscopables"),mn=Array.prototype;mn[hn]==null&&lr()(mn,hn,{});of.exports=function(t){mn[hn][t]=!0}});var lf=T(()=>{"use strict";l();var vn=Pt(),ay=xi()(6),bn="findIndex",ff=!0;bn in[]&&Array(1)[bn](function(){ff=!1});vn(vn.P+vn.F*ff,"Array",{findIndex:function(e){return ay(this,e,arguments.length>1?arguments[1]:void 0)}});w0()(bn)});var cf=T(()=>{"use strict";l();var gn=Pt(),ry=xi()(5),yn="find",uf=!0;yn in[]&&Array(1)[yn](function(){uf=!1});gn(gn.P+gn.F*uf,"Array",{find:function(e){return ry(this,e,arguments.length>1?arguments[1]:void 0)}});w0()(yn)});var vf=T(()=>{l();var iy=b0().f,hf=Function.prototype,dy=/^\s*function ([^ (]*)/,mf="name";mf in hf||bi()&&iy(hf,mf,{configurable:!0,get:function(){try{return(""+this).match(dy)[1]}catch{return""}}})});var wn=T(xn=>{"use strict";l();xn.__esModule=!0;xn.default=function(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}});var gf=T(ur=>{"use strict";l();Object.defineProperty(ur,"__esModule",{value:!0});ur.flip=py;ur.constant=ny;ur.on=sy;ur.compose=oy;ur.pipe=fy;ur.curry=ly;function py(t){return function(e,a){return t(a,e)}}function ny(t){return function(){return t}}function sy(t,e){return function(a,r){return t(e(a),e(r))}}function oy(){for(var t=this,e=arguments.length,a=Array(e),r=0;r-1;s--)n=a[s].call(t,n);return n}}function fy(){for(var t=this,e=arguments.length,a=Array(e),r=0;r=e?t.apply(this,r):bf(t,e,r)}}function ly(t){return bf(t,t.length,[])}});var Pd=T((Cq,yf)=>{l();var uy=Math.ceil,cy=Math.floor;yf.exports=function(t){return isNaN(t=+t)?0:(t>0?cy:uy)(t)}});var Ud=T((Dq,xf)=>{l();xf.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var Af=T((Tq,wf)=>{l();var hy=Pd(),my=Ud();wf.exports=function(t){return function(e,a){var r=String(my(e)),i=hy(a),d=r.length,n,s;return i<0||i>=d?t?"":void 0:(n=r.charCodeAt(i),n<55296||n>56319||i+1===d||(s=r.charCodeAt(i+1))<56320||s>57343?t?r.charAt(i):n:t?r.slice(i,i+2):(n-55296<<10)+(s-56320)+65536)}}});var A0=T((qq,_f)=>{l();_f.exports=!0});var La=T((Pq,If)=>{l();var vy=If.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=vy)});var ct=T((Vq,Sf)=>{l();var by=Sf.exports={version:"2.6.0"};typeof __e=="number"&&(__e=by)});var Cf=T((Fq,Ef)=>{l();Ef.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var An=T((Qq,Nf)=>{l();var gy=Cf();Nf.exports=function(t,e,a){if(gy(t),e===void 0)return t;switch(a){case 1:return function(r){return t.call(e,r)};case 2:return function(r,i){return t.call(e,r,i)};case 3:return function(r,i,d){return t.call(e,r,i,d)}}return function(){return t.apply(e,arguments)}}});var Qr=T((jq,Df)=>{l();Df.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var kr=T((Kq,Mf)=>{l();var yy=Qr();Mf.exports=function(t){if(!yy(t))throw TypeError(t+" is not an object!");return t}});var jr=T(($q,Tf)=>{l();Tf.exports=function(t){try{return!!t()}catch{return!0}}});var cr=T((Yq,Bf)=>{l();Bf.exports=!jr()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var In=T((Jq,Of)=>{l();var qf=Qr(),_n=La().document,xy=qf(_n)&&qf(_n.createElement);Of.exports=function(t){return xy?_n.createElement(t):{}}});var Sn=T((Zq,Pf)=>{l();Pf.exports=!cr()&&!jr()(function(){return Object.defineProperty(In()("div"),"a",{get:function(){return 7}}).a!=7})});var Rd=T((tO,Uf)=>{l();var Vd=Qr();Uf.exports=function(t,e){if(!Vd(t))return t;var a,r;if(e&&typeof(a=t.toString)=="function"&&!Vd(r=a.call(t))||typeof(a=t.valueOf)=="function"&&!Vd(r=a.call(t))||!e&&typeof(a=t.toString)=="function"&&!Vd(r=a.call(t)))return r;throw TypeError("Can't convert object to primitive value")}});var Qa=T(Rf=>{l();var Vf=kr(),wy=Sn(),Ay=Rd(),_y=Object.defineProperty;Rf.f=cr()?Object.defineProperty:function(e,a,r){if(Vf(e),a=Ay(a,!0),Vf(r),wy)try{return _y(e,a,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[a]=r.value),e}});var wi=T((dO,Ff)=>{l();Ff.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var Hr=T((nO,Lf)=>{l();var Iy=Qa(),Sy=wi();Lf.exports=cr()?function(t,e,a){return Iy.f(t,e,Sy(1,a))}:function(t,e,a){return t[e]=a,t}});var hr=T((oO,Qf)=>{l();var Ey={}.hasOwnProperty;Qf.exports=function(t,e){return Ey.call(t,e)}});var ka=T((lO,jf)=>{l();var Fd=La(),En=ct(),kf=An(),Cy=Hr(),Ny=hr(),Ld="prototype",ot=function(t,e,a){var r=t&ot.F,i=t&ot.G,d=t&ot.S,n=t&ot.P,s=t&ot.B,c=t&ot.W,v=i?En:En[e]||(En[e]={}),I=v[Ld],S=i?Fd:d?Fd[e]:(Fd[e]||{})[Ld],O,R,V;i&&(a=e);for(O in a)R=!r&&S&&S[O]!==void 0,!(R&&Ny(v,O))&&(V=R?S[O]:a[O],v[O]=i&&typeof S[O]!="function"?a[O]:s&&R?kf(V,Fd):c&&S[O]==V?function(L){var G=function(J,fe,oe){if(this instanceof L){switch(arguments.length){case 0:return new L;case 1:return new L(J);case 2:return new L(J,fe)}return new L(J,fe,oe)}return L.apply(this,arguments)};return G[Ld]=L[Ld],G}(V):n&&typeof V=="function"?kf(Function.call,V):V,n&&((v.virtual||(v.virtual={}))[O]=V,t&ot.R&&I&&!I[O]&&Cy(I,O,V)))};ot.F=1;ot.G=2;ot.S=4;ot.P=8;ot.B=16;ot.W=32;ot.U=64;ot.R=128;jf.exports=ot});var Cn=T((cO,Hf)=>{l();Hf.exports=Hr()});var Kr=T((mO,Kf)=>{l();Kf.exports={}});var Qd=T((bO,zf)=>{l();var Dy={}.toString;zf.exports=function(t){return Dy.call(t).slice(8,-1)}});var Nn=T((yO,$f)=>{l();var My=Qd();$f.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return My(t)=="String"?t.split(""):Object(t)}});var mr=T((wO,Gf)=>{l();var Ty=Nn(),By=Ud();Gf.exports=function(t){return Ty(By(t))}});var Dn=T((_O,Yf)=>{l();var qy=Pd(),Oy=Math.min;Yf.exports=function(t){return t>0?Oy(qy(t),9007199254740991):0}});var Jf=T((SO,Wf)=>{l();var Py=Pd(),Uy=Math.max,Vy=Math.min;Wf.exports=function(t,e){return t=Py(t),t<0?Uy(t+e,0):Vy(t,e)}});var Zf=T((CO,Xf)=>{l();var Ry=mr(),Fy=Dn(),Ly=Jf();Xf.exports=function(t){return function(e,a,r){var i=Ry(e),d=Fy(i.length),n=Ly(r,d),s;if(t&&a!=a){for(;d>n;)if(s=i[n++],s!=s)return!0}else for(;d>n;n++)if((t||n in i)&&i[n]===a)return t||n||0;return!t&&-1}}});var kd=T((DO,r5)=>{l();var Qy=ct(),e5=La(),t5="__core-js_shared__",a5=e5[t5]||(e5[t5]={});(r5.exports=function(t,e){return a5[t]||(a5[t]=e!==void 0?e:{})})("versions",[]).push({version:Qy.version,mode:A0()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var _0=T((TO,i5)=>{l();var ky=0,jy=Math.random();i5.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++ky+jy).toString(36))}});var jd=T((qO,p5)=>{l();var d5=kd()("keys"),Hy=_0();p5.exports=function(t){return d5[t]||(d5[t]=Hy(t))}});var Mn=T((PO,s5)=>{l();var n5=hr(),Ky=mr(),zy=Zf()(!1),$y=jd()("IE_PROTO");s5.exports=function(t,e){var a=Ky(t),r=0,i=[],d;for(d in a)d!=$y&&n5(a,d)&&i.push(d);for(;e.length>r;)n5(a,d=e[r++])&&(~zy(i,d)||i.push(d));return i}});var Hd=T((VO,o5)=>{l();o5.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var zr=T((FO,f5)=>{l();var Gy=Mn(),Yy=Hd();f5.exports=Object.keys||function(e){return Gy(e,Yy)}});var u5=T((QO,l5)=>{l();var Wy=Qa(),Jy=kr(),Xy=zr();l5.exports=cr()?Object.defineProperties:function(e,a){Jy(e);for(var r=Xy(a),i=r.length,d=0,n;i>d;)Wy.f(e,n=r[d++],a[n]);return e}});var m5=T((jO,h5)=>{l();var c5=La().document;h5.exports=c5&&c5.documentElement});var qn=T((KO,b5)=>{l();var Zy=kr(),ex=u5(),v5=Hd(),tx=jd()("IE_PROTO"),Tn=function(){},Bn="prototype",Kd=function(){var t=In()("iframe"),e=v5.length,a="<",r=">",i;for(t.style.display="none",m5().appendChild(t),t.src="javascript:",i=t.contentWindow.document,i.open(),i.write(a+"script"+r+"document.F=Object"+a+"/script"+r),i.close(),Kd=i.F;e--;)delete Kd[Bn][v5[e]];return Kd()};b5.exports=Object.create||function(e,a){var r;return e!==null?(Tn[Bn]=Zy(e),r=new Tn,Tn[Bn]=null,r[tx]=e):r=Kd(),a===void 0?r:ex(r,a)}});var Ut=T(($O,y5)=>{l();var On=kd()("wks"),ax=_0(),Pn=La().Symbol,g5=typeof Pn=="function",rx=y5.exports=function(t){return On[t]||(On[t]=g5&&Pn[t]||(g5?Pn:ax)("Symbol."+t))};rx.store=On});var zd=T((YO,w5)=>{l();var ix=Qa().f,dx=hr(),x5=Ut()("toStringTag");w5.exports=function(t,e,a){t&&!dx(t=a?t:t.prototype,x5)&&ix(t,x5,{configurable:!0,value:e})}});var I5=T((JO,_5)=>{"use strict";l();var px=qn(),nx=wi(),sx=zd(),A5={};Hr()(A5,Ut()("iterator"),function(){return this});_5.exports=function(t,e,a){t.prototype=px(A5,{next:nx(1,a)}),sx(t,e+" Iterator")}});var I0=T((ZO,S5)=>{l();var ox=Ud();S5.exports=function(t){return Object(ox(t))}});var N5=T((tP,C5)=>{l();var fx=hr(),lx=I0(),E5=jd()("IE_PROTO"),ux=Object.prototype;C5.exports=Object.getPrototypeOf||function(t){return t=lx(t),fx(t,E5)?t[E5]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?ux:null}});var Rn=T((rP,O5)=>{"use strict";l();var D5=A0(),Un=ka(),cx=Cn(),M5=Hr(),T5=Kr(),hx=I5(),mx=zd(),vx=N5(),S0=Ut()("iterator"),Vn=!([].keys&&"next"in[].keys()),bx="@@iterator",B5="keys",$d="values",q5=function(){return this};O5.exports=function(t,e,a,r,i,d,n){hx(a,e,r);var s=function(oe){if(!Vn&&oe in S)return S[oe];switch(oe){case B5:return function(){return new a(this,oe)};case $d:return function(){return new a(this,oe)}}return function(){return new a(this,oe)}},c=e+" Iterator",v=i==$d,I=!1,S=t.prototype,O=S[S0]||S[bx]||i&&S[i],R=O||s(i),V=i?v?s("entries"):R:void 0,L=e=="Array"&&S.entries||O,G,J,fe;if(L&&(fe=vx(L.call(new t)),fe!==Object.prototype&&fe.next&&(mx(fe,c,!0),!D5&&typeof fe[S0]!="function"&&M5(fe,S0,q5))),v&&O&&O.name!==$d&&(I=!0,R=function(){return O.call(this)}),(!D5||n)&&(Vn||I||!S[S0])&&M5(S,S0,R),T5[e]=R,T5[c]=q5,i)if(G={values:v?R:s($d),keys:d?R:s(B5),entries:V},n)for(J in G)J in S||cx(S,J,G[J]);else Un(Un.P+Un.F*(Vn||I),e,G);return G}});var E0=T(()=>{"use strict";l();var gx=Af()(!0);Rn()(String,"String",function(t){this._t=String(t),this._i=0},function(){var t=this._t,e=this._i,a;return e>=t.length?{value:void 0,done:!0}:(a=gx(t,e),this._i+=a.length,{value:a,done:!1})})});var U5=T((sP,P5)=>{l();P5.exports=function(){}});var R5=T((fP,V5)=>{l();V5.exports=function(t,e){return{value:e,done:!!t}}});var Q5=T((uP,L5)=>{"use strict";l();var Fn=U5(),Gd=R5(),F5=Kr(),yx=mr();L5.exports=Rn()(Array,"Array",function(t,e){this._t=yx(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,a=this._i++;return!t||a>=t.length?(this._t=void 0,Gd(1)):e=="keys"?Gd(0,a):e=="values"?Gd(0,t[a]):Gd(0,[a,t[a]])},"values");F5.Arguments=F5.Array;Fn("keys");Fn("values");Fn("entries")});var Xd=T(()=>{l();Q5();var xx=La(),wx=Hr(),k5=Kr(),j5=Ut()("toStringTag"),H5="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(Yd=0;Yd{l();K5.f=Ut()});var $5=T((yP,z5)=>{l();E0();Xd();z5.exports=Zd().f("iterator")});var Y5=T((wP,G5)=>{l();G5.exports={default:$5(),__esModule:!0}});var J5=T((_P,W5)=>{l();var $r=_0()("meta"),Ax=Qr(),Qn=hr(),_x=Qa().f,Ix=0,e2=Object.isExtensible||function(){return!0},Sx=!jr()(function(){return e2(Object.preventExtensions({}))}),kn=function(t){_x(t,$r,{value:{i:"O"+ ++Ix,w:{}}})},Ex=function(t,e){if(!Ax(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!Qn(t,$r)){if(!e2(t))return"F";if(!e)return"E";kn(t)}return t[$r].i},Cx=function(t,e){if(!Qn(t,$r)){if(!e2(t))return!0;if(!e)return!1;kn(t)}return t[$r].w},Nx=function(t){return Sx&&Dx.NEED&&e2(t)&&!Qn(t,$r)&&kn(t),t},Dx=W5.exports={KEY:$r,NEED:!1,fastKey:Ex,getWeak:Cx,onFreeze:Nx}});var t2=T((SP,Z5)=>{l();var Mx=La(),X5=ct(),Tx=A0(),Bx=Zd(),qx=Qa().f;Z5.exports=function(t){var e=X5.Symbol||(X5.Symbol=Tx?{}:Mx.Symbol||{});t.charAt(0)!="_"&&!(t in e)&&qx(e,t,{value:Bx.f(t)})}});var a2=T(e8=>{l();e8.f=Object.getOwnPropertySymbols});var Ai=T(t8=>{l();t8.f={}.propertyIsEnumerable});var r8=T((TP,a8)=>{l();var Ox=zr(),Px=a2(),Ux=Ai();a8.exports=function(t){var e=Ox(t),a=Px.f;if(a)for(var r=a(t),i=Ux.f,d=0,n;r.length>d;)i.call(t,n=r[d++])&&e.push(n);return e}});var d8=T((qP,i8)=>{l();var Vx=Qd();i8.exports=Array.isArray||function(e){return Vx(e)=="Array"}});var jn=T(p8=>{l();var Rx=Mn(),Fx=Hd().concat("length","prototype");p8.f=Object.getOwnPropertyNames||function(e){return Rx(e,Fx)}});var f8=T((VP,o8)=>{l();var Lx=mr(),n8=jn().f,Qx={}.toString,s8=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],kx=function(t){try{return n8(t)}catch{return s8.slice()}};o8.exports.f=function(e){return s8&&Qx.call(e)=="[object Window]"?kx(e):n8(Lx(e))}});var c8=T(u8=>{l();var jx=Ai(),Hx=wi(),Kx=mr(),zx=Rd(),$x=hr(),Gx=Sn(),l8=Object.getOwnPropertyDescriptor;u8.f=cr()?l8:function(e,a){if(e=Kx(e),a=zx(a,!0),Gx)try{return l8(e,a)}catch{}if($x(e,a))return Hx(!jx.f.call(e,a),e[a])}});var N8=T(()=>{"use strict";l();var d2=La(),W1=hr(),Yn=cr(),Nt=ka(),h8=Cn(),Yx=J5().KEY,g8=jr(),t6=kd(),a6=zd(),Wx=_0(),D0=Ut(),Jx=Zd(),Xx=t2(),Zx=r8(),ew=d8(),Wn=kr(),tw=Qr(),p2=mr(),r6=Rd(),Jn=wi(),N0=qn(),y8=f8(),x8=c8(),w8=Qa(),aw=zr(),A8=x8.f,Gr=w8.f,_8=y8.f,yt=d2.Symbol,i2=d2.JSON,r2=i2&&i2.stringify,vr="prototype",gt=D0("_hidden"),m8=D0("toPrimitive"),rw={}.propertyIsEnumerable,C0=t6("symbol-registry"),ja=t6("symbols"),M0=t6("op-symbols"),Vt=Object[vr],_i=typeof yt=="function",Hn=d2.QObject,Xn=!Hn||!Hn[vr]||!Hn[vr].findChild,Zn=Yn&&g8(function(){return N0(Gr({},"a",{get:function(){return Gr(this,"a",{value:7}).a}})).a!=7})?function(t,e,a){var r=A8(Vt,e);r&&delete Vt[e],Gr(t,e,a),r&&t!==Vt&&Gr(Vt,e,r)}:Gr,v8=function(t){var e=ja[t]=N0(yt[vr]);return e._k=t,e},e6=_i&&typeof yt.iterator=="symbol"?function(t){return typeof t=="symbol"}:function(t){return t instanceof yt},n2=function(e,a,r){return e===Vt&&n2(M0,a,r),Wn(e),a=r6(a,!0),Wn(r),W1(ja,a)?(r.enumerable?(W1(e,gt)&&e[gt][a]&&(e[gt][a]=!1),r=N0(r,{enumerable:Jn(0,!1)})):(W1(e,gt)||Gr(e,gt,Jn(1,{})),e[gt][a]=!0),Zn(e,a,r)):Gr(e,a,r)},I8=function(e,a){Wn(e);for(var r=Zx(a=p2(a)),i=0,d=r.length,n;d>i;)n2(e,n=r[i++],a[n]);return e},iw=function(e,a){return a===void 0?N0(e):I8(N0(e),a)},b8=function(e){var a=rw.call(this,e=r6(e,!0));return this===Vt&&W1(ja,e)&&!W1(M0,e)?!1:a||!W1(this,e)||!W1(ja,e)||W1(this,gt)&&this[gt][e]?a:!0},S8=function(e,a){if(e=p2(e),a=r6(a,!0),!(e===Vt&&W1(ja,a)&&!W1(M0,a))){var r=A8(e,a);return r&&W1(ja,a)&&!(W1(e,gt)&&e[gt][a])&&(r.enumerable=!0),r}},E8=function(e){for(var a=_8(p2(e)),r=[],i=0,d;a.length>i;)!W1(ja,d=a[i++])&&d!=gt&&d!=Yx&&r.push(d);return r},C8=function(e){for(var a=e===Vt,r=_8(a?M0:p2(e)),i=[],d=0,n;r.length>d;)W1(ja,n=r[d++])&&(a?W1(Vt,n):!0)&&i.push(ja[n]);return i};_i||(yt=function(){if(this instanceof yt)throw TypeError("Symbol is not a constructor!");var e=Wx(arguments.length>0?arguments[0]:void 0),a=function(r){this===Vt&&a.call(M0,r),W1(this,gt)&&W1(this[gt],e)&&(this[gt][e]=!1),Zn(this,e,Jn(1,r))};return Yn&&Xn&&Zn(Vt,e,{configurable:!0,set:a}),v8(e)},h8(yt[vr],"toString",function(){return this._k}),x8.f=S8,w8.f=n2,jn().f=y8.f=E8,Ai().f=b8,a2().f=C8,Yn&&!A0()&&h8(Vt,"propertyIsEnumerable",b8,!0),Jx.f=function(t){return v8(D0(t))});Nt(Nt.G+Nt.W+Nt.F*!_i,{Symbol:yt});for(Kn="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),zn=0;Kn.length>zn;)D0(Kn[zn++]);var Kn,zn;for($n=aw(D0.store),Gn=0;$n.length>Gn;)Xx($n[Gn++]);var $n,Gn;Nt(Nt.S+Nt.F*!_i,"Symbol",{for:function(t){return W1(C0,t+="")?C0[t]:C0[t]=yt(t)},keyFor:function(e){if(!e6(e))throw TypeError(e+" is not a symbol!");for(var a in C0)if(C0[a]===e)return a},useSetter:function(){Xn=!0},useSimple:function(){Xn=!1}});Nt(Nt.S+Nt.F*!_i,"Object",{create:iw,defineProperty:n2,defineProperties:I8,getOwnPropertyDescriptor:S8,getOwnPropertyNames:E8,getOwnPropertySymbols:C8});i2&&Nt(Nt.S+Nt.F*(!_i||g8(function(){var t=yt();return r2([t])!="[null]"||r2({a:t})!="{}"||r2(Object(t))!="{}"})),"JSON",{stringify:function(e){for(var a=[e],r=1,i,d;arguments.length>r;)a.push(arguments[r++]);if(d=i=a[1],!(!tw(i)&&e===void 0||e6(e)))return ew(i)||(i=function(n,s){if(typeof d=="function"&&(s=d.call(this,n,s)),!e6(s))return s}),a[1]=i,r2.apply(i2,a)}});yt[vr][m8]||Hr()(yt[vr],m8,yt[vr].valueOf);a6(yt,"Symbol");a6(Math,"Math",!0);a6(d2.JSON,"JSON",!0)});var D8=T(()=>{l()});var M8=T(()=>{l();t2()("asyncIterator")});var T8=T(()=>{l();t2()("observable")});var q8=T((ZP,B8)=>{l();N8();D8();M8();T8();B8.exports=ct().Symbol});var i6=T((tU,O8)=>{l();O8.exports={default:q8(),__esModule:!0}});var V8=T(p6=>{"use strict";l();p6.__esModule=!0;var dw=Y5(),P8=U8(dw),pw=i6(),br=U8(pw),d6=typeof br.default=="function"&&typeof P8.default=="symbol"?function(t){return typeof t}:function(t){return t&&typeof br.default=="function"&&t.constructor===br.default&&t!==br.default.prototype?"symbol":typeof t};function U8(t){return t&&t.__esModule?t:{default:t}}p6.default=typeof br.default=="function"&&d6(P8.default)==="symbol"?function(t){return typeof t>"u"?"undefined":d6(t)}:function(t){return t&&typeof br.default=="function"&&t.constructor===br.default&&t!==br.default.prototype?"symbol":typeof t>"u"?"undefined":d6(t)}});var L8=T((dU,F8)=>{l();var R8=kr();F8.exports=function(t,e,a,r){try{return r?e(R8(a)[0],a[1]):e(a)}catch(d){var i=t.return;throw i!==void 0&&R8(i.call(t)),d}}});var k8=T((nU,Q8)=>{l();var nw=Kr(),sw=Ut()("iterator"),ow=Array.prototype;Q8.exports=function(t){return t!==void 0&&(nw.Array===t||ow[sw]===t)}});var H8=T((oU,j8)=>{"use strict";l();var fw=Qa(),lw=wi();j8.exports=function(t,e,a){e in t?fw.f(t,e,lw(0,a)):t[e]=a}});var s6=T((lU,K8)=>{l();var n6=Qd(),uw=Ut()("toStringTag"),cw=n6(function(){return arguments}())=="Arguments",hw=function(t,e){try{return t[e]}catch{}};K8.exports=function(t){var e,a,r;return t===void 0?"Undefined":t===null?"Null":typeof(a=hw(e=Object(t),uw))=="string"?a:cw?n6(e):(r=n6(e))=="Object"&&typeof e.callee=="function"?"Arguments":r}});var o6=T((cU,z8)=>{l();var mw=s6(),vw=Ut()("iterator"),bw=Kr();z8.exports=ct().getIteratorMethod=function(t){if(t!=null)return t[vw]||t["@@iterator"]||bw[mw(t)]}});var Y8=T((mU,G8)=>{l();var l6=Ut()("iterator"),$8=!1;try{f6=[7][l6](),f6.return=function(){$8=!0},Array.from(f6,function(){throw 2})}catch{}var f6;G8.exports=function(t,e){if(!e&&!$8)return!1;var a=!1;try{var r=[7],i=r[l6]();i.next=function(){return{done:a=!0}},r[l6]=function(){return i},t(r)}catch{}return a}});var J8=T(()=>{"use strict";l();var gw=An(),u6=ka(),yw=I0(),xw=L8(),ww=k8(),Aw=Dn(),W8=H8(),_w=o6();u6(u6.S+u6.F*!Y8()(function(t){Array.from(t)}),"Array",{from:function(e){var a=yw(e),r=typeof this=="function"?this:Array,i=arguments.length,d=i>1?arguments[1]:void 0,n=d!==void 0,s=0,c=_w(a),v,I,S,O;if(n&&(d=gw(d,i>2?arguments[2]:void 0,2)),c!=null&&!(r==Array&&ww(c)))for(O=c.call(a),I=new r;!(S=O.next()).done;s++)W8(I,s,n?xw(O,d,[S.value,s],!0):S.value);else for(v=Aw(a.length),I=new r(v);v>s;s++)W8(I,s,n?d(a[s],s):a[s]);return I.length=s,I}})});var Z8=T((xU,X8)=>{l();E0();J8();X8.exports=ct().Array.from});var c6=T((AU,e9)=>{l();e9.exports={default:Z8(),__esModule:!0}});var m6=T(h6=>{"use strict";l();h6.__esModule=!0;var Iw=c6(),Sw=Ew(Iw);function Ew(t){return t&&t.__esModule?t:{default:t}}h6.default=function(t){if(Array.isArray(t)){for(var e=0,a=Array(t.length);e{"use strict";l();Object.defineProperty(gr,"__esModule",{value:!0});gr.flip=Cw;gr.constant=Nw;gr.on=Dw;gr.compose=Mw;gr.pipe=Tw;gr.curry=Bw;function Cw(t){return function(e,a){return t(a,e)}}function Nw(t){return function(){return t}}function Dw(t,e){return function(a,r){return t(e(a),e(r))}}function Mw(){for(var t=this,e=arguments.length,a=Array(e),r=0;r-1;s--)n=a[s].call(t,n);return n}}function Tw(){for(var t=this,e=arguments.length,a=Array(e),r=0;r=e?t.apply(this,r):t9(t,e,r)}}function Bw(t){return t9(t,t.length,[])}});var d9=T((NU,i9)=>{"use strict";l();var r9=zr(),qw=a2(),Ow=Ai(),Pw=I0(),Uw=Nn(),s2=Object.assign;i9.exports=!s2||jr()(function(){var t={},e={},a=Symbol(),r="abcdefghijklmnopqrst";return t[a]=7,r.split("").forEach(function(i){e[i]=i}),s2({},t)[a]!=7||Object.keys(s2({},e)).join("")!=r})?function(e,a){for(var r=Pw(e),i=arguments.length,d=1,n=qw.f,s=Ow.f;i>d;)for(var c=Uw(arguments[d++]),v=n?r9(c).concat(n(c)):r9(c),I=v.length,S=0,O;I>S;)s.call(c,O=v[S++])&&(r[O]=c[O]);return r}:s2});var p9=T(()=>{l();var v6=ka();v6(v6.S+v6.F,"Object",{assign:d9()})});var s9=T((qU,n9)=>{l();p9();n9.exports=ct().Object.assign});var f9=T((PU,o9)=>{l();o9.exports={default:s9(),__esModule:!0}});var g6=T(b6=>{"use strict";l();b6.__esModule=!0;var Vw=f9(),Rw=Fw(Vw);function Fw(t){return t&&t.__esModule?t:{default:t}}b6.default=Rw.default||function(t){for(var e=1;e{l();var y6=ka(),Lw=ct(),Qw=jr();l9.exports=function(t,e){var a=(Lw.Object||{})[t]||Object[t],r={};r[t]=e(a),y6(y6.S+y6.F*Qw(function(){a(1)}),"Object",r)}});var c9=T(()=>{l();var kw=I0(),jw=zr();u9()("keys",function(){return function(e){return jw(kw(e))}})});var m9=T((HU,h9)=>{l();c9();h9.exports=ct().Object.keys});var x6=T((zU,v9)=>{l();v9.exports={default:m9(),__esModule:!0}});var g9=T((GU,b9)=>{l();var Hw=Qr(),Kw=Math.floor;b9.exports=function(e){return!Hw(e)&&isFinite(e)&&Kw(e)===e}});var x9=T(()=>{l();var y9=ka();y9(y9.S,"Number",{isInteger:g9()})});var A9=T((ZU,w9)=>{l();x9();w9.exports=ct().Number.isInteger});var I9=T((tV,_9)=>{l();_9.exports={default:A9(),__esModule:!0}});var A6=T(w6=>{"use strict";l();w6.__esModule=!0;w6.default=function(t,e){var a={};for(var r in t)e.indexOf(r)>=0||!Object.prototype.hasOwnProperty.call(t,r)||(a[r]=t[r]);return a}});var _6=T(at=>{"use strict";l();Object.defineProperty(at,"__esModule",{value:!0});function Yr(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var xt=Yr(m6()),k1=Yr(wn()),Wt=a9(),zw=Yr(g6()),$w=Yr(c6()),N9=Yr(x6()),Gw=Yr(I9()),Yw=Yr(A6()),Ww=void 0,Jw=function(t,e){return k1(this,Ww),[].concat(xt(e),xt(t))}.bind(void 0),Xw=Wt.curry(Jw),Zw=void 0,eA=function(t){return k1(this,Zw),Array.isArray(t)?t:[t]}.bind(void 0),tA=void 0,aA=function(t,e){return k1(this,tA),e===t.length-1}.bind(void 0),D9=Wt.curry(aA),rA=void 0,iA=function(t,e){return k1(this,rA),D9(t,e)?0:e+1}.bind(void 0),dA=Wt.curry(iA),M9=void 0,pA=function(t){return k1(this,M9),Math.max.apply(Math,xt(N9(t)))+1}.bind(void 0),nA=function(t){return k1(this,M9),$w("length"in t?t:zw({},t,{length:pA(t)}))}.bind(void 0),sA=void 0,oA=function(t,e,a){return k1(this,sA),[].concat(xt(a.slice(0,t)),xt(e),xt(a.slice(t+1)))}.bind(void 0),fA=Wt.curry(oA),T9=void 0,lA=function(t,e){return k1(this,T9),Gw(t)&&t>=e}.bind(void 0),B9=function(t){return k1(this,T9),lA(Number(t),0)}.bind(void 0),uA=void 0,cA=function(t){var e=t.length,a=Yw(t,["length"]);return k1(this,uA),N9(a).every(B9)}.bind(void 0),hA=void 0,mA=function(t,e){return k1(this,hA),[].concat(xt(t),xt(e))}.bind(void 0),vA=Wt.curry(mA),S9=void 0,bA=function(t,e,a,r){return k1(this,S9),r.reduce(function(i,d,n){return k1(this,S9),t(d,n,i)?e(i,d,n):i}.bind(this),a)}.bind(void 0),gA=Wt.curry(bA),E9=void 0,yA=function(t,e,a,r){k1(this,E9);var i=a;return r.every(function(d,n){k1(this,E9);var s=t(d,n,i);return s&&(i=e(i,d,n)),s}.bind(this)),i}.bind(void 0),xA=Wt.curry(yA),wA=void 0,AA=function(t,e,a){return k1(this,wA),[].concat(xt(a.slice(0,t)),xt(a.slice(t+e)))}.bind(void 0),_A=Wt.curry(AA),C9=void 0,IA=function(t,e){return k1(this,C9),[].concat(xt(Array(t))).map(function(){return k1(this,C9),e}.bind(this))}.bind(void 0),SA=Wt.curry(IA),EA=void 0,CA=function(t,e,a){return k1(this,EA),[].concat(xt(a.slice(0,t)),xt(e),xt(a.slice(t+e.length)))}.bind(void 0),NA=Wt.curry(CA),DA=void 0,MA=function(t,e){return k1(this,DA),e<0?t.length-e:e}.bind(void 0),TA=Wt.curry(MA);at.append=Xw;at.convertIfNot=eA;at.cycleNext=dA;at.fromObject=nA;at.insert=fA;at.isKey=B9;at.isLastIndex=D9;at.isPossibleFromObject=cA;at.prepend=vA;at.reduceIf=gA;at.reduceWhile=xA;at.remove=_A;at.repeat=SA;at.replace=NA;at.resolveIndex=TA});var O9=T((nV,q9)=>{"use strict";l();q9.exports=function t(e,a){if(e===a)return!0;var r=Array.isArray(e),i=Array.isArray(a),d;if(r&&i){if(e.length!=a.length)return!1;for(d=0;d{l();var I6=ka();I6(I6.S+I6.F*!cr(),"Object",{defineProperty:Qa().f})});var V9=T((uV,U9)=>{l();P9();var BA=ct().Object;U9.exports=function(e,a,r){return BA.defineProperty(e,a,r)}});var F9=T((hV,R9)=>{l();R9.exports={default:V9(),__esModule:!0}});var L9=T(S6=>{"use strict";l();S6.__esModule=!0;var qA=F9(),OA=PA(qA);function PA(t){return t&&t.__esModule?t:{default:t}}S6.default=function(t,e,a){return e in t?(0,OA.default)(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}});var k9=T((gV,Q9)=>{l();var UA=s6(),VA=Ut()("iterator"),RA=Kr();Q9.exports=ct().isIterable=function(t){var e=Object(t);return e[VA]!==void 0||"@@iterator"in e||RA.hasOwnProperty(UA(e))}});var H9=T((xV,j9)=>{l();Xd();E0();j9.exports=k9()});var z9=T((AV,K9)=>{l();K9.exports={default:H9(),__esModule:!0}});var G9=T((IV,$9)=>{l();var FA=kr(),LA=o6();$9.exports=ct().getIterator=function(t){var e=LA(t);if(typeof e!="function")throw TypeError(t+" is not iterable!");return FA(e.call(t))}});var W9=T((EV,Y9)=>{l();Xd();E0();Y9.exports=G9()});var X9=T((NV,J9)=>{l();J9.exports={default:W9(),__esModule:!0}});var e7=T(E6=>{"use strict";l();E6.__esModule=!0;var QA=z9(),kA=Z9(QA),jA=X9(),HA=Z9(jA);function Z9(t){return t&&t.__esModule?t:{default:t}}E6.default=function(){function t(e,a){var r=[],i=!0,d=!1,n=void 0;try{for(var s=(0,HA.default)(e),c;!(i=(c=s.next()).done)&&(r.push(c.value),!(a&&r.length===a));i=!0);}catch(v){d=!0,n=v}finally{try{!i&&s.return&&s.return()}finally{if(d)throw n}}return r}return function(e,a){if(Array.isArray(e))return e;if((0,kA.default)(Object(e)))return t(e,a);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var a7=T((BV,t7)=>{l();var KA=zr(),zA=mr(),$A=Ai().f;t7.exports=function(t){return function(e){for(var a=zA(e),r=KA(a),i=r.length,d=0,n=[],s;i>d;)$A.call(a,s=r[d++])&&n.push(t?[s,a[s]]:a[s]);return n}}});var i7=T(()=>{l();var r7=ka(),GA=a7()(!0);r7(r7.S,"Object",{entries:function(e){return GA(e)}})});var p7=T((VV,d7)=>{l();i7();d7.exports=ct().Object.entries});var s7=T((FV,n7)=>{l();n7.exports={default:p7(),__esModule:!0}});var S7=T($1=>{"use strict";l();function Xt(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Object.defineProperty($1,"__esModule",{value:!0});var $e=Xt(wn()),Rt=gf(),l7=Xt(V8()),N6=_6(),YA=Xt(x6()),u7=Xt(m6()),WA=Xt(O9()),JA=Xt(L9()),T0=Xt(g6()),XA=Xt(e7()),ZA=Xt(s7()),e_=Xt(A6()),t_=Xt(i6()),a_=void 0,r_=function(t,e){return $e(this,a_),e[t]}.bind(void 0),Wr=Rt.curry(r_),c7=void 0,i_=function(t){return $e(this,c7),t!==null&&(t===void 0?"undefined":l7(t))==="object"}.bind(void 0),h7=function(t){return $e(this,c7),Array.isArray(t)||i_(t)}.bind(void 0),B0=void 0,d_=function(t,e,a){return $e(this,B0),N6.isLastIndex(e,t)?a:m7(t+1,e,a)}.bind(void 0),p_=function(t,e,a){return $e(this,B0),"Expected to find a composite at ["+String(e.join(", "))+"]["+String(t)+"], but instead got: "+(a===void 0?"undefined":l7(a))}.bind(void 0),n_=function(t,e,a){if($e(this,B0),h7(a))return a;throw new Error(p_(t,e,a))}.bind(void 0),m7=function(t,e,a){return $e(this,B0),a===void 0?void 0:d_(t,e,Wr(e[t],n_(t,e,a)))}.bind(void 0),s_=function(t,e){return $e(this,B0),t.length===0?void 0:m7(0,t,e)}.bind(void 0),v7=Rt.curry(s_),o_=void 0,o2=function(t){return $e(this,o_),Array.isArray(t)?[].concat(u7(t.keys())):YA(t)}.bind(void 0),f_=void 0,l_=function(t,e,a){return $e(this,f_),WA(v7(t,a),e)}.bind(void 0),u_=Rt.curry(l_),c_=void 0,h_=function(t,e){return $e(this,c_),Object.prototype.hasOwnProperty.call(e,t)}.bind(void 0),D6=Rt.curry(h_),o7=void 0,m_=function(t,e){$e(this,o7);var a=o2(t);return a.length===o2(e).length&&a.every(function(r){return $e(this,o7),D6(r,e)&&Wr(r,t)===Wr(r,e)}.bind(this))}.bind(void 0),b7=Rt.curry(m_),v_=void 0,g7=function(t){return $e(this,v_),o2(t).length===0}.bind(void 0),C6=void 0,b_=function(t,e){return $e(this,C6),ZA(e).reduce(function(a,r){var i=XA(r,2),d=i[0],n=i[1];return $e(this,C6),T0({},a,JA({},d,t(n,d,e)))}.bind(this),{})}.bind(void 0),g_=function(t,e){return $e(this,C6),Array.isArray(e)?e.map(t):b_(t,e)}.bind(void 0),y_=Rt.curry(g_),y7=void 0,x_=function(t,e){e[t];var a=e_(e,[t]);return $e(this,y7),a}.bind(void 0),w_=function(t,e){return $e(this,y7),Array.isArray(e)?N6.remove(t,1,e):x_(t,e)}.bind(void 0),x7=Rt.curry(w_),A_=void 0,f2=function(t){return $e(this,A_),Array.isArray(t)?[].concat(u7(t)):T0({},t)}.bind(void 0),Jt=void 0,__=function(t){$e(this,Jt);var e=f2(t);return{origin:e,current:e,previous:void 0}}.bind(void 0),w7=function(t,e,a){return $e(this,Jt),a[t]=e,Wr(t,a)}.bind(void 0),I_=function(t,e,a,r){return $e(this,Jt),T0({},r,{current:w7(t[e],a,r.current),previous:r.current})}.bind(void 0),S_=function(t,e,a){$e(this,Jt);var r=x7(t[e],a.current);return e===0?T0({},a,{current:r,origin:r}):T0({},a,{previous:w7(t[e-1],r,a.previous)})}.bind(void 0),A7=t_("composite.updateIn.removeAction"),E_=function(t,e,a,r){return $e(this,Jt),a===A7?S_(t,e,r):I_(t,e,a,r)}.bind(void 0),C_=function(t){return $e(this,Jt),typeof t=="number"?[]:{}}.bind(void 0),N_=function(t,e,a){return $e(this,Jt),D6(t,a)?f2(Wr(t,a)):C_(e)}.bind(void 0),D_=function(t,e,a,r){return $e(this,Jt),N6.isLastIndex(t,a)?e(Wr(t[a],r)):N_(t[a],t[a+1],r)}.bind(void 0),M_=function(t,e){return $e(this,Jt),function(a,r,i){return $e(this,Jt),E_(t,i,D_(t,e,i,a.current),a)}.bind(this)}.bind(void 0),T_=function(t,e,a){return $e(this,Jt),t.length===0?a:t.reduce(M_(t,e),__(a)).origin}.bind(void 0),q0=Rt.curry(T_);q0.remove=A7;var _7=void 0,B_=function(){return $e(this,_7),q0.remove}.bind(void 0),q_=function(t,e){return $e(this,_7),q0(t,B_,e)}.bind(void 0),O_=Rt.curry(q_),P_=void 0,U_=function(t,e,a){$e(this,P_);var r=f2(a);return r[t]=e,r}.bind(void 0),V_=Rt.curry(U_),f7=void 0,R_=function(t,e,a){return $e(this,f7),q0(t,function(){return $e(this,f7),e}.bind(this),a)}.bind(void 0),F_=Rt.curry(R_),I7=void 0,L_=function(t,e){return $e(this,I7),Boolean(Number(t)^Number(e))}.bind(void 0),Q_=function(t,e){return $e(this,I7),t===e||!L_(Array.isArray(t),Array.isArray(e))&&b7(t,e)}.bind(void 0),k_=Rt.curry(Q_),j_=void 0,H_=function(t){return $e(this,j_),g7(t)?void 0:t}.bind(void 0);$1.get=Wr,$1.getIn=v7,$1.getKeys=o2,$1.hasIn=u_,$1.hasKey=D6,$1.haveSameProps=b7,$1.is=h7,$1.isEmpty=g7,$1.map=y_,$1.remove=x7,$1.removeIn=O_,$1.set=V_,$1.setIn=F_,$1.shallowCopy=f2,$1.shallowEqual=k_,$1.toUndefinedIfEmpty=H_,$1.updateIn=q0});var C7=T((jV,E7)=>{l();E7.exports=function(t,e){return{value:e,done:!!t}}});var l2=T((KV,N7)=>{l();N7.exports={}});var u2=T(($V,D7)=>{l();var K_=sn(),z_=yi();D7.exports=function(t){return K_(z_(t))}});var T7=T((YV,M7)=>{l();var $_=qd(),G_=Math.max,Y_=Math.min;M7.exports=function(t,e){return t=$_(t),t<0?G_(t+e,0):Y_(t,e)}});var c2=T((JV,B7)=>{l();var W_=u2(),J_=Od(),X_=T7();B7.exports=function(t){return function(e,a,r){var i=W_(e),d=J_(i.length),n=X_(r,d),s;if(t&&a!=a){for(;d>n;)if(s=i[n++],s!=s)return!0}else for(;d>n;n++)if((t||n in i)&&i[n]===a)return t||n||0;return!t&&-1}}});var h2=T((ZV,O7)=>{l();var q7=ln()("keys"),Z_=Md();O7.exports=function(t){return q7[t]||(q7[t]=Z_(t))}});var V7=T((tR,U7)=>{l();var P7=g0(),eI=u2(),tI=c2()(!1),aI=h2()("IE_PROTO");U7.exports=function(t,e){var a=eI(t),r=0,i=[],d;for(d in a)d!=aI&&P7(a,d)&&i.push(d);for(;e.length>r;)P7(a,d=e[r++])&&(~tI(i,d)||i.push(d));return i}});var M6=T((rR,R7)=>{l();R7.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var T6=T((dR,F7)=>{l();var rI=V7(),iI=M6();F7.exports=Object.keys||function(e){return rI(e,iI)}});var Q7=T((nR,L7)=>{l();var dI=b0(),pI=vi(),nI=T6();L7.exports=bi()?Object.defineProperties:function(e,a){pI(e);for(var r=nI(a),i=r.length,d=0,n;i>d;)dI.f(e,n=r[d++],a[n]);return e}});var H7=T((oR,j7)=>{l();var k7=fr().document;j7.exports=k7&&k7.documentElement});var $7=T((lR,z7)=>{l();var sI=vi(),oI=Q7(),K7=M6(),fI=h2()("IE_PROTO"),B6=function(){},q6="prototype",m2=function(){var t=Zp()("iframe"),e=K7.length,a="<",r=">",i;for(t.style.display="none",H7().appendChild(t),t.src="javascript:",i=t.contentWindow.document,i.open(),i.write(a+"script"+r+"document.F=Object"+a+"/script"+r),i.close(),m2=i.F;e--;)delete m2[q6][K7[e]];return m2()};z7.exports=Object.create||function(e,a){var r;return e!==null?(B6[q6]=sI(e),r=new B6,B6[q6]=null,r[fI]=e):r=m2(),a===void 0?r:oI(r,a)}});var O6=T((cR,Y7)=>{l();var lI=b0().f,uI=g0(),G7=Yt()("toStringTag");Y7.exports=function(t,e,a){t&&!uI(t=a?t:t.prototype,G7)&&lI(t,G7,{configurable:!0,value:e})}});var X7=T((mR,J7)=>{"use strict";l();var cI=$7(),hI=en(),mI=O6(),W7={};lr()(W7,Yt()("iterator"),function(){return this});J7.exports=function(t,e,a){t.prototype=cI(W7,{next:hI(1,a)}),mI(t,e+" Iterator")}});var tl=T((bR,el)=>{l();var vI=g0(),bI=on(),Z7=h2()("IE_PROTO"),gI=Object.prototype;el.exports=Object.getPrototypeOf||function(t){return t=bI(t),vI(t,Z7)?t[Z7]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?gI:null}});var sl=T((yR,nl)=>{"use strict";l();var al=fn(),P6=Pt(),yI=y0(),rl=lr(),il=l2(),xI=X7(),wI=O6(),AI=tl(),O0=Yt()("iterator"),U6=!([].keys&&"next"in[].keys()),_I="@@iterator",dl="keys",v2="values",pl=function(){return this};nl.exports=function(t,e,a,r,i,d,n){xI(a,e,r);var s=function(oe){if(!U6&&oe in S)return S[oe];switch(oe){case dl:return function(){return new a(this,oe)};case v2:return function(){return new a(this,oe)}}return function(){return new a(this,oe)}},c=e+" Iterator",v=i==v2,I=!1,S=t.prototype,O=S[O0]||S[_I]||i&&S[i],R=O||s(i),V=i?v?s("entries"):R:void 0,L=e=="Array"&&S.entries||O,G,J,fe;if(L&&(fe=AI(L.call(new t)),fe!==Object.prototype&&fe.next&&(wI(fe,c,!0),!al&&typeof fe[O0]!="function"&&rl(fe,O0,pl))),v&&O&&O.name!==v2&&(I=!0,R=function(){return O.call(this)}),(!al||n)&&(U6||I||!S[O0])&&rl(S,O0,R),il[e]=R,il[c]=pl,i)if(G={values:v?R:s(v2),keys:d?R:s(dl),entries:V},n)for(J in G)J in S||yI(S,J,G[J]);else P6(P6.P+P6.F*(U6||I),e,G);return G}});var ll=T((wR,fl)=>{"use strict";l();var V6=w0(),b2=C7(),ol=l2(),II=u2();fl.exports=sl()(Array,"Array",function(t,e){this._t=II(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,a=this._i++;return!t||a>=t.length?(this._t=void 0,b2(1)):e=="keys"?b2(0,a):e=="values"?b2(0,t[a]):b2(0,[a,t[a]])},"values");ol.Arguments=ol.Array;V6("keys");V6("values");V6("entries")});var wl=T(()=>{l();var ul=ll(),SI=T6(),EI=y0(),CI=fr(),cl=lr(),yl=l2(),xl=Yt(),hl=xl("iterator"),ml=xl("toStringTag"),vl=yl.Array,bl={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(R6=SI(bl),g2=0;g2{"use strict";l();var NI=v0();Al.exports=function(t,e){return!!t&&NI(function(){e?t.call(null,function(){},1):t.call(null)})}});var _l=T(()=>{"use strict";l();var L6=Pt(),DI=xi()(0),MI=V0()([].forEach,!0);L6(L6.P+L6.F*!MI,"Array",{forEach:function(e){return DI(this,e,arguments[1])}})});var Sl=T((TR,Il)=>{l();function TI(t){if(Array.isArray(t)){for(var e=0,a=new Array(t.length);e{l();function BI(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}El.exports=BI});var Dl=T((PR,Nl)=>{l();function qI(){throw new TypeError("Invalid attempt to spread non-iterable instance")}Nl.exports=qI});var Tl=T((VR,Ml)=>{l();var OI=Sl(),PI=Cl(),UI=Dl();function VI(t){return OI(t)||PI(t)||UI()}Ml.exports=VI});var Bl=T(()=>{"use strict";l();var Q6=Pt(),RI=xi()(1);Q6(Q6.P+Q6.F*!V0()([].map,!0),"Array",{map:function(e){return RI(this,e,arguments[1])}})});var Ol=T((kR,ql)=>{l();var FI=qd(),LI=yi();ql.exports=function(t){return function(e,a){var r=String(LI(e)),i=FI(a),d=r.length,n,s;return i<0||i>=d?t?"":void 0:(n=r.charCodeAt(i),n<55296||n>56319||i+1===d||(s=r.charCodeAt(i+1))<56320||s>57343?t?r.charAt(i):n:t?r.slice(i,i+2):(n-55296<<10)+(s-56320)+65536)}}});var Ul=T((HR,Pl)=>{"use strict";l();var QI=Ol()(!0);Pl.exports=function(t,e,a){return e+(a?QI(t,e).length:1)}});var Rl=T((zR,Vl)=>{l();var k6=x0(),kI=Yt()("toStringTag"),jI=k6(function(){return arguments}())=="Arguments",HI=function(t,e){try{return t[e]}catch{}};Vl.exports=function(t){var e,a,r;return t===void 0?"Undefined":t===null?"Null":typeof(a=HI(e=Object(t),kI))=="string"?a:jI?k6(e):(r=k6(e))=="Object"&&typeof e.callee=="function"?"Arguments":r}});var Ll=T((GR,Fl)=>{"use strict";l();var KI=Rl(),zI=RegExp.prototype.exec;Fl.exports=function(t,e){var a=t.exec;if(typeof a=="function"){var r=a.call(t,e);if(typeof r!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return r}if(KI(t)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return zI.call(t,e)}});var kl=T((WR,Ql)=>{"use strict";l();var $I=vi();Ql.exports=function(){var t=$I(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}});var K6=T((XR,Hl)=>{"use strict";l();var GI=kl(),y2=RegExp.prototype.exec,YI=String.prototype.replace,jl=y2,x2="lastIndex",j6=function(){var t=/a/,e=/b*/g;return y2.call(t,"a"),y2.call(e,"a"),t[x2]!==0||e[x2]!==0}(),H6=/()??/.exec("")[1]!==void 0,WI=j6||H6;WI&&(jl=function(e){var a=this,r,i,d,n;return H6&&(i=new RegExp("^"+a.source+"$(?!\\s)",GI.call(a))),j6&&(r=a[x2]),d=y2.call(a,e),j6&&d&&(a[x2]=a.global?d.index+d[0].length:r),H6&&d&&d.length>1&&YI.call(d[0],i,function(){for(n=1;n{"use strict";l();var Kl=K6();Pt()({target:"RegExp",proto:!0,forced:Kl!==/./.exec},{exec:Kl})});var Yl=T((rF,Gl)=>{"use strict";l();zl();var JI=y0(),XI=lr(),z6=v0(),ZI=yi(),$l=Yt(),eS=K6(),tS=$l("species"),aS=!z6(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$")!=="7"}),rS=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var a="ab".split(t);return a.length===2&&a[0]==="a"&&a[1]==="b"}();Gl.exports=function(t,e,a){var r=$l(t),i=!z6(function(){var I={};return I[r]=function(){return 7},""[t](I)!=7}),d=i?!z6(function(){var I=!1,S=/a/;return S.exec=function(){return I=!0,null},t==="split"&&(S.constructor={},S.constructor[tS]=function(){return S}),S[r](""),!I}):void 0;if(!i||!d||t==="replace"&&!aS||t==="split"&&!rS){var n=/./[r],s=a(ZI,r,""[t],function(S,O,R,V,L){return O.exec===eS?i&&!L?{done:!0,value:n.call(O,R,V)}:{done:!0,value:S.call(R,O,V)}:{done:!1}}),c=s[0],v=s[1];JI(String.prototype,t,c),XI(RegExp.prototype,r,e==2?function(I,S){return v.call(I,this,S)}:function(I){return v.call(I,this)})}}});var Jl=T(()=>{"use strict";l();var iS=vi(),dS=Od(),pS=Ul(),Wl=Ll();Yl()("match",1,function(t,e,a,r){return[function(d){var n=t(this),s=d?.[e];return s!==void 0?s.call(d,n):new RegExp(d)[e](String(n))},function(i){var d=r(a,i,this);if(d.done)return d.value;var n=iS(i),s=String(this);if(!n.global)return Wl(n,s);var c=n.unicode;n.lastIndex=0;for(var v=[],I=0,S;(S=Wl(n,s))!==null;){var O=String(S[0]);v[I]=O,O===""&&(n.lastIndex=pS(s,dS(n.lastIndex),c)),I++}return I===0?null:v}]})});var Xl=T(()=>{"use strict";l();var $6=Pt(),nS=xi()(3);$6($6.P+$6.F*!V0()([].some,!0),"Array",{some:function(e){return nS(this,e,arguments[1])}})});var eu=T((lF,Zl)=>{l();Zl.exports=function(t,e,a){var r=a===void 0;switch(e.length){case 0:return r?t():t.call(a);case 1:return r?t(e[0]):t.call(a,e[0]);case 2:return r?t(e[0],e[1]):t.call(a,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(a,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(a,e[0],e[1],e[2],e[3])}return t.apply(a,e)}});var ru=T((cF,au)=>{"use strict";l();var sS=dn(),oS=Lr(),fS=eu(),tu=[].slice,G6={},lS=function(t,e,a){if(!(e in G6)){for(var r=[],i=0;i{l();var iu=Pt();iu(iu.P,"Function",{bind:ru()})});var W6=T((gF,du)=>{l();function uS(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}du.exports=uS});var su=T(Jr=>{"use strict";l();Object.defineProperty(Jr,"__esModule",{value:!0});function cS(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Bl();Jl();Xl();Y6();var ya=cS(W6()),J6=void 0,hS=function(e){var a=this;return ya(this,J6),e.map(function(r){var i=r.column,d=r.line;return ya(this,a),"".concat(d,":").concat(i)}.bind(this)).join("; ")}.bind(void 0),mS=function(e){var a=e.message,r=e.locations;return ya(this,J6),a+(r?" (".concat(hS(r),")"):"")}.bind(void 0),vS=function(e){return ya(this,J6),e.map(mS).join(` +`)}.bind(void 0),pu=void 0,bS=/^\s*(query|mutation|subscription|\{)/,gS=function(e){return ya(this,pu),e==="{"?"query":e}.bind(void 0),yS=function(e){ya(this,pu);var a=e.match(bS);if(!a)throw new TypeError(`Invalid operation: +`.concat(e));return gS(a[1])}.bind(void 0),nu=void 0,xS=function(e){return ya(this,nu),e.kind==="OperationDefinition"&&e.operation==="subscription"}.bind(void 0),wS=function(e){return ya(this,nu),e.definitions.some(xS)}.bind(void 0),AS=void 0,_S=function(e){var a=e.query,r=e.variables;return ya(this,AS),r?{operation:a,variables:r}:{operation:a}}.bind(void 0),IS=void 0,SS=function(e){var a=e.operation,r=e.variables;return ya(this,IS),r?{query:a,variables:r}:{query:a}}.bind(void 0);Jr.errorsToString=vS;Jr.getOperationType=yS;Jr.hasSubscription=wS;Jr.requestFromCompat=_S;Jr.requestToCompat=SS});var uu=T(n4=>{"use strict";l();Object.defineProperty(n4,"__esModule",{value:!0});var t4=function(){function t(e,a){for(var r=0;r1,n=!1,s=arguments[1],c=s;return new i(function(v){return r.subscribe({next:function(I){var S=!n;if(n=!0,!S||d)try{c=a(c,I)}catch(O){return v.error(O)}else c=I},error:function(I){v.error(I)},complete:function(){if(!n&&!d)return v.error(new TypeError("Cannot reduce an empty sequence"));v.next(c),v.complete()}})})}},{key:"concat",value:function(){for(var a=this,r=arguments.length,i=Array(r),d=0;d=0&&n.splice(S,1),c()}});n.push(I)},error:function(v){d.error(v)},complete:function(){c()}});function c(){s.closed&&n.length===0&&d.complete()}return function(){n.forEach(function(v){return v.unsubscribe()}),s.unsubscribe()}})}},{key:Z6,value:function(){return this}}],[{key:"from",value:function(a){var r=typeof this=="function"?this:t;if(a==null)throw new TypeError(a+" is not an object");var i=A2(a,Z6);if(i){var d=i.call(a);if(Object(d)!==d)throw new TypeError(d+" is not an object");return CS(d)&&d.constructor===r?d:new r(function(n){return d.subscribe(n)})}if(i4("iterator")&&(i=A2(a,ES),i))return new r(function(n){w2(function(){if(!n.closed){var s=!0,c=!1,v=void 0;try{for(var I=i.call(a)[Symbol.iterator](),S;!(s=(S=I.next()).done);s=!0){var O=S.value;if(n.next(O),n.closed)return}}catch(R){c=!0,v=R}finally{try{!s&&I.return&&I.return()}finally{if(c)throw v}}n.complete()}})});if(Array.isArray(a))return new r(function(n){w2(function(){if(!n.closed){for(var s=0;s{l();cu.exports=uu().Observable});var vu=T(()=>{"use strict";l();var mu=Pt(),TS=c2()(!0);mu(mu.P,"Array",{includes:function(e){return TS(this,e,arguments.length>1?arguments[1]:void 0)}});w0()("includes")});var gu=T((DF,bu)=>{l();var BS=Lr(),qS=x0(),OS=Yt()("match");bu.exports=function(t){var e;return BS(t)&&((e=t[OS])!==void 0?!!e:qS(t)=="RegExp")}});var xu=T((TF,yu)=>{l();var PS=gu(),US=yi();yu.exports=function(t,e,a){if(PS(e))throw TypeError("String#"+a+" doesn't accept regex!");return String(US(t))}});var Au=T((qF,wu)=>{l();var VS=Yt()("match");wu.exports=function(t){var e=/./;try{"/./"[t](e)}catch{try{return e[VS]=!1,!"/./"[t](e)}catch{}}return!0}});var Iu=T(()=>{"use strict";l();var s4=Pt(),RS=xu(),_u="includes";s4(s4.P+s4.F*Au()(_u),"String",{includes:function(e){return!!~RS(this,e,_u).indexOf(e,arguments.length>1?arguments[1]:void 0)}})});var Eu=T((RF,Su)=>{l();function FS(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}Su.exports=FS});var Nu=T((LF,Cu)=>{l();var LS=Eu();function QS(t){for(var e=1;e{l();function kS(t,e){if(t==null)return{};var a={},r=Object.keys(t),i,d;for(d=0;d=0)&&(a[i]=t[i]);return a}Du.exports=kS});var Bu=T((HF,Tu)=>{l();var jS=Mu();function HS(t,e){if(t==null)return{};var a=jS(t,e),r,i;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(t);for(i=0;i=0)&&(!Object.prototype.propertyIsEnumerable.call(t,r)||(a[r]=t[r]))}return a}Tu.exports=HS});var Ou=T(()=>{"use strict";l();var o4=Pt(),KS=c2()(!1),f4=[].indexOf,qu=!!f4&&1/[1].indexOf(1,-0)<0;o4(o4.P+o4.F*(qu||!V0()(f4)),"Array",{indexOf:function(e){return qu?f4.apply(this,arguments)||0:KS(this,e,arguments[1])}})});var cc=T($a=>{"use strict";l();Object.defineProperty($a,"__esModule",{value:!0});function L0(t){return t&&typeof t=="object"&&"default"in t?t.default:t}lf();cf();vf();var l4=S7();qp();wl();_l();var F0=L0(Tl()),u4=su(),zS=L0(hu());vu();Iu();var Zt=L0(Nu()),_2=L0(Bu());Ou();var I2=_6();Y6();var Y=L0(W6()),$S=void 0,c4=function(e){var a=e.activeObservers,r=e.canceledObservers,i=_2(e,["activeObservers","canceledObservers"]);return Y(this,$S),Zt({},i,{isActive:!1,activeObservers:[],canceledObservers:F0(a).concat(F0(r))})}.bind(void 0),h4=void 0,GS=function(e,a){var r=this;return Y(this,h4),function(i){return Y(this,r),i[e]&&i[e](a)}.bind(this)}.bind(void 0),YS=function(e){var a=e.name;return Y(this,h4),"on".concat(a)}.bind(void 0),m4=function(e,a){return Y(this,h4),e.forEach(GS(YS(a),a.payload))}.bind(void 0),WS=void 0,Ru=function(e,a){return Y(this,WS),m4(e.canceledObservers,a),e}.bind(void 0),Q0={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},k0=void 0,JS=function(e){return Y(this,k0),{payload:e,name:Q0.start}}.bind(void 0),XS=function(e){return Y(this,k0),{payload:e,name:Q0.result}}.bind(void 0),S2=function(e){return Y(this,k0),{payload:e,name:Q0.error}}.bind(void 0),ZS=function(){return Y(this,k0),{name:Q0.cancel,payload:void 0}}.bind(void 0),eE=function(e){return Y(this,k0),{payload:e,name:Q0.abort}}.bind(void 0),Fu=void 0,tE=function(e){return Y(this,Fu),Zt({},e,{canceledObservers:[]})}.bind(void 0),j0=function(e){return Y(this,Fu),e.canceledObservers.length>0?tE(Ru(e,ZS())):e}.bind(void 0),aE=void 0,Lu=function(e,a,r){return Y(this,aE),e.findIndex(l4.hasIn([a],r))}.bind(void 0),rE=void 0,v4=function(e){var a=this;return Y(this,rE),function(r){return Y(this,a),I2.replace(Lu(r,"request",e.request),[e],r)}.bind(this)}.bind(void 0),iE=void 0,H0=function(e){var a=this;return Y(this,iE),function(r){return Y(this,a),I2.remove(Lu(r,"request",e.request),1,r)}.bind(this)}.bind(void 0),dE=void 0,Ha=function(e,a){return Y(this,dE),e.notifiers=a(e.notifiers),e}.bind(void 0),pE=void 0,Ka=function(e,a){return Y(this,pE),Ha(e,v4(a)),a}.bind(void 0),ea={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},Qu=void 0,nE=function(e){var a=e.activeObservers,r=e.canceledObservers;return Y(this,Qu),F0(a).concat(F0(r))}.bind(void 0),ku=function(e,a){return Y(this,Qu),m4(nE(e),a),e}.bind(void 0),sE=void 0,b4=function(e,a,r){return Y(this,sE),Ha(e,H0(ku(a,eE(r))))}.bind(void 0),oE=void 0,E2=function(e,a,r){return Y(this,oE),e.find(l4.hasIn([a],r))}.bind(void 0),fE=void 0,C2=function(e,a){return Y(this,fE),m4(e.activeObservers,a),e}.bind(void 0),lE=void 0,ju=function(e,a){return Y(this,lE),C2(e,XS(a))}.bind(void 0),uE=void 0,Hu=function(e){return Y(this,uE),C2(e,JS(e))}.bind(void 0),cE=void 0,Ku=function(e){return Y(this,cE),j0(Zt({},e,{isActive:!0,requestStatus:ea.pending,subscriptionId:void 0}))}.bind(void 0),hE=void 0,zu=function(e,a){return Y(this,hE),e.receive("ok",a.onSucceed).receive("error",a.onError).receive("timeout",a.onTimeout)}.bind(void 0),g4=void 0,mE=function(e,a){var r=this;return Y(this,g4),function(i){var d=this;return Y(this,r),function(){Y(this,d);var n=E2(e.notifiers,"request",a);if(n){for(var s=arguments.length,c=new Array(s),v=0;v0}.bind(void 0),WE=function(e){var a=this;return Y(this,xa),function(){Y(this,a),YE(e)&&ic(e)}.bind(this)}.bind(void 0),JE="__absinthe__:control",XE=function(e){Y(this,xa);var a={phoenixSocket:e,channel:e.channel(JE),channelJoinCreated:!1,notifiers:[]};return e.onOpen(WE(a)),e.onClose(GE(a)),e.onMessage(HE(a)),a}.bind(void 0),ZE=void 0,eC=function(e,a){var r=e.activeObservers,i=_2(e,["activeObservers"]);return Y(this,ZE),Zt({},i,{activeObservers:F0(r).concat([a]),isActive:!0})}.bind(void 0),tC=void 0,nc=function(e,a,r){return Y(this,tC),Ka(e,eC(a,r))}.bind(void 0),sc=void 0,aC=function(e,a){return Y(this,sc),{operationType:a,request:e,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:ea.pending,subscriptionId:void 0}}.bind(void 0),rC=function(e){return Y(this,sc),aC(e,u4.getOperationType(e.operation))}.bind(void 0),iC=void 0,dC=function(e){return Y(this,iC),e.isActive?e:Zt({},e,{isActive:!0})}.bind(void 0),Zr=void 0,pC=function(e){Y(this,Zr),e.phoenixSocket.isConnected()?ic(e):e.phoenixSocket.connect()}.bind(void 0),nC=function(e,a){Y(this,Zr);var r=rC(a);return Ha(e,I2.append([r])),e.channelJoinCreated?rc(e,r):pC(e),r}.bind(void 0),Vu=function(e,a){return Y(this,Zr),Ka(e,dC(a))}.bind(void 0),sC=function(e,a){return Y(this,Zr),a.requestStatus===ea.sending?Vu(e,j0(a)):Vu(e,a)}.bind(void 0),oC=function(e,a){return Y(this,Zr),a.isActive?a:sC(e,a)}.bind(void 0),fC=function(e,a){Y(this,Zr);var r=E2(e.notifiers,"request",a);return r&&oC(e,r)}.bind(void 0),lC=function(e,a){return Y(this,Zr),fC(e,a)||nC(e,a)}.bind(void 0),M2=void 0,uC=function(e,a,r,i){var d=this,n=a.request;return Y(this,M2),function(){Y(this,d);var s=E2(e.notifiers,"request",n);i(e,s,s?r:void 0)}.bind(this)}.bind(void 0),cC=function(e,a){var r=this,i=e.operationType;return Y(this,M2),function(d){Y(this,r),a.next(d),i!=="subscription"&&a.complete()}.bind(this)}.bind(void 0),hC=function(e,a,r){return Y(this,M2),Zt({},a,{onAbort:r.error.bind(r),onResult:cC(e,r)})}.bind(void 0),mC=function(e,a){var r=this,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},d=i.unsubscribe,n=_2(i,["unsubscribe"]);return Y(this,M2),new zS(function(s){Y(this,r);var c=hC(a,n,s);return nc(e,a,c),d&&uC(e,a,c,d)}.bind(this))}.bind(void 0),oc=void 0,vC=function(e,a){return Y(this,oc),I2.remove(e.indexOf(a),1,e)}.bind(void 0),bC=function(e,a){var r=e.activeObservers,i=_2(e,["activeObservers"]);return Y(this,oc),Zt({},i,{activeObservers:vC(r,a)})}.bind(void 0),fc=void 0,gC=function(e,a){if(Y(this,fc),e.activeObservers.includes(a))return e;throw new Error("Observer is not attached to notifier")}.bind(void 0),lc=function(e,a,r){return Y(this,fc),Ha(e,v4(bC(gC(a,r),r)))}.bind(void 0),uc=void 0,yC=function(e,a,r){return Y(this,uc),a.activeObservers.length===1?ac(e,a):lc(e,a,r)}.bind(void 0),xC=function(e,a,r){return Y(this,uc),a.isActive?yC(e,a,r):e}.bind(void 0);$a.cancel=ac;$a.create=XE;$a.observe=nc;$a.send=lC;$a.toObservable=mC;$a.unobserve=lc;$a.unobserveOrCancel=xC});var y4=T((JF,z0)=>{l();var{Socket:wC}=qp(),AC=vo(),K0=cc();z0.exports.absintheCreate=function(t){let e=new wC(t,{transport:AC});return K0.create(e)};z0.exports.absintheSend=function(t,e){return K0.send(t,{operation:e})};z0.exports.absintheObserve=function(t,e,a){return new Promise((r,i)=>{K0.observe(t,e,{onStart:function(){r(e)},onError:function(d){K0.cancel(t,e),i(d)},onResult:function(d){a(d)}})})};z0.exports.absintheCancel=function(t,e){K0.cancel(t,e)}});var Sc=T((aL,EC)=>{EC.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var Aa=T((Ec,A4)=>{l();(function(t,e){"use strict";function a(w,p){if(!w)throw new Error(p||"Assertion failed")}function r(w,p){w.super_=p;var f=function(){};f.prototype=p.prototype,w.prototype=new f,w.prototype.constructor=w}function i(w,p,f){if(i.isBN(w))return w;this.negative=0,this.words=null,this.length=0,this.red=null,w!==null&&((p==="le"||p==="be")&&(f=p,p=10),this._init(w||0,p||10,f||"be"))}typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=require("buffer").Buffer}catch{}i.isBN=function(p){return p instanceof i?!0:p!==null&&typeof p=="object"&&p.constructor.wordSize===i.wordSize&&Array.isArray(p.words)},i.max=function(p,f){return p.cmp(f)>0?p:f},i.min=function(p,f){return p.cmp(f)<0?p:f},i.prototype._init=function(p,f,m){if(typeof p=="number")return this._initNumber(p,f,m);if(typeof p=="object")return this._initArray(p,f,m);f==="hex"&&(f=16),a(f===(f|0)&&f>=2&&f<=36),p=p.toString().replace(/\s+/g,"");var b=0;p[0]==="-"&&(b++,this.negative=1),b=0;b-=3)q=p[b]|p[b-1]<<8|p[b-2]<<16,this.words[E]|=q<>>26-U&67108863,U+=24,U>=26&&(U-=26,E++);else if(m==="le")for(b=0,E=0;b>>26-U&67108863,U+=24,U>=26&&(U-=26,E++);return this.strip()};function n(w,p){var f=w.charCodeAt(p);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function s(w,p,f){var m=n(w,f);return f-1>=p&&(m|=n(w,f-1)<<4),m}i.prototype._parseHex=function(p,f,m){this.length=Math.ceil((p.length-f)/6),this.words=new Array(this.length);for(var b=0;b=f;b-=2)U=s(p,f,b)<=18?(E-=18,q+=1,this.words[q]|=U>>>26):E+=8;else{var M=p.length-f;for(b=M%2===0?f+1:f;b=18?(E-=18,q+=1,this.words[q]|=U>>>26):E+=8}this.strip()};function c(w,p,f,m){for(var b=0,E=Math.min(w.length,f),q=p;q=49?b+=U-49+10:U>=17?b+=U-17+10:b+=U}return b}i.prototype._parseBase=function(p,f,m){this.words=[0],this.length=1;for(var b=0,E=1;E<=67108863;E*=f)b++;b--,E=E/f|0;for(var q=p.length-m,U=q%b,M=Math.min(q,q-U)+m,u=0,D=m;D1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var v=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(p,f){p=p||10,f=f|0||1;var m;if(p===16||p==="hex"){m="";for(var b=0,E=0,q=0;q>>24-b&16777215,E!==0||q!==this.length-1?m=v[6-M.length]+M+m:m=M+m,b+=2,b>=26&&(b-=26,q--)}for(E!==0&&(m=E.toString(16)+m);m.length%f!==0;)m="0"+m;return this.negative!==0&&(m="-"+m),m}if(p===(p|0)&&p>=2&&p<=36){var u=I[p],D=S[p];m="";var se=this.clone();for(se.negative=0;!se.isZero();){var X=se.modn(D).toString(p);se=se.idivn(D),se.isZero()?m=X+m:m=v[u-X.length]+X+m}for(this.isZero()&&(m="0"+m);m.length%f!==0;)m="0"+m;return this.negative!==0&&(m="-"+m),m}a(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var p=this.words[0];return this.length===2?p+=this.words[1]*67108864:this.length===3&&this.words[2]===1?p+=4503599627370496+this.words[1]*67108864:this.length>2&&a(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-p:p},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(p,f){return a(typeof d<"u"),this.toArrayLike(d,p,f)},i.prototype.toArray=function(p,f){return this.toArrayLike(Array,p,f)},i.prototype.toArrayLike=function(p,f,m){var b=this.byteLength(),E=m||Math.max(1,b);a(b<=E,"byte array longer than desired length"),a(E>0,"Requested array length <= 0"),this.strip();var q=f==="le",U=new p(E),M,u,D=this.clone();if(q){for(u=0;!D.isZero();u++)M=D.andln(255),D.iushrn(8),U[u]=M;for(;u=4096&&(m+=13,f>>>=13),f>=64&&(m+=7,f>>>=7),f>=8&&(m+=4,f>>>=4),f>=2&&(m+=2,f>>>=2),m+f},i.prototype._zeroBits=function(p){if(p===0)return 26;var f=p,m=0;return(f&8191)===0&&(m+=13,f>>>=13),(f&127)===0&&(m+=7,f>>>=7),(f&15)===0&&(m+=4,f>>>=4),(f&3)===0&&(m+=2,f>>>=2),(f&1)===0&&m++,m},i.prototype.bitLength=function(){var p=this.words[this.length-1],f=this._countBits(p);return(this.length-1)*26+f};function O(w){for(var p=new Array(w.bitLength()),f=0;f>>b}return p}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var p=0,f=0;fp.length?this.clone().ior(p):p.clone().ior(this)},i.prototype.uor=function(p){return this.length>p.length?this.clone().iuor(p):p.clone().iuor(this)},i.prototype.iuand=function(p){var f;this.length>p.length?f=p:f=this;for(var m=0;mp.length?this.clone().iand(p):p.clone().iand(this)},i.prototype.uand=function(p){return this.length>p.length?this.clone().iuand(p):p.clone().iuand(this)},i.prototype.iuxor=function(p){var f,m;this.length>p.length?(f=this,m=p):(f=p,m=this);for(var b=0;bp.length?this.clone().ixor(p):p.clone().ixor(this)},i.prototype.uxor=function(p){return this.length>p.length?this.clone().iuxor(p):p.clone().iuxor(this)},i.prototype.inotn=function(p){a(typeof p=="number"&&p>=0);var f=Math.ceil(p/26)|0,m=p%26;this._expand(f),m>0&&f--;for(var b=0;b0&&(this.words[b]=~this.words[b]&67108863>>26-m),this.strip()},i.prototype.notn=function(p){return this.clone().inotn(p)},i.prototype.setn=function(p,f){a(typeof p=="number"&&p>=0);var m=p/26|0,b=p%26;return this._expand(m+1),f?this.words[m]=this.words[m]|1<p.length?(m=this,b=p):(m=p,b=this);for(var E=0,q=0;q>>26;for(;E!==0&&q>>26;if(this.length=m.length,E!==0)this.words[this.length]=E,this.length++;else if(m!==this)for(;qp.length?this.clone().iadd(p):p.clone().iadd(this)},i.prototype.isub=function(p){if(p.negative!==0){p.negative=0;var f=this.iadd(p);return p.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(p),this.negative=1,this._normSign();var m=this.cmp(p);if(m===0)return this.negative=0,this.length=1,this.words[0]=0,this;var b,E;m>0?(b=this,E=p):(b=p,E=this);for(var q=0,U=0;U>26,this.words[U]=f&67108863;for(;q!==0&&U>26,this.words[U]=f&67108863;if(q===0&&U>>26,se=M&67108863,X=Math.min(u,p.length-1),ne=Math.max(0,u-w.length+1);ne<=X;ne++){var Z=u-ne|0;b=w.words[Z]|0,E=p.words[ne]|0,q=b*E+se,D+=q/67108864|0,se=q&67108863}f.words[u]=se|0,M=D|0}return M!==0?f.words[u]=M|0:f.length--,f.strip()}var V=function(p,f,m){var b=p.words,E=f.words,q=m.words,U=0,M,u,D,se=b[0]|0,X=se&8191,ne=se>>>13,Z=b[1]|0,g=Z&8191,Q=Z>>>13,$=b[2]|0,k=$&8191,ee=$>>>13,ce=b[3]|0,ie=ce&8191,de=ce>>>13,Re=b[4]|0,le=Re&8191,Ee=Re>>>13,sa=b[5]|0,x1=sa&8191,Ze=sa>>>13,Bt=b[6]|0,w1=Bt&8191,l1=Bt>>>13,jt=b[7]|0,s1=jt&8191,u1=jt>>>13,qt=b[8]|0,c1=qt&8191,h1=qt>>>13,oa=b[9]|0,S1=oa&8191,m1=oa>>>13,Ht=E[0]|0,o1=Ht&8191,d1=Ht>>>13,vt=E[1]|0,p1=vt&8191,f1=vt>>>13,_t=E[2]|0,n1=_t&8191,v1=_t>>>13,fa=E[3]|0,E1=fa&8191,C1=fa>>>13,et=E[4]|0,e1=et&8191,r1=et>>>13,Kt=E[5]|0,b1=Kt&8191,A1=Kt>>>13,Ta=E[6]|0,Ke=Ta&8191,_1=Ta>>>13,h=E[7]|0,_=h&8191,A=h>>>13,o=E[8]|0,N=o&8191,P=o>>>13,F=E[9]|0,K=F&8191,W=F>>>13;m.negative=p.negative^f.negative,m.length=19,M=Math.imul(X,o1),u=Math.imul(X,d1),u=u+Math.imul(ne,o1)|0,D=Math.imul(ne,d1);var ge=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(ge>>>26)|0,ge&=67108863,M=Math.imul(g,o1),u=Math.imul(g,d1),u=u+Math.imul(Q,o1)|0,D=Math.imul(Q,d1),M=M+Math.imul(X,p1)|0,u=u+Math.imul(X,f1)|0,u=u+Math.imul(ne,p1)|0,D=D+Math.imul(ne,f1)|0;var ue=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(ue>>>26)|0,ue&=67108863,M=Math.imul(k,o1),u=Math.imul(k,d1),u=u+Math.imul(ee,o1)|0,D=Math.imul(ee,d1),M=M+Math.imul(g,p1)|0,u=u+Math.imul(g,f1)|0,u=u+Math.imul(Q,p1)|0,D=D+Math.imul(Q,f1)|0,M=M+Math.imul(X,n1)|0,u=u+Math.imul(X,v1)|0,u=u+Math.imul(ne,n1)|0,D=D+Math.imul(ne,v1)|0;var Fe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,M=Math.imul(ie,o1),u=Math.imul(ie,d1),u=u+Math.imul(de,o1)|0,D=Math.imul(de,d1),M=M+Math.imul(k,p1)|0,u=u+Math.imul(k,f1)|0,u=u+Math.imul(ee,p1)|0,D=D+Math.imul(ee,f1)|0,M=M+Math.imul(g,n1)|0,u=u+Math.imul(g,v1)|0,u=u+Math.imul(Q,n1)|0,D=D+Math.imul(Q,v1)|0,M=M+Math.imul(X,E1)|0,u=u+Math.imul(X,C1)|0,u=u+Math.imul(ne,E1)|0,D=D+Math.imul(ne,C1)|0;var me=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(me>>>26)|0,me&=67108863,M=Math.imul(le,o1),u=Math.imul(le,d1),u=u+Math.imul(Ee,o1)|0,D=Math.imul(Ee,d1),M=M+Math.imul(ie,p1)|0,u=u+Math.imul(ie,f1)|0,u=u+Math.imul(de,p1)|0,D=D+Math.imul(de,f1)|0,M=M+Math.imul(k,n1)|0,u=u+Math.imul(k,v1)|0,u=u+Math.imul(ee,n1)|0,D=D+Math.imul(ee,v1)|0,M=M+Math.imul(g,E1)|0,u=u+Math.imul(g,C1)|0,u=u+Math.imul(Q,E1)|0,D=D+Math.imul(Q,C1)|0,M=M+Math.imul(X,e1)|0,u=u+Math.imul(X,r1)|0,u=u+Math.imul(ne,e1)|0,D=D+Math.imul(ne,r1)|0;var De=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(De>>>26)|0,De&=67108863,M=Math.imul(x1,o1),u=Math.imul(x1,d1),u=u+Math.imul(Ze,o1)|0,D=Math.imul(Ze,d1),M=M+Math.imul(le,p1)|0,u=u+Math.imul(le,f1)|0,u=u+Math.imul(Ee,p1)|0,D=D+Math.imul(Ee,f1)|0,M=M+Math.imul(ie,n1)|0,u=u+Math.imul(ie,v1)|0,u=u+Math.imul(de,n1)|0,D=D+Math.imul(de,v1)|0,M=M+Math.imul(k,E1)|0,u=u+Math.imul(k,C1)|0,u=u+Math.imul(ee,E1)|0,D=D+Math.imul(ee,C1)|0,M=M+Math.imul(g,e1)|0,u=u+Math.imul(g,r1)|0,u=u+Math.imul(Q,e1)|0,D=D+Math.imul(Q,r1)|0,M=M+Math.imul(X,b1)|0,u=u+Math.imul(X,A1)|0,u=u+Math.imul(ne,b1)|0,D=D+Math.imul(ne,A1)|0;var Me=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,M=Math.imul(w1,o1),u=Math.imul(w1,d1),u=u+Math.imul(l1,o1)|0,D=Math.imul(l1,d1),M=M+Math.imul(x1,p1)|0,u=u+Math.imul(x1,f1)|0,u=u+Math.imul(Ze,p1)|0,D=D+Math.imul(Ze,f1)|0,M=M+Math.imul(le,n1)|0,u=u+Math.imul(le,v1)|0,u=u+Math.imul(Ee,n1)|0,D=D+Math.imul(Ee,v1)|0,M=M+Math.imul(ie,E1)|0,u=u+Math.imul(ie,C1)|0,u=u+Math.imul(de,E1)|0,D=D+Math.imul(de,C1)|0,M=M+Math.imul(k,e1)|0,u=u+Math.imul(k,r1)|0,u=u+Math.imul(ee,e1)|0,D=D+Math.imul(ee,r1)|0,M=M+Math.imul(g,b1)|0,u=u+Math.imul(g,A1)|0,u=u+Math.imul(Q,b1)|0,D=D+Math.imul(Q,A1)|0,M=M+Math.imul(X,Ke)|0,u=u+Math.imul(X,_1)|0,u=u+Math.imul(ne,Ke)|0,D=D+Math.imul(ne,_1)|0;var qe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(qe>>>26)|0,qe&=67108863,M=Math.imul(s1,o1),u=Math.imul(s1,d1),u=u+Math.imul(u1,o1)|0,D=Math.imul(u1,d1),M=M+Math.imul(w1,p1)|0,u=u+Math.imul(w1,f1)|0,u=u+Math.imul(l1,p1)|0,D=D+Math.imul(l1,f1)|0,M=M+Math.imul(x1,n1)|0,u=u+Math.imul(x1,v1)|0,u=u+Math.imul(Ze,n1)|0,D=D+Math.imul(Ze,v1)|0,M=M+Math.imul(le,E1)|0,u=u+Math.imul(le,C1)|0,u=u+Math.imul(Ee,E1)|0,D=D+Math.imul(Ee,C1)|0,M=M+Math.imul(ie,e1)|0,u=u+Math.imul(ie,r1)|0,u=u+Math.imul(de,e1)|0,D=D+Math.imul(de,r1)|0,M=M+Math.imul(k,b1)|0,u=u+Math.imul(k,A1)|0,u=u+Math.imul(ee,b1)|0,D=D+Math.imul(ee,A1)|0,M=M+Math.imul(g,Ke)|0,u=u+Math.imul(g,_1)|0,u=u+Math.imul(Q,Ke)|0,D=D+Math.imul(Q,_1)|0,M=M+Math.imul(X,_)|0,u=u+Math.imul(X,A)|0,u=u+Math.imul(ne,_)|0,D=D+Math.imul(ne,A)|0;var Te=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Te>>>26)|0,Te&=67108863,M=Math.imul(c1,o1),u=Math.imul(c1,d1),u=u+Math.imul(h1,o1)|0,D=Math.imul(h1,d1),M=M+Math.imul(s1,p1)|0,u=u+Math.imul(s1,f1)|0,u=u+Math.imul(u1,p1)|0,D=D+Math.imul(u1,f1)|0,M=M+Math.imul(w1,n1)|0,u=u+Math.imul(w1,v1)|0,u=u+Math.imul(l1,n1)|0,D=D+Math.imul(l1,v1)|0,M=M+Math.imul(x1,E1)|0,u=u+Math.imul(x1,C1)|0,u=u+Math.imul(Ze,E1)|0,D=D+Math.imul(Ze,C1)|0,M=M+Math.imul(le,e1)|0,u=u+Math.imul(le,r1)|0,u=u+Math.imul(Ee,e1)|0,D=D+Math.imul(Ee,r1)|0,M=M+Math.imul(ie,b1)|0,u=u+Math.imul(ie,A1)|0,u=u+Math.imul(de,b1)|0,D=D+Math.imul(de,A1)|0,M=M+Math.imul(k,Ke)|0,u=u+Math.imul(k,_1)|0,u=u+Math.imul(ee,Ke)|0,D=D+Math.imul(ee,_1)|0,M=M+Math.imul(g,_)|0,u=u+Math.imul(g,A)|0,u=u+Math.imul(Q,_)|0,D=D+Math.imul(Q,A)|0,M=M+Math.imul(X,N)|0,u=u+Math.imul(X,P)|0,u=u+Math.imul(ne,N)|0,D=D+Math.imul(ne,P)|0;var Oe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,M=Math.imul(S1,o1),u=Math.imul(S1,d1),u=u+Math.imul(m1,o1)|0,D=Math.imul(m1,d1),M=M+Math.imul(c1,p1)|0,u=u+Math.imul(c1,f1)|0,u=u+Math.imul(h1,p1)|0,D=D+Math.imul(h1,f1)|0,M=M+Math.imul(s1,n1)|0,u=u+Math.imul(s1,v1)|0,u=u+Math.imul(u1,n1)|0,D=D+Math.imul(u1,v1)|0,M=M+Math.imul(w1,E1)|0,u=u+Math.imul(w1,C1)|0,u=u+Math.imul(l1,E1)|0,D=D+Math.imul(l1,C1)|0,M=M+Math.imul(x1,e1)|0,u=u+Math.imul(x1,r1)|0,u=u+Math.imul(Ze,e1)|0,D=D+Math.imul(Ze,r1)|0,M=M+Math.imul(le,b1)|0,u=u+Math.imul(le,A1)|0,u=u+Math.imul(Ee,b1)|0,D=D+Math.imul(Ee,A1)|0,M=M+Math.imul(ie,Ke)|0,u=u+Math.imul(ie,_1)|0,u=u+Math.imul(de,Ke)|0,D=D+Math.imul(de,_1)|0,M=M+Math.imul(k,_)|0,u=u+Math.imul(k,A)|0,u=u+Math.imul(ee,_)|0,D=D+Math.imul(ee,A)|0,M=M+Math.imul(g,N)|0,u=u+Math.imul(g,P)|0,u=u+Math.imul(Q,N)|0,D=D+Math.imul(Q,P)|0,M=M+Math.imul(X,K)|0,u=u+Math.imul(X,W)|0,u=u+Math.imul(ne,K)|0,D=D+Math.imul(ne,W)|0;var Ue=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Ue>>>26)|0,Ue&=67108863,M=Math.imul(S1,p1),u=Math.imul(S1,f1),u=u+Math.imul(m1,p1)|0,D=Math.imul(m1,f1),M=M+Math.imul(c1,n1)|0,u=u+Math.imul(c1,v1)|0,u=u+Math.imul(h1,n1)|0,D=D+Math.imul(h1,v1)|0,M=M+Math.imul(s1,E1)|0,u=u+Math.imul(s1,C1)|0,u=u+Math.imul(u1,E1)|0,D=D+Math.imul(u1,C1)|0,M=M+Math.imul(w1,e1)|0,u=u+Math.imul(w1,r1)|0,u=u+Math.imul(l1,e1)|0,D=D+Math.imul(l1,r1)|0,M=M+Math.imul(x1,b1)|0,u=u+Math.imul(x1,A1)|0,u=u+Math.imul(Ze,b1)|0,D=D+Math.imul(Ze,A1)|0,M=M+Math.imul(le,Ke)|0,u=u+Math.imul(le,_1)|0,u=u+Math.imul(Ee,Ke)|0,D=D+Math.imul(Ee,_1)|0,M=M+Math.imul(ie,_)|0,u=u+Math.imul(ie,A)|0,u=u+Math.imul(de,_)|0,D=D+Math.imul(de,A)|0,M=M+Math.imul(k,N)|0,u=u+Math.imul(k,P)|0,u=u+Math.imul(ee,N)|0,D=D+Math.imul(ee,P)|0,M=M+Math.imul(g,K)|0,u=u+Math.imul(g,W)|0,u=u+Math.imul(Q,K)|0,D=D+Math.imul(Q,W)|0;var Pe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,M=Math.imul(S1,n1),u=Math.imul(S1,v1),u=u+Math.imul(m1,n1)|0,D=Math.imul(m1,v1),M=M+Math.imul(c1,E1)|0,u=u+Math.imul(c1,C1)|0,u=u+Math.imul(h1,E1)|0,D=D+Math.imul(h1,C1)|0,M=M+Math.imul(s1,e1)|0,u=u+Math.imul(s1,r1)|0,u=u+Math.imul(u1,e1)|0,D=D+Math.imul(u1,r1)|0,M=M+Math.imul(w1,b1)|0,u=u+Math.imul(w1,A1)|0,u=u+Math.imul(l1,b1)|0,D=D+Math.imul(l1,A1)|0,M=M+Math.imul(x1,Ke)|0,u=u+Math.imul(x1,_1)|0,u=u+Math.imul(Ze,Ke)|0,D=D+Math.imul(Ze,_1)|0,M=M+Math.imul(le,_)|0,u=u+Math.imul(le,A)|0,u=u+Math.imul(Ee,_)|0,D=D+Math.imul(Ee,A)|0,M=M+Math.imul(ie,N)|0,u=u+Math.imul(ie,P)|0,u=u+Math.imul(de,N)|0,D=D+Math.imul(de,P)|0,M=M+Math.imul(k,K)|0,u=u+Math.imul(k,W)|0,u=u+Math.imul(ee,K)|0,D=D+Math.imul(ee,W)|0;var xe=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(xe>>>26)|0,xe&=67108863,M=Math.imul(S1,E1),u=Math.imul(S1,C1),u=u+Math.imul(m1,E1)|0,D=Math.imul(m1,C1),M=M+Math.imul(c1,e1)|0,u=u+Math.imul(c1,r1)|0,u=u+Math.imul(h1,e1)|0,D=D+Math.imul(h1,r1)|0,M=M+Math.imul(s1,b1)|0,u=u+Math.imul(s1,A1)|0,u=u+Math.imul(u1,b1)|0,D=D+Math.imul(u1,A1)|0,M=M+Math.imul(w1,Ke)|0,u=u+Math.imul(w1,_1)|0,u=u+Math.imul(l1,Ke)|0,D=D+Math.imul(l1,_1)|0,M=M+Math.imul(x1,_)|0,u=u+Math.imul(x1,A)|0,u=u+Math.imul(Ze,_)|0,D=D+Math.imul(Ze,A)|0,M=M+Math.imul(le,N)|0,u=u+Math.imul(le,P)|0,u=u+Math.imul(Ee,N)|0,D=D+Math.imul(Ee,P)|0,M=M+Math.imul(ie,K)|0,u=u+Math.imul(ie,W)|0,u=u+Math.imul(de,K)|0,D=D+Math.imul(de,W)|0;var Ce=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,M=Math.imul(S1,e1),u=Math.imul(S1,r1),u=u+Math.imul(m1,e1)|0,D=Math.imul(m1,r1),M=M+Math.imul(c1,b1)|0,u=u+Math.imul(c1,A1)|0,u=u+Math.imul(h1,b1)|0,D=D+Math.imul(h1,A1)|0,M=M+Math.imul(s1,Ke)|0,u=u+Math.imul(s1,_1)|0,u=u+Math.imul(u1,Ke)|0,D=D+Math.imul(u1,_1)|0,M=M+Math.imul(w1,_)|0,u=u+Math.imul(w1,A)|0,u=u+Math.imul(l1,_)|0,D=D+Math.imul(l1,A)|0,M=M+Math.imul(x1,N)|0,u=u+Math.imul(x1,P)|0,u=u+Math.imul(Ze,N)|0,D=D+Math.imul(Ze,P)|0,M=M+Math.imul(le,K)|0,u=u+Math.imul(le,W)|0,u=u+Math.imul(Ee,K)|0,D=D+Math.imul(Ee,W)|0;var ve=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(ve>>>26)|0,ve&=67108863,M=Math.imul(S1,b1),u=Math.imul(S1,A1),u=u+Math.imul(m1,b1)|0,D=Math.imul(m1,A1),M=M+Math.imul(c1,Ke)|0,u=u+Math.imul(c1,_1)|0,u=u+Math.imul(h1,Ke)|0,D=D+Math.imul(h1,_1)|0,M=M+Math.imul(s1,_)|0,u=u+Math.imul(s1,A)|0,u=u+Math.imul(u1,_)|0,D=D+Math.imul(u1,A)|0,M=M+Math.imul(w1,N)|0,u=u+Math.imul(w1,P)|0,u=u+Math.imul(l1,N)|0,D=D+Math.imul(l1,P)|0,M=M+Math.imul(x1,K)|0,u=u+Math.imul(x1,W)|0,u=u+Math.imul(Ze,K)|0,D=D+Math.imul(Ze,W)|0;var Ae=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,M=Math.imul(S1,Ke),u=Math.imul(S1,_1),u=u+Math.imul(m1,Ke)|0,D=Math.imul(m1,_1),M=M+Math.imul(c1,_)|0,u=u+Math.imul(c1,A)|0,u=u+Math.imul(h1,_)|0,D=D+Math.imul(h1,A)|0,M=M+Math.imul(s1,N)|0,u=u+Math.imul(s1,P)|0,u=u+Math.imul(u1,N)|0,D=D+Math.imul(u1,P)|0,M=M+Math.imul(w1,K)|0,u=u+Math.imul(w1,W)|0,u=u+Math.imul(l1,K)|0,D=D+Math.imul(l1,W)|0;var _e=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(_e>>>26)|0,_e&=67108863,M=Math.imul(S1,_),u=Math.imul(S1,A),u=u+Math.imul(m1,_)|0,D=Math.imul(m1,A),M=M+Math.imul(c1,N)|0,u=u+Math.imul(c1,P)|0,u=u+Math.imul(h1,N)|0,D=D+Math.imul(h1,P)|0,M=M+Math.imul(s1,K)|0,u=u+Math.imul(s1,W)|0,u=u+Math.imul(u1,K)|0,D=D+Math.imul(u1,W)|0;var he=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(he>>>26)|0,he&=67108863,M=Math.imul(S1,N),u=Math.imul(S1,P),u=u+Math.imul(m1,N)|0,D=Math.imul(m1,P),M=M+Math.imul(c1,K)|0,u=u+Math.imul(c1,W)|0,u=u+Math.imul(h1,K)|0,D=D+Math.imul(h1,W)|0;var j=(U+M|0)+((u&8191)<<13)|0;U=(D+(u>>>13)|0)+(j>>>26)|0,j&=67108863,M=Math.imul(S1,K),u=Math.imul(S1,W),u=u+Math.imul(m1,K)|0,D=Math.imul(m1,W);var H=(U+M|0)+((u&8191)<<13)|0;return U=(D+(u>>>13)|0)+(H>>>26)|0,H&=67108863,q[0]=ge,q[1]=ue,q[2]=Fe,q[3]=me,q[4]=De,q[5]=Me,q[6]=qe,q[7]=Te,q[8]=Oe,q[9]=Ue,q[10]=Pe,q[11]=xe,q[12]=Ce,q[13]=ve,q[14]=Ae,q[15]=_e,q[16]=he,q[17]=j,q[18]=H,U!==0&&(q[19]=U,m.length++),m};Math.imul||(V=R);function L(w,p,f){f.negative=p.negative^w.negative,f.length=w.length+p.length;for(var m=0,b=0,E=0;E>>26)|0,b+=q>>>26,q&=67108863}f.words[E]=U,m=q,q=b}return m!==0?f.words[E]=m:f.length--,f.strip()}function G(w,p,f){var m=new J;return m.mulp(w,p,f)}i.prototype.mulTo=function(p,f){var m,b=this.length+p.length;return this.length===10&&p.length===10?m=V(this,p,f):b<63?m=R(this,p,f):b<1024?m=L(this,p,f):m=G(this,p,f),m};function J(w,p){this.x=w,this.y=p}J.prototype.makeRBT=function(p){for(var f=new Array(p),m=i.prototype._countBits(p)-1,b=0;b>=1;return b},J.prototype.permute=function(p,f,m,b,E,q){for(var U=0;U>>1)E++;return 1<>>13,m[2*q+1]=E&8191,E=E>>>13;for(q=2*f;q>=26,f+=b/67108864|0,f+=E>>>26,this.words[m]=E&67108863}return f!==0&&(this.words[m]=f,this.length++),this},i.prototype.muln=function(p){return this.clone().imuln(p)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(p){var f=O(p);if(f.length===0)return new i(1);for(var m=this,b=0;b=0);var f=p%26,m=(p-f)/26,b=67108863>>>26-f<<26-f,E;if(f!==0){var q=0;for(E=0;E>>26-f}q&&(this.words[E]=q,this.length++)}if(m!==0){for(E=this.length-1;E>=0;E--)this.words[E+m]=this.words[E];for(E=0;E=0);var b;f?b=(f-f%26)/26:b=0;var E=p%26,q=Math.min((p-E)/26,this.length),U=67108863^67108863>>>E<q)for(this.length-=q,u=0;u=0&&(D!==0||u>=b);u--){var se=this.words[u]|0;this.words[u]=D<<26-E|se>>>E,D=se&U}return M&&D!==0&&(M.words[M.length++]=D),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(p,f,m){return a(this.negative===0),this.iushrn(p,f,m)},i.prototype.shln=function(p){return this.clone().ishln(p)},i.prototype.ushln=function(p){return this.clone().iushln(p)},i.prototype.shrn=function(p){return this.clone().ishrn(p)},i.prototype.ushrn=function(p){return this.clone().iushrn(p)},i.prototype.testn=function(p){a(typeof p=="number"&&p>=0);var f=p%26,m=(p-f)/26,b=1<=0);var f=p%26,m=(p-f)/26;if(a(this.negative===0,"imaskn works only with positive numbers"),this.length<=m)return this;if(f!==0&&m++,this.length=Math.min(m,this.length),f!==0){var b=67108863^67108863>>>f<=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},i.prototype.isubn=function(p){if(a(typeof p=="number"),a(p<67108864),p<0)return this.iaddn(-p);if(this.negative!==0)return this.negative=0,this.iaddn(p),this.negative=1,this;if(this.words[0]-=p,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f>26)-(M/67108864|0),this.words[E+m]=q&67108863}for(;E>26,this.words[E+m]=q&67108863;if(U===0)return this.strip();for(a(U===-1),U=0,E=0;E>26,this.words[E]=q&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(p,f){var m=this.length-p.length,b=this.clone(),E=p,q=E.words[E.length-1]|0,U=this._countBits(q);m=26-U,m!==0&&(E=E.ushln(m),b.iushln(m),q=E.words[E.length-1]|0);var M=b.length-E.length,u;if(f!=="mod"){u=new i(null),u.length=M+1,u.words=new Array(u.length);for(var D=0;D=0;X--){var ne=(b.words[E.length+X]|0)*67108864+(b.words[E.length+X-1]|0);for(ne=Math.min(ne/q|0,67108863),b._ishlnsubmul(E,ne,X);b.negative!==0;)ne--,b.negative=0,b._ishlnsubmul(E,1,X),b.isZero()||(b.negative^=1);u&&(u.words[X]=ne)}return u&&u.strip(),b.strip(),f!=="div"&&m!==0&&b.iushrn(m),{div:u||null,mod:b}},i.prototype.divmod=function(p,f,m){if(a(!p.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var b,E,q;return this.negative!==0&&p.negative===0?(q=this.neg().divmod(p,f),f!=="mod"&&(b=q.div.neg()),f!=="div"&&(E=q.mod.neg(),m&&E.negative!==0&&E.iadd(p)),{div:b,mod:E}):this.negative===0&&p.negative!==0?(q=this.divmod(p.neg(),f),f!=="mod"&&(b=q.div.neg()),{div:b,mod:q.mod}):(this.negative&p.negative)!==0?(q=this.neg().divmod(p.neg(),f),f!=="div"&&(E=q.mod.neg(),m&&E.negative!==0&&E.isub(p)),{div:q.div,mod:E}):p.length>this.length||this.cmp(p)<0?{div:new i(0),mod:this}:p.length===1?f==="div"?{div:this.divn(p.words[0]),mod:null}:f==="mod"?{div:null,mod:new i(this.modn(p.words[0]))}:{div:this.divn(p.words[0]),mod:new i(this.modn(p.words[0]))}:this._wordDiv(p,f)},i.prototype.div=function(p){return this.divmod(p,"div",!1).div},i.prototype.mod=function(p){return this.divmod(p,"mod",!1).mod},i.prototype.umod=function(p){return this.divmod(p,"mod",!0).mod},i.prototype.divRound=function(p){var f=this.divmod(p);if(f.mod.isZero())return f.div;var m=f.div.negative!==0?f.mod.isub(p):f.mod,b=p.ushrn(1),E=p.andln(1),q=m.cmp(b);return q<0||E===1&&q===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},i.prototype.modn=function(p){a(p<=67108863);for(var f=(1<<26)%p,m=0,b=this.length-1;b>=0;b--)m=(f*m+(this.words[b]|0))%p;return m},i.prototype.idivn=function(p){a(p<=67108863);for(var f=0,m=this.length-1;m>=0;m--){var b=(this.words[m]|0)+f*67108864;this.words[m]=b/p|0,f=b%p}return this.strip()},i.prototype.divn=function(p){return this.clone().idivn(p)},i.prototype.egcd=function(p){a(p.negative===0),a(!p.isZero());var f=this,m=p.clone();f.negative!==0?f=f.umod(p):f=f.clone();for(var b=new i(1),E=new i(0),q=new i(0),U=new i(1),M=0;f.isEven()&&m.isEven();)f.iushrn(1),m.iushrn(1),++M;for(var u=m.clone(),D=f.clone();!f.isZero();){for(var se=0,X=1;(f.words[0]&X)===0&&se<26;++se,X<<=1);if(se>0)for(f.iushrn(se);se-- >0;)(b.isOdd()||E.isOdd())&&(b.iadd(u),E.isub(D)),b.iushrn(1),E.iushrn(1);for(var ne=0,Z=1;(m.words[0]&Z)===0&&ne<26;++ne,Z<<=1);if(ne>0)for(m.iushrn(ne);ne-- >0;)(q.isOdd()||U.isOdd())&&(q.iadd(u),U.isub(D)),q.iushrn(1),U.iushrn(1);f.cmp(m)>=0?(f.isub(m),b.isub(q),E.isub(U)):(m.isub(f),q.isub(b),U.isub(E))}return{a:q,b:U,gcd:m.iushln(M)}},i.prototype._invmp=function(p){a(p.negative===0),a(!p.isZero());var f=this,m=p.clone();f.negative!==0?f=f.umod(p):f=f.clone();for(var b=new i(1),E=new i(0),q=m.clone();f.cmpn(1)>0&&m.cmpn(1)>0;){for(var U=0,M=1;(f.words[0]&M)===0&&U<26;++U,M<<=1);if(U>0)for(f.iushrn(U);U-- >0;)b.isOdd()&&b.iadd(q),b.iushrn(1);for(var u=0,D=1;(m.words[0]&D)===0&&u<26;++u,D<<=1);if(u>0)for(m.iushrn(u);u-- >0;)E.isOdd()&&E.iadd(q),E.iushrn(1);f.cmp(m)>=0?(f.isub(m),b.isub(E)):(m.isub(f),E.isub(b))}var se;return f.cmpn(1)===0?se=b:se=E,se.cmpn(0)<0&&se.iadd(p),se},i.prototype.gcd=function(p){if(this.isZero())return p.abs();if(p.isZero())return this.abs();var f=this.clone(),m=p.clone();f.negative=0,m.negative=0;for(var b=0;f.isEven()&&m.isEven();b++)f.iushrn(1),m.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;m.isEven();)m.iushrn(1);var E=f.cmp(m);if(E<0){var q=f;f=m,m=q}else if(E===0||m.cmpn(1)===0)break;f.isub(m)}while(!0);return m.iushln(b)},i.prototype.invm=function(p){return this.egcd(p).a.umod(p)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(p){return this.words[0]&p},i.prototype.bincn=function(p){a(typeof p=="number");var f=p%26,m=(p-f)/26,b=1<>>26,U&=67108863,this.words[q]=U}return E!==0&&(this.words[q]=E,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(p){var f=p<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var m;if(this.length>1)m=1;else{f&&(p=-p),a(p<=67108863,"Number is too big");var b=this.words[0]|0;m=b===p?0:bp.length)return 1;if(this.length=0;m--){var b=this.words[m]|0,E=p.words[m]|0;if(b!==E){bE&&(f=1);break}}return f},i.prototype.gtn=function(p){return this.cmpn(p)===1},i.prototype.gt=function(p){return this.cmp(p)===1},i.prototype.gten=function(p){return this.cmpn(p)>=0},i.prototype.gte=function(p){return this.cmp(p)>=0},i.prototype.ltn=function(p){return this.cmpn(p)===-1},i.prototype.lt=function(p){return this.cmp(p)===-1},i.prototype.lten=function(p){return this.cmpn(p)<=0},i.prototype.lte=function(p){return this.cmp(p)<=0},i.prototype.eqn=function(p){return this.cmpn(p)===0},i.prototype.eq=function(p){return this.cmp(p)===0},i.red=function(p){return new be(p)},i.prototype.toRed=function(p){return a(!this.red,"Already a number in reduction context"),a(this.negative===0,"red works only with positives"),p.convertTo(this)._forceRed(p)},i.prototype.fromRed=function(){return a(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(p){return this.red=p,this},i.prototype.forceRed=function(p){return a(!this.red,"Already a number in reduction context"),this._forceRed(p)},i.prototype.redAdd=function(p){return a(this.red,"redAdd works only with red numbers"),this.red.add(this,p)},i.prototype.redIAdd=function(p){return a(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,p)},i.prototype.redSub=function(p){return a(this.red,"redSub works only with red numbers"),this.red.sub(this,p)},i.prototype.redISub=function(p){return a(this.red,"redISub works only with red numbers"),this.red.isub(this,p)},i.prototype.redShl=function(p){return a(this.red,"redShl works only with red numbers"),this.red.shl(this,p)},i.prototype.redMul=function(p){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.mul(this,p)},i.prototype.redIMul=function(p){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.imul(this,p)},i.prototype.redSqr=function(){return a(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return a(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return a(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return a(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return a(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(p){return a(this.red&&!p.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,p)};var fe={k256:null,p224:null,p192:null,p25519:null};function oe(w,p){this.name=w,this.p=new i(p,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}oe.prototype._tmp=function(){var p=new i(null);return p.words=new Array(Math.ceil(this.n/13)),p},oe.prototype.ireduce=function(p){var f=p,m;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),m=f.bitLength();while(m>this.n);var b=m0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},oe.prototype.split=function(p,f){p.iushrn(this.n,0,f)},oe.prototype.imulK=function(p){return p.imul(this.k)};function ye(){oe.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}r(ye,oe),ye.prototype.split=function(p,f){for(var m=4194303,b=Math.min(p.length,9),E=0;E>>22,q=U}q>>>=22,p.words[E-10]=q,q===0&&p.length>10?p.length-=10:p.length-=9},ye.prototype.imulK=function(p){p.words[p.length]=0,p.words[p.length+1]=0,p.length+=2;for(var f=0,m=0;m>>=26,p.words[m]=E,f=b}return f!==0&&(p.words[p.length++]=f),p},i._prime=function(p){if(fe[p])return fe[p];var f;if(p==="k256")f=new ye;else if(p==="p224")f=new Ie;else if(p==="p192")f=new we;else if(p==="p25519")f=new Ne;else throw new Error("Unknown prime "+p);return fe[p]=f,f};function be(w){if(typeof w=="string"){var p=i._prime(w);this.m=p.p,this.prime=p}else a(w.gtn(1),"modulus must be greater than 1"),this.m=w,this.prime=null}be.prototype._verify1=function(p){a(p.negative===0,"red works only with positives"),a(p.red,"red works only with red numbers")},be.prototype._verify2=function(p,f){a((p.negative|f.negative)===0,"red works only with positives"),a(p.red&&p.red===f.red,"red works only with red numbers")},be.prototype.imod=function(p){return this.prime?this.prime.ireduce(p)._forceRed(this):p.umod(this.m)._forceRed(this)},be.prototype.neg=function(p){return p.isZero()?p.clone():this.m.sub(p)._forceRed(this)},be.prototype.add=function(p,f){this._verify2(p,f);var m=p.add(f);return m.cmp(this.m)>=0&&m.isub(this.m),m._forceRed(this)},be.prototype.iadd=function(p,f){this._verify2(p,f);var m=p.iadd(f);return m.cmp(this.m)>=0&&m.isub(this.m),m},be.prototype.sub=function(p,f){this._verify2(p,f);var m=p.sub(f);return m.cmpn(0)<0&&m.iadd(this.m),m._forceRed(this)},be.prototype.isub=function(p,f){this._verify2(p,f);var m=p.isub(f);return m.cmpn(0)<0&&m.iadd(this.m),m},be.prototype.shl=function(p,f){return this._verify1(p),this.imod(p.ushln(f))},be.prototype.imul=function(p,f){return this._verify2(p,f),this.imod(p.imul(f))},be.prototype.mul=function(p,f){return this._verify2(p,f),this.imod(p.mul(f))},be.prototype.isqr=function(p){return this.imul(p,p.clone())},be.prototype.sqr=function(p){return this.mul(p,p)},be.prototype.sqrt=function(p){if(p.isZero())return p.clone();var f=this.m.andln(3);if(a(f%2===1),f===3){var m=this.m.add(new i(1)).iushrn(2);return this.pow(p,m)}for(var b=this.m.subn(1),E=0;!b.isZero()&&b.andln(1)===0;)E++,b.iushrn(1);a(!b.isZero());var q=new i(1).toRed(this),U=q.redNeg(),M=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);this.pow(u,M).cmp(U)!==0;)u.redIAdd(U);for(var D=this.pow(u,b),se=this.pow(p,b.addn(1).iushrn(1)),X=this.pow(p,b),ne=E;X.cmp(q)!==0;){for(var Z=X,g=0;Z.cmp(q)!==0;g++)Z=Z.redSqr();a(g=0;E--){for(var D=f.words[E],se=u-1;se>=0;se--){var X=D>>se&1;if(q!==b[0]&&(q=this.sqr(q)),X===0&&U===0){M=0;continue}U<<=1,U|=X,M++,!(M!==m&&(E!==0||se!==0))&&(q=this.mul(q,b[U]),M=0,U=0)}u=26}return q},be.prototype.convertTo=function(p){var f=p.umod(this.m);return f===p?f.clone():f},be.prototype.convertFrom=function(p){var f=p.clone();return f.red=null,f},i.mont=function(p){return new z(p)};function z(w){be.call(this,w),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}r(z,be),z.prototype.convertTo=function(p){return this.imod(p.ushln(this.shift))},z.prototype.convertFrom=function(p){var f=this.imod(p.mul(this.rinv));return f.red=null,f},z.prototype.imul=function(p,f){if(p.isZero()||f.isZero())return p.words[0]=0,p.length=1,p;var m=p.imul(f),b=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),E=m.isub(b).iushrn(this.shift),q=E;return E.cmp(this.m)>=0?q=E.isub(this.m):E.cmpn(0)<0&&(q=E.iadd(this.m)),q._forceRed(this)},z.prototype.mul=function(p,f){if(p.isZero()||f.isZero())return new i(0)._forceRed(this);var m=p.mul(f),b=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),E=m.isub(b).iushrn(this.shift),q=E;return E.cmp(this.m)>=0?q=E.isub(this.m):E.cmpn(0)<0&&(q=E.iadd(this.m)),q._forceRed(this)},z.prototype.invm=function(p){var f=this.imod(p._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(typeof A4>"u"||A4,Ec)});var Ar=T((iL,Nc)=>{l();Nc.exports=Cc;function Cc(t,e){if(!t)throw new Error(e||"Assertion failed")}Cc.equal=function(e,a,r){if(e!=a)throw new Error(r||"Assertion failed: "+e+" != "+a)}});var _4=T(Tc=>{"use strict";l();var B2=Tc;function CC(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var a=[];if(typeof t!="string"){for(var r=0;r>8,n=i&255;d?a.push(d,n):a.push(n)}return a}B2.toArray=CC;function Dc(t){return t.length===1?"0"+t:t}B2.zero2=Dc;function Mc(t){for(var e="",a=0;a{"use strict";l();var ta=Bc,NC=Aa(),DC=Ar(),q2=_4();ta.assert=DC;ta.toArray=q2.toArray;ta.zero2=q2.zero2;ta.toHex=q2.toHex;ta.encode=q2.encode;function MC(t,e,a){var r=new Array(Math.max(t.bitLength(),a)+1);r.fill(0);for(var i=1<(i>>1)-1?s=(i>>1)-c:s=c,d.isubn(s)):s=0,r[n]=s,d.iushrn(1)}return r}ta.getNAF=MC;function TC(t,e){var a=[[],[]];t=t.clone(),e=e.clone();for(var r=0,i=0,d;t.cmpn(-r)>0||e.cmpn(-i)>0;){var n=t.andln(3)+r&3,s=e.andln(3)+i&3;n===3&&(n=-1),s===3&&(s=-1);var c;(n&1)===0?c=0:(d=t.andln(7)+r&7,(d===3||d===5)&&s===2?c=-n:c=n),a[0].push(c);var v;(s&1)===0?v=0:(d=e.andln(7)+i&7,(d===3||d===5)&&n===2?v=-s:v=s),a[1].push(v),2*r===c+1&&(r=1-r),2*i===v+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return a}ta.getJSF=TC;function BC(t,e,a){var r="_"+e;t.prototype[e]=function(){return this[r]!==void 0?this[r]:this[r]=a.call(this)}}ta.cachedProperty=BC;function qC(t){return typeof t=="string"?ta.toArray(t,"hex"):t}ta.parseBytes=qC;function OC(t){return new NC(t,"hex","le")}ta.intFromLE=OC});var C4=T((fL,E4)=>{l();var I4;E4.exports=function(e){return I4||(I4=new _r(null)),I4.generate(e)};function _r(t){this.rand=t}E4.exports.Rand=_r;_r.prototype.generate=function(e){return this._rand(e)};_r.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var a=new Uint8Array(e),r=0;r{"use strict";l();var ei=Aa(),$0=Mt(),O2=$0.getNAF,PC=$0.getJSF,P2=$0.assert;function Ir(t,e){this.type=t,this.p=new ei(e.p,16),this.red=e.prime?ei.red(e.prime):ei.mont(this.p),this.zero=new ei(0).toRed(this.red),this.one=new ei(1).toRed(this.red),this.two=new ei(2).toRed(this.red),this.n=e.n&&new ei(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var a=this.n&&this.p.div(this.n);!a||a.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}qc.exports=Ir;Ir.prototype.point=function(){throw new Error("Not implemented")};Ir.prototype.validate=function(){throw new Error("Not implemented")};Ir.prototype._fixedNafMul=function(e,a){P2(e.precomputed);var r=e._getDoubles(),i=O2(a,1,this._bitLength),d=(1<=s;v--)c=(c<<1)+i[v];n.push(c)}for(var I=this.jpoint(null,null,null),S=this.jpoint(null,null,null),O=d;O>0;O--){for(s=0;s=0;c--){for(var v=0;c>=0&&n[c]===0;c--)v++;if(c>=0&&v++,s=s.dblp(v),c<0)break;var I=n[c];P2(I!==0),e.type==="affine"?I>0?s=s.mixedAdd(d[I-1>>1]):s=s.mixedAdd(d[-I-1>>1].neg()):I>0?s=s.add(d[I-1>>1]):s=s.add(d[-I-1>>1].neg())}return e.type==="affine"?s.toP():s};Ir.prototype._wnafMulAdd=function(e,a,r,i,d){var n=this._wnafT1,s=this._wnafT2,c=this._wnafT3,v=0,I,S,O;for(I=0;I=1;I-=2){var V=I-1,L=I;if(n[V]!==1||n[L]!==1){c[V]=O2(r[V],n[V],this._bitLength),c[L]=O2(r[L],n[L],this._bitLength),v=Math.max(c[V].length,v),v=Math.max(c[L].length,v);continue}var G=[a[V],null,null,a[L]];a[V].y.cmp(a[L].y)===0?(G[1]=a[V].add(a[L]),G[2]=a[V].toJ().mixedAdd(a[L].neg())):a[V].y.cmp(a[L].y.redNeg())===0?(G[1]=a[V].toJ().mixedAdd(a[L]),G[2]=a[V].add(a[L].neg())):(G[1]=a[V].toJ().mixedAdd(a[L]),G[2]=a[V].toJ().mixedAdd(a[L].neg()));var J=[-3,-1,-5,-7,0,7,5,1,3],fe=PC(r[V],r[L]);for(v=Math.max(fe[0].length,v),c[V]=new Array(v),c[L]=new Array(v),S=0;S=0;I--){for(var Ne=0;I>=0;){var be=!0;for(S=0;S=0&&Ne++,Ie=Ie.dblp(Ne),I<0)break;for(S=0;S0?O=s[S][z-1>>1]:z<0&&(O=s[S][-z-1>>1].neg()),O.type==="affine"?Ie=Ie.mixedAdd(O):Ie=Ie.add(O))}}for(I=0;I=Math.ceil((e.bitLength()+1)/a.step):!1};Ft.prototype._getDoubles=function(e,a){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,d=0;d{l();typeof Object.create=="function"?N4.exports=function(e,a){a&&(e.super_=a,e.prototype=Object.create(a.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:N4.exports=function(e,a){if(a){e.super_=a;var r=function(){};r.prototype=a.prototype,e.prototype=new r,e.prototype.constructor=e}}});var Y0=T((vL,M4)=>{l();try{if(D4=require("util"),typeof D4.inherits!="function")throw"";M4.exports=D4.inherits}catch{M4.exports=Oc()}var D4});var Uc=T((gL,Pc)=>{"use strict";l();var UC=Mt(),F1=Aa(),T4=Y0(),Ei=G0(),VC=UC.assert;function Lt(t){Ei.call(this,"short",t),this.a=new F1(t.a,16).toRed(this.red),this.b=new F1(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}T4(Lt,Ei);Pc.exports=Lt;Lt.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var a,r;if(e.beta)a=new F1(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);a=i[0].cmp(i[1])<0?i[0]:i[1],a=a.toRed(this.red)}if(e.lambda)r=new F1(e.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(a))===0?r=d[0]:(r=d[1],VC(this.g.mul(r).x.cmp(this.g.x.redMul(a))===0))}var n;return e.basis?n=e.basis.map(function(s){return{a:new F1(s.a,16),b:new F1(s.b,16)}}):n=this._getEndoBasis(r),{beta:a,lambda:r,basis:n}}};Lt.prototype._getEndoRoots=function(e){var a=e===this.p?this.red:F1.mont(e),r=new F1(2).toRed(a).redInvm(),i=r.redNeg(),d=new F1(3).toRed(a).redNeg().redSqrt().redMul(r),n=i.redAdd(d).fromRed(),s=i.redSub(d).fromRed();return[n,s]};Lt.prototype._getEndoBasis=function(e){for(var a=this.n.ushrn(Math.floor(this.n.bitLength()/2)),r=e,i=this.n.clone(),d=new F1(1),n=new F1(0),s=new F1(0),c=new F1(1),v,I,S,O,R,V,L,G=0,J,fe;r.cmpn(0)!==0;){var oe=i.div(r);J=i.sub(oe.mul(r)),fe=s.sub(oe.mul(d));var ye=c.sub(oe.mul(n));if(!S&&J.cmp(a)<0)v=L.neg(),I=d,S=J.neg(),O=fe;else if(S&&++G===2)break;L=J,i=r,r=J,s=d,d=fe,c=n,n=ye}R=J.neg(),V=fe;var Ie=S.sqr().add(O.sqr()),we=R.sqr().add(V.sqr());return we.cmp(Ie)>=0&&(R=v,V=I),S.negative&&(S=S.neg(),O=O.neg()),R.negative&&(R=R.neg(),V=V.neg()),[{a:S,b:O},{a:R,b:V}]};Lt.prototype._endoSplit=function(e){var a=this.endo.basis,r=a[0],i=a[1],d=i.b.mul(e).divRound(this.n),n=r.b.neg().mul(e).divRound(this.n),s=d.mul(r.a),c=n.mul(i.a),v=d.mul(r.b),I=n.mul(i.b),S=e.sub(s).sub(c),O=v.add(I).neg();return{k1:S,k2:O}};Lt.prototype.pointFromX=function(e,a){e=new F1(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(i.redSqr().redSub(r).cmp(this.zero)!==0)throw new Error("invalid point");var d=i.fromRed().isOdd();return(a&&!d||!a&&d)&&(i=i.redNeg()),this.point(e,i)};Lt.prototype.validate=function(e){if(e.inf)return!0;var a=e.x,r=e.y,i=this.a.redMul(a),d=a.redSqr().redMul(a).redIAdd(i).redIAdd(this.b);return r.redSqr().redISub(d).cmpn(0)===0};Lt.prototype._endoWnafMulAdd=function(e,a,r){for(var i=this._endoWnafT1,d=this._endoWnafT2,n=0;n":""};J1.prototype.isInfinity=function(){return this.inf};J1.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var a=this.y.redSub(e.y);a.cmpn(0)!==0&&(a=a.redMul(this.x.redSub(e.x).redInvm()));var r=a.redSqr().redISub(this.x).redISub(e.x),i=a.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)};J1.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var a=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),d=r.redAdd(r).redIAdd(r).redIAdd(a).redMul(i),n=d.redSqr().redISub(this.x.redAdd(this.x)),s=d.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,s)};J1.prototype.getX=function(){return this.x.fromRed()};J1.prototype.getY=function(){return this.y.fromRed()};J1.prototype.mul=function(e){return e=new F1(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};J1.prototype.mulAdd=function(e,a,r){var i=[this,a],d=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,d):this.curve._wnafMulAdd(1,i,d,2)};J1.prototype.jmulAdd=function(e,a,r){var i=[this,a],d=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,d,!0):this.curve._wnafMulAdd(1,i,d,2,!0)};J1.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};J1.prototype.neg=function(e){if(this.inf)return this;var a=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(d){return d.neg()};a.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return a};J1.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function rt(t,e,a,r){Ei.BasePoint.call(this,t,"jacobian"),e===null&&a===null&&r===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new F1(0)):(this.x=new F1(e,16),this.y=new F1(a,16),this.z=new F1(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}T4(rt,Ei.BasePoint);Lt.prototype.jpoint=function(e,a,r){return new rt(this,e,a,r)};rt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),a=e.redSqr(),r=this.x.redMul(a),i=this.y.redMul(a).redMul(e);return this.curve.point(r,i)};rt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};rt.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var a=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(a),d=e.x.redMul(r),n=this.y.redMul(a.redMul(e.z)),s=e.y.redMul(r.redMul(this.z)),c=i.redSub(d),v=n.redSub(s);if(c.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var I=c.redSqr(),S=I.redMul(c),O=i.redMul(I),R=v.redSqr().redIAdd(S).redISub(O).redISub(O),V=v.redMul(O.redISub(R)).redISub(n.redMul(S)),L=this.z.redMul(e.z).redMul(c);return this.curve.jpoint(R,V,L)};rt.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var a=this.z.redSqr(),r=this.x,i=e.x.redMul(a),d=this.y,n=e.y.redMul(a).redMul(this.z),s=r.redSub(i),c=d.redSub(n);if(s.cmpn(0)===0)return c.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=s.redSqr(),I=v.redMul(s),S=r.redMul(v),O=c.redSqr().redIAdd(I).redISub(S).redISub(S),R=c.redMul(S.redISub(O)).redISub(d.redMul(I)),V=this.z.redMul(s);return this.curve.jpoint(O,R,V)};rt.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var a;if(this.curve.zeroA||this.curve.threeA){var r=this;for(a=0;a=0)return!1;if(r.redIAdd(d),this.x.cmp(r)===0)return!0}};rt.prototype.inspect=function(){return this.isInfinity()?"":""};rt.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var Fc=T((xL,Rc)=>{"use strict";l();var Ci=Aa(),Vc=Y0(),U2=G0(),RC=Mt();function Ni(t){U2.call(this,"mont",t),this.a=new Ci(t.a,16).toRed(this.red),this.b=new Ci(t.b,16).toRed(this.red),this.i4=new Ci(4).toRed(this.red).redInvm(),this.two=new Ci(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Vc(Ni,U2);Rc.exports=Ni;Ni.prototype.validate=function(e){var a=e.normalize().x,r=a.redSqr(),i=r.redMul(a).redAdd(r.redMul(this.a)).redAdd(a),d=i.redSqrt();return d.redSqr().cmp(i)===0};function X1(t,e,a){U2.BasePoint.call(this,t,"projective"),e===null&&a===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Ci(e,16),this.z=new Ci(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Vc(X1,U2.BasePoint);Ni.prototype.decodePoint=function(e,a){return this.point(RC.toArray(e,a),1)};Ni.prototype.point=function(e,a){return new X1(this,e,a)};Ni.prototype.pointFromJSON=function(e){return X1.fromJSON(this,e)};X1.prototype.precompute=function(){};X1.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};X1.fromJSON=function(e,a){return new X1(e,a[0],a[1]||e.one)};X1.prototype.inspect=function(){return this.isInfinity()?"":""};X1.prototype.isInfinity=function(){return this.z.cmpn(0)===0};X1.prototype.dbl=function(){var e=this.x.redAdd(this.z),a=e.redSqr(),r=this.x.redSub(this.z),i=r.redSqr(),d=a.redSub(i),n=a.redMul(i),s=d.redMul(i.redAdd(this.curve.a24.redMul(d)));return this.curve.point(n,s)};X1.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.diffAdd=function(e,a){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),d=e.x.redAdd(e.z),n=e.x.redSub(e.z),s=n.redMul(r),c=d.redMul(i),v=a.z.redMul(s.redAdd(c).redSqr()),I=a.x.redMul(s.redISub(c).redSqr());return this.curve.point(v,I)};X1.prototype.mul=function(e){for(var a=e.clone(),r=this,i=this.curve.point(null,null),d=this,n=[];a.cmpn(0)!==0;a.iushrn(1))n.push(a.andln(1));for(var s=n.length-1;s>=0;s--)n[s]===0?(r=r.diffAdd(i,d),i=i.dbl()):(i=r.diffAdd(i,d),r=r.dbl());return i};X1.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};X1.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};X1.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};X1.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var kc=T((AL,Qc)=>{"use strict";l();var FC=Mt(),Ya=Aa(),Lc=Y0(),V2=G0(),LC=FC.assert;function _a(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,V2.call(this,"edwards",t),this.a=new Ya(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Ya(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Ya(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),LC(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Lc(_a,V2);Qc.exports=_a;_a.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};_a.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};_a.prototype.jpoint=function(e,a,r,i){return this.point(e,a,r,i)};_a.prototype.pointFromX=function(e,a){e=new Ya(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),d=this.one.redSub(this.c2.redMul(this.d).redMul(r)),n=i.redMul(d.redInvm()),s=n.redSqrt();if(s.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var c=s.fromRed().isOdd();return(a&&!c||!a&&c)&&(s=s.redNeg()),this.point(e,s)};_a.prototype.pointFromY=function(e,a){e=new Ya(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),d=r.redMul(this.d).redMul(this.c2).redSub(this.a),n=i.redMul(d.redInvm());if(n.cmp(this.zero)===0){if(a)throw new Error("invalid point");return this.point(this.zero,e)}var s=n.redSqrt();if(s.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");return s.fromRed().isOdd()!==a&&(s=s.redNeg()),this.point(s,e)};_a.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var a=e.x.redSqr(),r=e.y.redSqr(),i=a.redMul(this.a).redAdd(r),d=this.c2.redMul(this.one.redAdd(this.d.redMul(a).redMul(r)));return i.cmp(d)===0};function M1(t,e,a,r,i){V2.BasePoint.call(this,t,"projective"),e===null&&a===null&&r===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Ya(e,16),this.y=new Ya(a,16),this.z=r?new Ya(r,16):this.curve.one,this.t=i&&new Ya(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Lc(M1,V2.BasePoint);_a.prototype.pointFromJSON=function(e){return M1.fromJSON(this,e)};_a.prototype.point=function(e,a,r,i){return new M1(this,e,a,r,i)};M1.fromJSON=function(e,a){return new M1(e,a[0],a[1],a[2])};M1.prototype.inspect=function(){return this.isInfinity()?"":""};M1.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};M1.prototype._extDbl=function(){var e=this.x.redSqr(),a=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),d=this.x.redAdd(this.y).redSqr().redISub(e).redISub(a),n=i.redAdd(a),s=n.redSub(r),c=i.redSub(a),v=d.redMul(s),I=n.redMul(c),S=d.redMul(c),O=s.redMul(n);return this.curve.point(v,I,O,S)};M1.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),r=this.y.redSqr(),i,d,n,s,c,v;if(this.curve.twisted){s=this.curve._mulA(a);var I=s.redAdd(r);this.zOne?(i=e.redSub(a).redSub(r).redMul(I.redSub(this.curve.two)),d=I.redMul(s.redSub(r)),n=I.redSqr().redSub(I).redSub(I)):(c=this.z.redSqr(),v=I.redSub(c).redISub(c),i=e.redSub(a).redISub(r).redMul(v),d=I.redMul(s.redSub(r)),n=I.redMul(v))}else s=a.redAdd(r),c=this.curve._mulC(this.z).redSqr(),v=s.redSub(c).redSub(c),i=this.curve._mulC(e.redISub(s)).redMul(v),d=this.curve._mulC(s).redMul(a.redISub(r)),n=s.redMul(v);return this.curve.point(i,d,n)};M1.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};M1.prototype._extAdd=function(e){var a=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),d=this.z.redMul(e.z.redAdd(e.z)),n=r.redSub(a),s=d.redSub(i),c=d.redAdd(i),v=r.redAdd(a),I=n.redMul(s),S=c.redMul(v),O=n.redMul(v),R=s.redMul(c);return this.curve.point(I,S,R,O)};M1.prototype._projAdd=function(e){var a=this.z.redMul(e.z),r=a.redSqr(),i=this.x.redMul(e.x),d=this.y.redMul(e.y),n=this.curve.d.redMul(i).redMul(d),s=r.redSub(n),c=r.redAdd(n),v=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(d),I=a.redMul(s).redMul(v),S,O;return this.curve.twisted?(S=a.redMul(c).redMul(d.redSub(this.curve._mulA(i))),O=s.redMul(c)):(S=a.redMul(c).redMul(d.redSub(i)),O=this.curve._mulC(s).redMul(c)),this.curve.point(I,S,O)};M1.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};M1.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};M1.prototype.mulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!1)};M1.prototype.jmulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!0)};M1.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};M1.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};M1.prototype.getX=function(){return this.normalize(),this.x.fromRed()};M1.prototype.getY=function(){return this.normalize(),this.y.fromRed()};M1.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};M1.prototype.eqXToP=function(e){var a=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(a)===0)return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(a.redIAdd(i),this.x.cmp(a)===0)return!0}};M1.prototype.toP=M1.prototype.normalize;M1.prototype.mixedAdd=M1.prototype.add});var B4=T(jc=>{"use strict";l();var R2=jc;R2.base=G0();R2.short=Uc();R2.mont=Fc();R2.edwards=kc()});var aa=T(D1=>{"use strict";l();var QC=Ar(),kC=Y0();D1.inherits=kC;function jC(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function HC(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var a=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),i=0;i>6|192,a[r++]=d&63|128):jC(t,i)?(d=65536+((d&1023)<<10)+(t.charCodeAt(++i)&1023),a[r++]=d>>18|240,a[r++]=d>>12&63|128,a[r++]=d>>6&63|128,a[r++]=d&63|128):(a[r++]=d>>12|224,a[r++]=d>>6&63|128,a[r++]=d&63|128)}else for(i=0;i>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}D1.htonl=Hc;function zC(t,e){for(var a="",r=0;r>>0}return d}D1.join32=$C;function GC(t,e){for(var a=new Array(t.length*4),r=0,i=0;r>>24,a[i+1]=d>>>16&255,a[i+2]=d>>>8&255,a[i+3]=d&255):(a[i+3]=d>>>24,a[i+2]=d>>>16&255,a[i+1]=d>>>8&255,a[i]=d&255)}return a}D1.split32=GC;function YC(t,e){return t>>>e|t<<32-e}D1.rotr32=YC;function WC(t,e){return t<>>32-e}D1.rotl32=WC;function JC(t,e){return t+e>>>0}D1.sum32=JC;function XC(t,e,a){return t+e+a>>>0}D1.sum32_3=XC;function ZC(t,e,a,r){return t+e+a+r>>>0}D1.sum32_4=ZC;function eN(t,e,a,r,i){return t+e+a+r+i>>>0}D1.sum32_5=eN;function tN(t,e,a,r){var i=t[e],d=t[e+1],n=r+d>>>0,s=(n>>0,t[e+1]=n}D1.sum64=tN;function aN(t,e,a,r){var i=e+r>>>0,d=(i>>0}D1.sum64_hi=aN;function rN(t,e,a,r){var i=e+r;return i>>>0}D1.sum64_lo=rN;function iN(t,e,a,r,i,d,n,s){var c=0,v=e;v=v+r>>>0,c+=v>>0,c+=v>>0,c+=v>>0}D1.sum64_4_hi=iN;function dN(t,e,a,r,i,d,n,s){var c=e+r+d+s;return c>>>0}D1.sum64_4_lo=dN;function pN(t,e,a,r,i,d,n,s,c,v){var I=0,S=e;S=S+r>>>0,I+=S>>0,I+=S>>0,I+=S>>0,I+=S>>0}D1.sum64_5_hi=pN;function nN(t,e,a,r,i,d,n,s,c,v){var I=e+r+d+s+v;return I>>>0}D1.sum64_5_lo=nN;function sN(t,e,a){var r=e<<32-a|t>>>a;return r>>>0}D1.rotr64_hi=sN;function oN(t,e,a){var r=t<<32-a|e>>>a;return r>>>0}D1.rotr64_lo=oN;function fN(t,e,a){return t>>>a}D1.shr64_hi=fN;function lN(t,e,a){var r=t<<32-a|e>>>a;return r>>>0}D1.shr64_lo=lN});var Di=T(Gc=>{"use strict";l();var $c=aa(),uN=Ar();function F2(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}Gc.BlockHash=F2;F2.prototype.update=function(e,a){if(e=$c.toArray(e,a),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var r=e.length%this._delta8;this.pending=e.slice(e.length-r,e.length),this.pending.length===0&&(this.pending=null),e=$c.join32(e,0,e.length-r,this.endian);for(var i=0;i>>24&255,i[d++]=e>>>16&255,i[d++]=e>>>8&255,i[d++]=e&255}else for(i[d++]=e&255,i[d++]=e>>>8&255,i[d++]=e>>>16&255,i[d++]=e>>>24&255,i[d++]=0,i[d++]=0,i[d++]=0,i[d++]=0,n=8;n{"use strict";l();var cN=aa(),Ia=cN.rotr32;function hN(t,e,a,r){if(t===0)return Yc(e,a,r);if(t===1||t===3)return Jc(e,a,r);if(t===2)return Wc(e,a,r)}Wa.ft_1=hN;function Yc(t,e,a){return t&e^~t&a}Wa.ch32=Yc;function Wc(t,e,a){return t&e^t&a^e&a}Wa.maj32=Wc;function Jc(t,e,a){return t^e^a}Wa.p32=Jc;function mN(t){return Ia(t,2)^Ia(t,13)^Ia(t,22)}Wa.s0_256=mN;function vN(t){return Ia(t,6)^Ia(t,11)^Ia(t,25)}Wa.s1_256=vN;function bN(t){return Ia(t,7)^Ia(t,18)^t>>>3}Wa.g0_256=bN;function gN(t){return Ia(t,17)^Ia(t,19)^t>>>10}Wa.g1_256=gN});var eh=T((BL,Zc)=>{"use strict";l();var Mi=aa(),yN=Di(),xN=q4(),O4=Mi.rotl32,W0=Mi.sum32,wN=Mi.sum32_5,AN=xN.ft_1,Xc=yN.BlockHash,_N=[1518500249,1859775393,2400959708,3395469782];function Sa(){if(!(this instanceof Sa))return new Sa;Xc.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Mi.inherits(Sa,Xc);Zc.exports=Sa;Sa.blockSize=512;Sa.outSize=160;Sa.hmacStrength=80;Sa.padLength=64;Sa.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i{"use strict";l();var Ti=aa(),IN=Di(),Bi=q4(),SN=Ar(),ra=Ti.sum32,EN=Ti.sum32_4,CN=Ti.sum32_5,NN=Bi.ch32,DN=Bi.maj32,MN=Bi.s0_256,TN=Bi.s1_256,BN=Bi.g0_256,qN=Bi.g1_256,th=IN.BlockHash,ON=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Ea(){if(!(this instanceof Ea))return new Ea;th.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=ON,this.W=new Array(64)}Ti.inherits(Ea,th);ah.exports=Ea;Ea.blockSize=512;Ea.outSize=256;Ea.hmacStrength=192;Ea.padLength=64;Ea.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i{"use strict";l();var U4=aa(),rh=P4();function Ja(){if(!(this instanceof Ja))return new Ja;rh.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}U4.inherits(Ja,rh);ih.exports=Ja;Ja.blockSize=512;Ja.outSize=224;Ja.hmacStrength=192;Ja.padLength=64;Ja.prototype._digest=function(e){return e==="hex"?U4.toHex32(this.h.slice(0,7),"big"):U4.split32(this.h.slice(0,7),"big")}});var F4=T((RL,oh)=>{"use strict";l();var wt=aa(),PN=Di(),UN=Ar(),Ca=wt.rotr64_hi,Na=wt.rotr64_lo,ph=wt.shr64_hi,nh=wt.shr64_lo,Sr=wt.sum64,V4=wt.sum64_hi,R4=wt.sum64_lo,VN=wt.sum64_4_hi,RN=wt.sum64_4_lo,FN=wt.sum64_5_hi,LN=wt.sum64_5_lo,sh=PN.BlockHash,QN=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function ia(){if(!(this instanceof ia))return new ia;sh.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=QN,this.W=new Array(160)}wt.inherits(ia,sh);oh.exports=ia;ia.blockSize=1024;ia.outSize=512;ia.hmacStrength=192;ia.padLength=128;ia.prototype._prepareBlock=function(e,a){for(var r=this.W,i=0;i<32;i++)r[i]=e[a+i];for(;i{"use strict";l();var L4=aa(),fh=F4();function Xa(){if(!(this instanceof Xa))return new Xa;fh.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}L4.inherits(Xa,fh);lh.exports=Xa;Xa.blockSize=1024;Xa.outSize=384;Xa.hmacStrength=192;Xa.padLength=128;Xa.prototype._digest=function(e){return e==="hex"?L4.toHex32(this.h.slice(0,12),"big"):L4.split32(this.h.slice(0,12),"big")}});var ch=T(qi=>{"use strict";l();qi.sha1=eh();qi.sha224=dh();qi.sha256=P4();qi.sha384=uh();qi.sha512=F4()});var yh=T(gh=>{"use strict";l();var ti=aa(),eD=Di(),L2=ti.rotl32,hh=ti.sum32,J0=ti.sum32_3,mh=ti.sum32_4,bh=eD.BlockHash;function Da(){if(!(this instanceof Da))return new Da;bh.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}ti.inherits(Da,bh);gh.ripemd160=Da;Da.blockSize=512;Da.outSize=160;Da.hmacStrength=192;Da.padLength=64;Da.prototype._update=function(e,a){for(var r=this.h[0],i=this.h[1],d=this.h[2],n=this.h[3],s=this.h[4],c=r,v=i,I=d,S=n,O=s,R=0;R<80;R++){var V=hh(L2(mh(r,vh(R,i,d,n),e[rD[R]+a],tD(R)),dD[R]),s);r=s,s=n,n=L2(d,10),d=i,i=V,V=hh(L2(mh(c,vh(79-R,v,I,S),e[iD[R]+a],aD(R)),pD[R]),O),c=O,O=S,S=L2(I,10),I=v,v=V}V=J0(this.h[1],d,S),this.h[1]=J0(this.h[2],n,O),this.h[2]=J0(this.h[3],s,c),this.h[3]=J0(this.h[4],r,v),this.h[4]=J0(this.h[0],i,I),this.h[0]=V};Da.prototype._digest=function(e){return e==="hex"?ti.toHex32(this.h,"little"):ti.split32(this.h,"little")};function vh(t,e,a,r){return t<=15?e^a^r:t<=31?e&a|~e&r:t<=47?(e|~a)^r:t<=63?e&r|a&~r:e^(a|~r)}function tD(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function aD(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var rD=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],iD=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],dD=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],pD=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var wh=T((zL,xh)=>{"use strict";l();var nD=aa(),sD=Ar();function Oi(t,e,a){if(!(this instanceof Oi))return new Oi(t,e,a);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(nD.toArray(e,a))}xh.exports=Oi;Oi.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),sD(e.length<=this.blockSize);for(var a=e.length;a{l();var it=Ah;it.utils=aa();it.common=Di();it.sha=ch();it.ripemd=yh();it.hmac=wh();it.sha1=it.sha.sha1;it.sha256=it.sha.sha256;it.sha224=it.sha.sha224;it.sha384=it.sha.sha384;it.sha512=it.sha.sha512;it.ripemd160=it.ripemd.ripemd160});var Ih=T((WL,_h)=>{l();_h.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var k2=T(Ch=>{"use strict";l();var k4=Ch,Er=Q2(),Q4=B4(),oD=Mt(),Sh=oD.assert;function Eh(t){t.type==="short"?this.curve=new Q4.short(t):t.type==="edwards"?this.curve=new Q4.edwards(t):this.curve=new Q4.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,Sh(this.g.validate(),"Invalid curve"),Sh(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}k4.PresetCurve=Eh;function Cr(t,e){Object.defineProperty(k4,t,{configurable:!0,enumerable:!0,get:function(){var a=new Eh(e);return Object.defineProperty(k4,t,{configurable:!0,enumerable:!0,value:a}),a}})}Cr("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:Er.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});Cr("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:Er.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});Cr("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:Er.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});Cr("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:Er.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});Cr("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:Er.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});Cr("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Er.sha256,gRed:!1,g:["9"]});Cr("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Er.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var j4;try{j4=Ih()}catch{j4=void 0}Cr("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:Er.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",j4]})});var Mh=T((eQ,Dh)=>{"use strict";l();var fD=Q2(),ai=_4(),Nh=Ar();function Nr(t){if(!(this instanceof Nr))return new Nr(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=ai.toArray(t.entropy,t.entropyEnc||"hex"),a=ai.toArray(t.nonce,t.nonceEnc||"hex"),r=ai.toArray(t.pers,t.persEnc||"hex");Nh(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,a,r)}Dh.exports=Nr;Nr.prototype._init=function(e,a,r){var i=e.concat(a).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var d=0;d=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1};Nr.prototype.generate=function(e,a,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof a!="string"&&(i=r,r=a,a=null),r&&(r=ai.toArray(r,i||"hex"),this._update(r));for(var d=[];d.length{"use strict";l();var lD=Aa(),uD=Mt(),H4=uD.assert;function ft(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}Th.exports=ft;ft.fromPublic=function(e,a,r){return a instanceof ft?a:new ft(e,{pub:a,pubEnc:r})};ft.fromPrivate=function(e,a,r){return a instanceof ft?a:new ft(e,{priv:a,privEnc:r})};ft.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};ft.prototype.getPublic=function(e,a){return typeof e=="string"&&(a=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),a?this.pub.encode(a,e):this.pub};ft.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};ft.prototype._importPrivate=function(e,a){this.priv=new lD(e,a||16),this.priv=this.priv.umod(this.ec.curve.n)};ft.prototype._importPublic=function(e,a){if(e.x||e.y){this.ec.curve.type==="mont"?H4(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&H4(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,a)};ft.prototype.derive=function(e){return e.validate()||H4(e.validate(),"public point not validated"),e.mul(this.priv).getX()};ft.prototype.sign=function(e,a,r){return this.ec.sign(e,this,a,r)};ft.prototype.verify=function(e,a){return this.ec.verify(e,a,this)};ft.prototype.inspect=function(){return""}});var Ph=T((iQ,Oh)=>{"use strict";l();var j2=Aa(),$4=Mt(),cD=$4.assert;function H2(t,e){if(t instanceof H2)return t;this._importDER(t,e)||(cD(t.r&&t.s,"Signature without r or s"),this.r=new j2(t.r,16),this.s=new j2(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}Oh.exports=H2;function hD(){this.place=0}function K4(t,e){var a=t[e.place++];if(!(a&128))return a;var r=a&15;if(r===0||r>4)return!1;for(var i=0,d=0,n=e.place;d>>=0;return i<=127?!1:(e.place=n,i)}function qh(t){for(var e=0,a=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(a|128);--a;)t.push(e>>>(a<<3)&255);t.push(e)}H2.prototype.toDER=function(e){var a=this.r.toArray(),r=this.s.toArray();for(a[0]&128&&(a=[0].concat(a)),r[0]&128&&(r=[0].concat(r)),a=qh(a),r=qh(r);!r[0]&&!(r[1]&128);)r=r.slice(1);var i=[2];z4(i,a.length),i=i.concat(a),i.push(2),z4(i,r.length);var d=i.concat(r),n=[48];return z4(n,d.length),n=n.concat(d),$4.encode(n,e)}});var Fh=T((pQ,Rh)=>{"use strict";l();var ri=Aa(),Uh=Mh(),mD=Mt(),G4=k2(),vD=C4(),Vh=mD.assert,Y4=Bh(),K2=Ph();function Qt(t){if(!(this instanceof Qt))return new Qt(t);typeof t=="string"&&(Vh(Object.prototype.hasOwnProperty.call(G4,t),"Unknown curve "+t),t=G4[t]),t instanceof G4.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}Rh.exports=Qt;Qt.prototype.keyPair=function(e){return new Y4(this,e)};Qt.prototype.keyFromPrivate=function(e,a){return Y4.fromPrivate(this,e,a)};Qt.prototype.keyFromPublic=function(e,a){return Y4.fromPublic(this,e,a)};Qt.prototype.genKeyPair=function(e){e||(e={});for(var a=new Uh({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||vD(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),i=this.n.sub(new ri(2));;){var d=new ri(a.generate(r));if(!(d.cmp(i)>0))return d.iaddn(1),this.keyFromPrivate(d)}};Qt.prototype._truncateToN=function(e,a){var r=e.byteLength()*8-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!a&&e.cmp(this.n)>=0?e.sub(this.n):e};Qt.prototype.sign=function(e,a,r,i){typeof r=="object"&&(i=r,r=null),i||(i={}),a=this.keyFromPrivate(a,r),e=this._truncateToN(new ri(e,16));for(var d=this.n.byteLength(),n=a.getPrivate().toArray("be",d),s=e.toArray("be",d),c=new Uh({hash:this.hash,entropy:n,nonce:s,pers:i.pers,persEnc:i.persEnc||"utf8"}),v=this.n.sub(new ri(1)),I=0;;I++){var S=i.k?i.k(I):new ri(c.generate(this.n.byteLength()));if(S=this._truncateToN(S,!0),!(S.cmpn(1)<=0||S.cmp(v)>=0)){var O=this.g.mul(S);if(!O.isInfinity()){var R=O.getX(),V=R.umod(this.n);if(V.cmpn(0)!==0){var L=S.invm(this.n).mul(V.mul(a.getPrivate()).iadd(e));if(L=L.umod(this.n),L.cmpn(0)!==0){var G=(O.getY().isOdd()?1:0)|(R.cmp(V)!==0?2:0);return i.canonical&&L.cmp(this.nh)>0&&(L=this.n.sub(L),G^=1),new K2({r:V,s:L,recoveryParam:G})}}}}}};Qt.prototype.verify=function(e,a,r,i){e=this._truncateToN(new ri(e,16)),r=this.keyFromPublic(r,i),a=new K2(a,"hex");var d=a.r,n=a.s;if(d.cmpn(1)<0||d.cmp(this.n)>=0||n.cmpn(1)<0||n.cmp(this.n)>=0)return!1;var s=n.invm(this.n),c=s.mul(e).umod(this.n),v=s.mul(d).umod(this.n),I;return this.curve._maxwellTrick?(I=this.g.jmulAdd(c,r.getPublic(),v),I.isInfinity()?!1:I.eqXToP(d)):(I=this.g.mulAdd(c,r.getPublic(),v),I.isInfinity()?!1:I.getX().umod(this.n).cmp(d)===0)};Qt.prototype.recoverPubKey=function(t,e,a,r){Vh((3&a)===a,"The recovery param is more than two bits"),e=new K2(e,r);var i=this.n,d=new ri(t),n=e.r,s=e.s,c=a&1,v=a>>1;if(n.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?n=this.curve.pointFromX(n.add(this.curve.n),c):n=this.curve.pointFromX(n,c);var I=e.r.invm(i),S=i.sub(d).mul(I).umod(i),O=s.mul(I).umod(i);return this.g.mulAdd(S,n,O)};Qt.prototype.getKeyRecoveryParam=function(t,e,a,r){if(e=new K2(e,r),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var d;try{d=this.recoverPubKey(t,e,i)}catch{continue}if(d.eq(a))return i}throw new Error("Unable to find valid recovery factor")}});var jh=T((sQ,kh)=>{"use strict";l();var X0=Mt(),Qh=X0.assert,Lh=X0.parseBytes,Pi=X0.cachedProperty;function Z1(t,e){this.eddsa=t,this._secret=Lh(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=Lh(e.pub)}Z1.fromPublic=function(e,a){return a instanceof Z1?a:new Z1(e,{pub:a})};Z1.fromSecret=function(e,a){return a instanceof Z1?a:new Z1(e,{secret:a})};Z1.prototype.secret=function(){return this._secret};Pi(Z1,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});Pi(Z1,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});Pi(Z1,"privBytes",function(){var e=this.eddsa,a=this.hash(),r=e.encodingLength-1,i=a.slice(0,e.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i});Pi(Z1,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});Pi(Z1,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});Pi(Z1,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});Z1.prototype.sign=function(e){return Qh(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};Z1.prototype.verify=function(e,a){return this.eddsa.verify(e,a,this)};Z1.prototype.getSecret=function(e){return Qh(this._secret,"KeyPair is public only"),X0.encode(this.secret(),e)};Z1.prototype.getPublic=function(e){return X0.encode(this.pubBytes(),e)};kh.exports=Z1});var Kh=T((fQ,Hh)=>{"use strict";l();var bD=Aa(),z2=Mt(),gD=z2.assert,$2=z2.cachedProperty,yD=z2.parseBytes;function ii(t,e){this.eddsa=t,typeof e!="object"&&(e=yD(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),gD(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof bD&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}$2(ii,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});$2(ii,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});$2(ii,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});$2(ii,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});ii.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};ii.prototype.toHex=function(){return z2.encode(this.toBytes(),"hex").toUpperCase()};Hh.exports=ii});var Wh=T((uQ,Yh)=>{"use strict";l();var xD=Q2(),wD=k2(),Ui=Mt(),AD=Ui.assert,$h=Ui.parseBytes,Gh=jh(),zh=Kh();function At(t){if(AD(t==="ed25519","only tested with ed25519 so far"),!(this instanceof At))return new At(t);t=wD[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=xD.sha512}Yh.exports=At;At.prototype.sign=function(e,a){e=$h(e);var r=this.keyFromSecret(a),i=this.hashInt(r.messagePrefix(),e),d=this.g.mul(i),n=this.encodePoint(d),s=this.hashInt(n,r.pubBytes(),e).mul(r.priv()),c=i.add(s).umod(this.curve.n);return this.makeSignature({R:d,S:c,Rencoded:n})};At.prototype.verify=function(e,a,r){e=$h(e),a=this.makeSignature(a);var i=this.keyFromPublic(r),d=this.hashInt(a.Rencoded(),i.pubBytes(),e),n=this.g.mul(a.S()),s=a.R().add(i.pub().mul(d));return s.eq(n)};At.prototype.hashInt=function(){for(var e=this.hash(),a=0;a{"use strict";l();var di=Jh;di.version=Sc().version;di.utils=Mt();di.rand=C4();di.curve=B4();di.curves=k2();di.ec=Fh();di.eddsa=Wh()});var Zh=T((vQ,G2)=>{l();(function(){"use strict";var t="input is invalid type",e="finalize already called",a=typeof window=="object",r=a?window:{};r.JS_SHA3_NO_WINDOW&&(a=!1);var i=!a&&typeof self=="object",d=!r.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?r=global:i&&(r=self);var n=!r.JS_SHA3_NO_COMMON_JS&&typeof G2=="object"&&G2.exports,s=typeof define=="function"&&define.amd,c=!r.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),I=[31,7936,2031616,520093696],S=[4,1024,262144,67108864],O=[1,256,65536,16777216],R=[6,1536,393216,100663296],V=[0,8,16,24],L=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],G=[224,256,384,512],J=[128,256],fe=["hex","buffer","arrayBuffer","array","digest"],oe={128:168,256:136};(r.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(g){return Object.prototype.toString.call(g)==="[object Array]"}),c&&(r.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(g){return typeof g=="object"&&g.buffer&&g.buffer.constructor===ArrayBuffer});for(var ye=function(g,Q,$){return function(k){return new X(g,Q,g).update(k)[$]()}},Ie=function(g,Q,$){return function(k,ee){return new X(g,Q,ee).update(k)[$]()}},we=function(g,Q,$){return function(k,ee,ce,ie){return b["cshake"+g].update(k,ee,ce,ie)[$]()}},Ne=function(g,Q,$){return function(k,ee,ce,ie){return b["kmac"+g].update(k,ee,ce,ie)[$]()}},be=function(g,Q,$,k){for(var ee=0;ee>5,this.byteCount=this.blockCount<<2,this.outputBlocks=$>>5,this.extraBytes=($&31)>>3;for(var k=0;k<50;++k)this.s[k]=0}X.prototype.update=function(g){if(this.finalized)throw new Error(e);var Q,$=typeof g;if($!=="string"){if($==="object"){if(g===null)throw new Error(t);if(c&&g.constructor===ArrayBuffer)g=new Uint8Array(g);else if(!Array.isArray(g)&&(!c||!ArrayBuffer.isView(g)))throw new Error(t)}else throw new Error(t);Q=!0}for(var k=this.blocks,ee=this.byteCount,ce=g.length,ie=this.blockCount,de=0,Re=this.s,le,Ee;de>2]|=g[de]<>2]|=Ee<>2]|=(192|Ee>>6)<>2]|=(128|Ee&63)<=57344?(k[le>>2]|=(224|Ee>>12)<>2]|=(128|Ee>>6&63)<>2]|=(128|Ee&63)<>2]|=(240|Ee>>18)<>2]|=(128|Ee>>12&63)<>2]|=(128|Ee>>6&63)<>2]|=(128|Ee&63)<=ee){for(this.start=le-ee,this.block=k[ie],le=0;le>8,$=g&255;$>0;)ee.unshift($),g=g>>8,$=g&255,++k;return Q?ee.push(k):ee.unshift(k),this.update(ee),ee.length},X.prototype.encodeString=function(g){var Q,$=typeof g;if($!=="string"){if($==="object"){if(g===null)throw new Error(t);if(c&&g.constructor===ArrayBuffer)g=new Uint8Array(g);else if(!Array.isArray(g)&&(!c||!ArrayBuffer.isView(g)))throw new Error(t)}else throw new Error(t);Q=!0}var k=0,ee=g.length;if(Q)k=ee;else for(var ce=0;ce=57344?k+=3:(ie=65536+((ie&1023)<<10|g.charCodeAt(++ce)&1023),k+=4)}return k+=this.encode(k*8),this.update(g),k},X.prototype.bytepad=function(g,Q){for(var $=this.encode(Q),k=0;k>2]|=this.padding[Q&3],this.lastByteIndex===this.byteCount)for(g[0]=g[$],Q=1;Q<$+1;++Q)g[Q]=0;for(g[$-1]|=2147483648,Q=0;Q<$;++Q)k[Q]^=g[Q];Z(k)}},X.prototype.toString=X.prototype.hex=function(){this.finalize();for(var g=this.blockCount,Q=this.s,$=this.outputBlocks,k=this.extraBytes,ee=0,ce=0,ie="",de;ce<$;){for(ee=0;ee>4&15]+v[de&15]+v[de>>12&15]+v[de>>8&15]+v[de>>20&15]+v[de>>16&15]+v[de>>28&15]+v[de>>24&15];ce%g===0&&(Z(Q),ee=0)}return k&&(de=Q[ee],ie+=v[de>>4&15]+v[de&15],k>1&&(ie+=v[de>>12&15]+v[de>>8&15]),k>2&&(ie+=v[de>>20&15]+v[de>>16&15])),ie},X.prototype.arrayBuffer=function(){this.finalize();var g=this.blockCount,Q=this.s,$=this.outputBlocks,k=this.extraBytes,ee=0,ce=0,ie=this.outputBits>>3,de;k?de=new ArrayBuffer($+1<<2):de=new ArrayBuffer(ie);for(var Re=new Uint32Array(de);ce<$;){for(ee=0;ee>8&255,ie[de+2]=Re>>16&255,ie[de+3]=Re>>24&255;ce%g===0&&Z(Q)}return k&&(de=ce<<2,Re=Q[ee],ie[de]=Re&255,k>1&&(ie[de+1]=Re>>8&255),k>2&&(ie[de+2]=Re>>16&255)),ie};function ne(g,Q,$){X.call(this,g,Q,$)}ne.prototype=new X,ne.prototype.finalize=function(){return this.encode(this.outputBits,!0),X.prototype.finalize.call(this)};var Z=function(g){var Q,$,k,ee,ce,ie,de,Re,le,Ee,sa,x1,Ze,Bt,w1,l1,jt,s1,u1,qt,c1,h1,oa,S1,m1,Ht,o1,d1,vt,p1,f1,_t,n1,v1,fa,E1,C1,et,e1,r1,Kt,b1,A1,Ta,Ke,_1,h,_,A,o,N,P,F,K,W,ge,ue,Fe,me,De,Me,qe,Te;for(k=0;k<48;k+=2)ee=g[0]^g[10]^g[20]^g[30]^g[40],ce=g[1]^g[11]^g[21]^g[31]^g[41],ie=g[2]^g[12]^g[22]^g[32]^g[42],de=g[3]^g[13]^g[23]^g[33]^g[43],Re=g[4]^g[14]^g[24]^g[34]^g[44],le=g[5]^g[15]^g[25]^g[35]^g[45],Ee=g[6]^g[16]^g[26]^g[36]^g[46],sa=g[7]^g[17]^g[27]^g[37]^g[47],x1=g[8]^g[18]^g[28]^g[38]^g[48],Ze=g[9]^g[19]^g[29]^g[39]^g[49],Q=x1^(ie<<1|de>>>31),$=Ze^(de<<1|ie>>>31),g[0]^=Q,g[1]^=$,g[10]^=Q,g[11]^=$,g[20]^=Q,g[21]^=$,g[30]^=Q,g[31]^=$,g[40]^=Q,g[41]^=$,Q=ee^(Re<<1|le>>>31),$=ce^(le<<1|Re>>>31),g[2]^=Q,g[3]^=$,g[12]^=Q,g[13]^=$,g[22]^=Q,g[23]^=$,g[32]^=Q,g[33]^=$,g[42]^=Q,g[43]^=$,Q=ie^(Ee<<1|sa>>>31),$=de^(sa<<1|Ee>>>31),g[4]^=Q,g[5]^=$,g[14]^=Q,g[15]^=$,g[24]^=Q,g[25]^=$,g[34]^=Q,g[35]^=$,g[44]^=Q,g[45]^=$,Q=Re^(x1<<1|Ze>>>31),$=le^(Ze<<1|x1>>>31),g[6]^=Q,g[7]^=$,g[16]^=Q,g[17]^=$,g[26]^=Q,g[27]^=$,g[36]^=Q,g[37]^=$,g[46]^=Q,g[47]^=$,Q=Ee^(ee<<1|ce>>>31),$=sa^(ce<<1|ee>>>31),g[8]^=Q,g[9]^=$,g[18]^=Q,g[19]^=$,g[28]^=Q,g[29]^=$,g[38]^=Q,g[39]^=$,g[48]^=Q,g[49]^=$,Bt=g[0],w1=g[1],_1=g[11]<<4|g[10]>>>28,h=g[10]<<4|g[11]>>>28,d1=g[20]<<3|g[21]>>>29,vt=g[21]<<3|g[20]>>>29,De=g[31]<<9|g[30]>>>23,Me=g[30]<<9|g[31]>>>23,b1=g[40]<<18|g[41]>>>14,A1=g[41]<<18|g[40]>>>14,v1=g[2]<<1|g[3]>>>31,fa=g[3]<<1|g[2]>>>31,l1=g[13]<<12|g[12]>>>20,jt=g[12]<<12|g[13]>>>20,_=g[22]<<10|g[23]>>>22,A=g[23]<<10|g[22]>>>22,p1=g[33]<<13|g[32]>>>19,f1=g[32]<<13|g[33]>>>19,qe=g[42]<<2|g[43]>>>30,Te=g[43]<<2|g[42]>>>30,K=g[5]<<30|g[4]>>>2,W=g[4]<<30|g[5]>>>2,E1=g[14]<<6|g[15]>>>26,C1=g[15]<<6|g[14]>>>26,s1=g[25]<<11|g[24]>>>21,u1=g[24]<<11|g[25]>>>21,o=g[34]<<15|g[35]>>>17,N=g[35]<<15|g[34]>>>17,_t=g[45]<<29|g[44]>>>3,n1=g[44]<<29|g[45]>>>3,S1=g[6]<<28|g[7]>>>4,m1=g[7]<<28|g[6]>>>4,ge=g[17]<<23|g[16]>>>9,ue=g[16]<<23|g[17]>>>9,et=g[26]<<25|g[27]>>>7,e1=g[27]<<25|g[26]>>>7,qt=g[36]<<21|g[37]>>>11,c1=g[37]<<21|g[36]>>>11,P=g[47]<<24|g[46]>>>8,F=g[46]<<24|g[47]>>>8,Ta=g[8]<<27|g[9]>>>5,Ke=g[9]<<27|g[8]>>>5,Ht=g[18]<<20|g[19]>>>12,o1=g[19]<<20|g[18]>>>12,Fe=g[29]<<7|g[28]>>>25,me=g[28]<<7|g[29]>>>25,r1=g[38]<<8|g[39]>>>24,Kt=g[39]<<8|g[38]>>>24,h1=g[48]<<14|g[49]>>>18,oa=g[49]<<14|g[48]>>>18,g[0]=Bt^~l1&s1,g[1]=w1^~jt&u1,g[10]=S1^~Ht&d1,g[11]=m1^~o1&vt,g[20]=v1^~E1&et,g[21]=fa^~C1&e1,g[30]=Ta^~_1&_,g[31]=Ke^~h&A,g[40]=K^~ge&Fe,g[41]=W^~ue&me,g[2]=l1^~s1&qt,g[3]=jt^~u1&c1,g[12]=Ht^~d1&p1,g[13]=o1^~vt&f1,g[22]=E1^~et&r1,g[23]=C1^~e1&Kt,g[32]=_1^~_&o,g[33]=h^~A&N,g[42]=ge^~Fe&De,g[43]=ue^~me&Me,g[4]=s1^~qt&h1,g[5]=u1^~c1&oa,g[14]=d1^~p1&_t,g[15]=vt^~f1&n1,g[24]=et^~r1&b1,g[25]=e1^~Kt&A1,g[34]=_^~o&P,g[35]=A^~N&F,g[44]=Fe^~De&qe,g[45]=me^~Me&Te,g[6]=qt^~h1&Bt,g[7]=c1^~oa&w1,g[16]=p1^~_t&S1,g[17]=f1^~n1&m1,g[26]=r1^~b1&v1,g[27]=Kt^~A1&fa,g[36]=o^~P&Ta,g[37]=N^~F&Ke,g[46]=De^~qe&K,g[47]=Me^~Te&W,g[8]=h1^~Bt&l1,g[9]=oa^~w1&jt,g[18]=_t^~S1&Ht,g[19]=n1^~m1&o1,g[28]=b1^~v1&E1,g[29]=A1^~fa&C1,g[38]=P^~Ta&_1,g[39]=F^~Ke&h,g[48]=qe^~K&ge,g[49]=Te^~W&ue,g[0]^=L[k],g[1]^=L[k+1]};if(n)G2.exports=b;else{for(q=0;q{l();tm.exports=em;var Y2=class extends Error{};Y2.prototype.name="AssertionError";function em(t,e){if(!t){var a=new Y2(e);throw Error.captureStackTrace&&Error.captureStackTrace(a,em),a}}});var rm=T((xQ,am)=>{l();function _D(t){return C.isBuffer(t)||t instanceof Uint8Array}function ID(t){return C.isEncoding(t)}function SD(t,e,a){return C.alloc(t,e,a)}function ED(t){return C.allocUnsafe(t)}function CD(t){return C.allocUnsafeSlow(t)}function ND(t,e){return C.byteLength(t,e)}function DD(t,e){return C.compare(t,e)}function MD(t,e){return C.concat(t,e)}function TD(t,e,a,r,i){return j1(t).copy(e,a,r,i)}function BD(t,e){return j1(t).equals(e)}function qD(t,e,a,r,i){return j1(t).fill(e,a,r,i)}function OD(t,e,a){return C.from(t,e,a)}function PD(t,e,a,r){return j1(t).includes(e,a,r)}function UD(t,e,a,r){return j1(t).indexOf(e,a,r)}function VD(t,e,a,r){return j1(t).lastIndexOf(e,a,r)}function RD(t){return j1(t).swap16()}function FD(t){return j1(t).swap32()}function LD(t){return j1(t).swap64()}function j1(t){return C.isBuffer(t)?t:C.from(t.buffer,t.byteOffset,t.byteLength)}function QD(t,e,a,r){return j1(t).toString(e,a,r)}function kD(t,e,a,r,i){return j1(t).write(e,a,r,i)}function jD(t,e,a){return j1(t).writeDoubleLE(e,a)}function HD(t,e,a){return j1(t).writeFloatLE(e,a)}function KD(t,e,a){return j1(t).writeUInt32LE(e,a)}function zD(t,e,a){return j1(t).writeInt32LE(e,a)}function $D(t,e){return j1(t).readDoubleLE(e)}function GD(t,e){return j1(t).readFloatLE(e)}function YD(t,e){return j1(t).readUInt32LE(e)}function WD(t,e){return j1(t).readInt32LE(e)}am.exports={isBuffer:_D,isEncoding:ID,alloc:SD,allocUnsafe:ED,allocUnsafeSlow:CD,byteLength:ND,compare:DD,concat:MD,copy:TD,equals:BD,fill:qD,from:OD,includes:PD,indexOf:UD,lastIndexOf:VD,swap16:RD,swap32:FD,swap64:LD,toBuffer:j1,toString:QD,write:kD,writeDoubleLE:jD,writeFloatLE:HD,writeUInt32LE:KD,writeInt32LE:zD,readDoubleLE:$D,readFloatLE:GD,readUInt32LE:YD,readInt32LE:WD}});var dm=T((AQ,im)=>{l();var JD=(t,e)=>function(){return e||(0,t[Object.keys(t)[0]])((e={exports:{}}).exports,e),e.exports},XD=(()=>{for(var t=new Uint8Array(128),e=0;e<64;e++)t[e<26?e+65:e<52?e+71:e<62?e-4:e*4-205]=e;return a=>{for(var r=a.length,i=new Uint8Array((r-(a[r-1]=="=")-(a[r-2]=="="))*3/4|0),d=0,n=0;d>4,i[n++]=c<<4|v>>2,i[n++]=v<<6|I}return i}})(),ZD=JD({"wasm-binary:./blake2b.wat"(t,e){e.exports=XD("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")}}),eM=ZD(),tM=WebAssembly.compile(eM);im.exports=async t=>(await WebAssembly.instantiate(await tM,t)).exports});var cm=T((EQ,Ma)=>{l();var Tt=W4(),aM=rm(),er=null,pm=typeof WebAssembly<"u"&&dm()().then(t=>{er=t}),Za=64,W2=[];Ma.exports=ht;var nm=Ma.exports.BYTES_MIN=16,sm=Ma.exports.BYTES_MAX=64,IQ=Ma.exports.BYTES=32,om=Ma.exports.KEYBYTES_MIN=16,fm=Ma.exports.KEYBYTES_MAX=64,SQ=Ma.exports.KEYBYTES=32,lm=Ma.exports.SALTBYTES=16,um=Ma.exports.PERSONALBYTES=16;function ht(t,e,a,r,i){if(!(this instanceof ht))return new ht(t,e,a,r,i);if(!er)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),i!==!0&&(Tt(t>=nm,"digestLength must be at least "+nm+", was given "+t),Tt(t<=sm,"digestLength must be at most "+sm+", was given "+t),e!=null&&(Tt(e instanceof Uint8Array,"key must be Uint8Array or Buffer"),Tt(e.length>=om,"key must be at least "+om+", was given "+e.length),Tt(e.length<=fm,"key must be at least "+fm+", was given "+e.length)),a!=null&&(Tt(a instanceof Uint8Array,"salt must be Uint8Array or Buffer"),Tt(a.length===lm,"salt must be exactly "+lm+", was given "+a.length)),r!=null&&(Tt(r instanceof Uint8Array,"personal must be Uint8Array or Buffer"),Tt(r.length===um,"personal must be exactly "+um+", was given "+r.length))),W2.length||(W2.push(Za),Za+=216),this.digestLength=t,this.finalized=!1,this.pointer=W2.pop(),this._memory=new Uint8Array(er.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=e?e.length:0,this._memory[2]=1,this._memory[3]=1,a&&this._memory.set(a,32),r&&this._memory.set(r,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),er.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),this._memory.fill(0,Za,Za+e.length),this._memory[this.pointer+200]=128)}ht.prototype._realloc=function(t){er.memory.grow(Math.max(0,Math.ceil(Math.abs(t-this._memory.length)/65536))),this._memory=new Uint8Array(er.memory.buffer)};ht.prototype.update=function(t){return Tt(this.finalized===!1,"Hash instance finalized"),Tt(t instanceof Uint8Array,"input must be Uint8Array or Buffer"),Za+t.length>this._memory.length&&this._realloc(Za+t.length),this._memory.set(t,Za),er.blake2b_update(this.pointer,Za,Za+t.length),this};ht.prototype.digest=function(t){if(Tt(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,W2.push(this.pointer),er.blake2b_final(this.pointer),!t||t==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof t=="string")return aM.toString(this._memory,t,this.pointer+128,this.pointer+128+this.digestLength);Tt(t instanceof Uint8Array&&t.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var e=0;et(),t):t(new Error("WebAssembly not supported"))};ht.prototype.ready=ht.ready;ht.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};ht.prototype.setPartialHash=function(t){this._memory.set(t,this.pointer)};function rM(){}});var Sm=T((MQ,mt)=>{l();var kt=W4(),ed=cm();function J2(t,e,a){var r=t[e]+t[a],i=t[e+1]+t[a+1];r>=4294967296&&i++,t[e]=r,t[e+1]=i}function hm(t,e,a,r){var i=t[e]+a;a<0&&(i+=4294967296);var d=t[e+1]+r;i>=4294967296&&d++,t[e]=i,t[e+1]=d}function wm(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function Dr(t,e,a,r,i,d){var n=Z0[i],s=Z0[i+1],c=Z0[d],v=Z0[d+1];J2(ke,t,e),hm(ke,t,n,s);var I=ke[r]^ke[t],S=ke[r+1]^ke[t+1];ke[r]=S,ke[r+1]=I,J2(ke,a,r),I=ke[e]^ke[a],S=ke[e+1]^ke[a+1],ke[e]=I>>>24^S<<8,ke[e+1]=S>>>24^I<<8,J2(ke,t,e),hm(ke,t,c,v),I=ke[r]^ke[t],S=ke[r+1]^ke[t+1],ke[r]=I>>>16^S<<16,ke[r+1]=S>>>16^I<<16,J2(ke,a,r),I=ke[e]^ke[a],S=ke[e+1]^ke[a+1],ke[e]=S>>>31^I<<1,ke[e+1]=I>>>31^S<<1}var Am=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),iM=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],lt=new Uint8Array(iM.map(function(t){return t*2})),ke=new Uint32Array(32),Z0=new Uint32Array(32);function _m(t,e){var a=0;for(a=0;a<16;a++)ke[a]=t.h[a],ke[a+16]=Am[a];for(ke[24]=ke[24]^t.t,ke[25]=ke[25]^t.t/4294967296,e&&(ke[28]=~ke[28],ke[29]=~ke[29]),a=0;a<32;a++)Z0[a]=wm(t.b,4*a);for(a=0;a<12;a++)Dr(0,8,16,24,lt[a*16+0],lt[a*16+1]),Dr(2,10,18,26,lt[a*16+2],lt[a*16+3]),Dr(4,12,20,28,lt[a*16+4],lt[a*16+5]),Dr(6,14,22,30,lt[a*16+6],lt[a*16+7]),Dr(0,10,20,30,lt[a*16+8],lt[a*16+9]),Dr(2,12,22,24,lt[a*16+10],lt[a*16+11]),Dr(4,14,16,26,lt[a*16+12],lt[a*16+13]),Dr(6,8,18,28,lt[a*16+14],lt[a*16+15]);for(a=0;a<16;a++)t.h[a]=t.h[a]^ke[a]^ke[a+16]}var Mr=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Vi(t,e,a,r){Mr.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=t,Mr[0]=t,e&&(Mr[1]=e.length),Mr[2]=1,Mr[3]=1,a&&Mr.set(a,32),r&&Mr.set(r,48);for(var i=0;i<16;i++)this.h[i]=Am[i]^wm(Mr,i*4);e&&(Im(this,e),this.c=128)}Vi.prototype.update=function(t){return kt(t instanceof Uint8Array,"input must be Uint8Array or Buffer"),Im(this,t),this};Vi.prototype.digest=function(t){var e=!t||t==="binary"||t==="hex"?new Uint8Array(this.outlen):t;return kt(e instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),kt(e.length>=this.outlen,"out must have at least outlen bytes of space"),dM(this,e),t==="hex"?pM(e):e};Vi.prototype.final=Vi.prototype.digest;Vi.ready=function(t){ed.ready(function(){t()})};function Im(t,e){for(var a=0;a>2]>>8*(a&3);return e}function pM(t){for(var e="",a=0;a=mm,"outlen must be at least "+mm+", was given "+e),kt(e<=vm,"outlen must be at most "+vm+", was given "+e),a!=null&&(kt(a instanceof Uint8Array,"key must be Uint8Array or Buffer"),kt(a.length>=bm,"key must be at least "+bm+", was given "+a.length),kt(a.length<=gm,"key must be at most "+gm+", was given "+a.length)),r!=null&&(kt(r instanceof Uint8Array,"salt must be Uint8Array or Buffer"),kt(r.length===ym,"salt must be exactly "+ym+", was given "+r.length)),i!=null&&(kt(i instanceof Uint8Array,"personal must be Uint8Array or Buffer"),kt(i.length===xm,"personal must be exactly "+xm+", was given "+i.length))),new sM(e,a,r,i)};mt.exports.ready=function(t){ed.ready(function(){t()})};mt.exports.WASM_SUPPORTED=ed.SUPPORTED;mt.exports.WASM_LOADED=!1;var mm=mt.exports.BYTES_MIN=16,vm=mt.exports.BYTES_MAX=64,NQ=mt.exports.BYTES=32,bm=mt.exports.KEYBYTES_MIN=16,gm=mt.exports.KEYBYTES_MAX=64,DQ=mt.exports.KEYBYTES=32,ym=mt.exports.SALTBYTES=16,xm=mt.exports.PERSONALBYTES=16;ed.ready(function(t){t||(mt.exports.WASM_LOADED=!0,mt.exports=ed)})});var Fm=T(tr=>{"use strict";l();Object.defineProperty(tr,"__esModule",{value:!0});var BQ=new Uint8Array(16),qm=new Uint8Array(32);qm[0]=9;function Se(t){var e,a=new Float64Array(16);if(t)for(e=0;e>24&255,t[e+1]=a>>16&255,t[e+2]=a>>8&255,t[e+3]=a&255,t[e+4]=r>>24&255,t[e+5]=r>>16&255,t[e+6]=r>>8&255,t[e+7]=r&255}function cM(t,e,a,r,i){var d,n=0;for(d=0;d>>8)-1}function Om(t,e,a,r){return cM(t,e,a,r,32)}function Tr(t,e){var a;for(a=0;a<16;a++)t[a]=e[a]|0}function J4(t){var e,a,r=1;for(e=0;e<16;e++)a=t[e]+r+65535,r=Math.floor(a/65536),t[e]=a-r*65536;t[0]+=r-1+37*(r-1)}function Ri(t,e,a){for(var r,i=~(a-1),d=0;d<16;d++)r=i&(t[d]^e[d]),t[d]^=r,e[d]^=r}function Li(t,e){var a,r,i,d=Se(),n=Se();for(a=0;a<16;a++)n[a]=e[a];for(J4(n),J4(n),J4(n),r=0;r<2;r++){for(d[0]=n[0]-65517,a=1;a<15;a++)d[a]=n[a]-65535-(d[a-1]>>16&1),d[a-1]&=65535;d[15]=n[15]-32767-(d[14]>>16&1),i=d[15]>>16&1,d[14]&=65535,Ri(n,d,1-i)}for(a=0;a<16;a++)t[2*a]=n[a]&255,t[2*a+1]=n[a]>>8}function Dm(t,e){var a=new Uint8Array(32),r=new Uint8Array(32);return Li(a,t),Li(r,e),Om(a,0,r,0)}function Pm(t){var e=new Uint8Array(32);return Li(e,t),e[0]&1}function as(t,e){var a;for(a=0;a<16;a++)t[a]=e[2*a]+(e[2*a+1]<<8);t[15]&=32767}function da(t,e,a){for(var r=0;r<16;r++)t[r]=e[r]+a[r]}function na(t,e,a){for(var r=0;r<16;r++)t[r]=e[r]-a[r]}function We(t,e,a){var r,i,d=0,n=0,s=0,c=0,v=0,I=0,S=0,O=0,R=0,V=0,L=0,G=0,J=0,fe=0,oe=0,ye=0,Ie=0,we=0,Ne=0,be=0,z=0,w=0,p=0,f=0,m=0,b=0,E=0,q=0,U=0,M=0,u=0,D=a[0],se=a[1],X=a[2],ne=a[3],Z=a[4],g=a[5],Q=a[6],$=a[7],k=a[8],ee=a[9],ce=a[10],ie=a[11],de=a[12],Re=a[13],le=a[14],Ee=a[15];r=e[0],d+=r*D,n+=r*se,s+=r*X,c+=r*ne,v+=r*Z,I+=r*g,S+=r*Q,O+=r*$,R+=r*k,V+=r*ee,L+=r*ce,G+=r*ie,J+=r*de,fe+=r*Re,oe+=r*le,ye+=r*Ee,r=e[1],n+=r*D,s+=r*se,c+=r*X,v+=r*ne,I+=r*Z,S+=r*g,O+=r*Q,R+=r*$,V+=r*k,L+=r*ee,G+=r*ce,J+=r*ie,fe+=r*de,oe+=r*Re,ye+=r*le,Ie+=r*Ee,r=e[2],s+=r*D,c+=r*se,v+=r*X,I+=r*ne,S+=r*Z,O+=r*g,R+=r*Q,V+=r*$,L+=r*k,G+=r*ee,J+=r*ce,fe+=r*ie,oe+=r*de,ye+=r*Re,Ie+=r*le,we+=r*Ee,r=e[3],c+=r*D,v+=r*se,I+=r*X,S+=r*ne,O+=r*Z,R+=r*g,V+=r*Q,L+=r*$,G+=r*k,J+=r*ee,fe+=r*ce,oe+=r*ie,ye+=r*de,Ie+=r*Re,we+=r*le,Ne+=r*Ee,r=e[4],v+=r*D,I+=r*se,S+=r*X,O+=r*ne,R+=r*Z,V+=r*g,L+=r*Q,G+=r*$,J+=r*k,fe+=r*ee,oe+=r*ce,ye+=r*ie,Ie+=r*de,we+=r*Re,Ne+=r*le,be+=r*Ee,r=e[5],I+=r*D,S+=r*se,O+=r*X,R+=r*ne,V+=r*Z,L+=r*g,G+=r*Q,J+=r*$,fe+=r*k,oe+=r*ee,ye+=r*ce,Ie+=r*ie,we+=r*de,Ne+=r*Re,be+=r*le,z+=r*Ee,r=e[6],S+=r*D,O+=r*se,R+=r*X,V+=r*ne,L+=r*Z,G+=r*g,J+=r*Q,fe+=r*$,oe+=r*k,ye+=r*ee,Ie+=r*ce,we+=r*ie,Ne+=r*de,be+=r*Re,z+=r*le,w+=r*Ee,r=e[7],O+=r*D,R+=r*se,V+=r*X,L+=r*ne,G+=r*Z,J+=r*g,fe+=r*Q,oe+=r*$,ye+=r*k,Ie+=r*ee,we+=r*ce,Ne+=r*ie,be+=r*de,z+=r*Re,w+=r*le,p+=r*Ee,r=e[8],R+=r*D,V+=r*se,L+=r*X,G+=r*ne,J+=r*Z,fe+=r*g,oe+=r*Q,ye+=r*$,Ie+=r*k,we+=r*ee,Ne+=r*ce,be+=r*ie,z+=r*de,w+=r*Re,p+=r*le,f+=r*Ee,r=e[9],V+=r*D,L+=r*se,G+=r*X,J+=r*ne,fe+=r*Z,oe+=r*g,ye+=r*Q,Ie+=r*$,we+=r*k,Ne+=r*ee,be+=r*ce,z+=r*ie,w+=r*de,p+=r*Re,f+=r*le,m+=r*Ee,r=e[10],L+=r*D,G+=r*se,J+=r*X,fe+=r*ne,oe+=r*Z,ye+=r*g,Ie+=r*Q,we+=r*$,Ne+=r*k,be+=r*ee,z+=r*ce,w+=r*ie,p+=r*de,f+=r*Re,m+=r*le,b+=r*Ee,r=e[11],G+=r*D,J+=r*se,fe+=r*X,oe+=r*ne,ye+=r*Z,Ie+=r*g,we+=r*Q,Ne+=r*$,be+=r*k,z+=r*ee,w+=r*ce,p+=r*ie,f+=r*de,m+=r*Re,b+=r*le,E+=r*Ee,r=e[12],J+=r*D,fe+=r*se,oe+=r*X,ye+=r*ne,Ie+=r*Z,we+=r*g,Ne+=r*Q,be+=r*$,z+=r*k,w+=r*ee,p+=r*ce,f+=r*ie,m+=r*de,b+=r*Re,E+=r*le,q+=r*Ee,r=e[13],fe+=r*D,oe+=r*se,ye+=r*X,Ie+=r*ne,we+=r*Z,Ne+=r*g,be+=r*Q,z+=r*$,w+=r*k,p+=r*ee,f+=r*ce,m+=r*ie,b+=r*de,E+=r*Re,q+=r*le,U+=r*Ee,r=e[14],oe+=r*D,ye+=r*se,Ie+=r*X,we+=r*ne,Ne+=r*Z,be+=r*g,z+=r*Q,w+=r*$,p+=r*k,f+=r*ee,m+=r*ce,b+=r*ie,E+=r*de,q+=r*Re,U+=r*le,M+=r*Ee,r=e[15],ye+=r*D,Ie+=r*se,we+=r*X,Ne+=r*ne,be+=r*Z,z+=r*g,w+=r*Q,p+=r*$,f+=r*k,m+=r*ee,b+=r*ce,E+=r*ie,q+=r*de,U+=r*Re,M+=r*le,u+=r*Ee,d+=38*Ie,n+=38*we,s+=38*Ne,c+=38*be,v+=38*z,I+=38*w,S+=38*p,O+=38*f,R+=38*m,V+=38*b,L+=38*E,G+=38*q,J+=38*U,fe+=38*M,oe+=38*u,i=1,r=d+i+65535,i=Math.floor(r/65536),d=r-i*65536,r=n+i+65535,i=Math.floor(r/65536),n=r-i*65536,r=s+i+65535,i=Math.floor(r/65536),s=r-i*65536,r=c+i+65535,i=Math.floor(r/65536),c=r-i*65536,r=v+i+65535,i=Math.floor(r/65536),v=r-i*65536,r=I+i+65535,i=Math.floor(r/65536),I=r-i*65536,r=S+i+65535,i=Math.floor(r/65536),S=r-i*65536,r=O+i+65535,i=Math.floor(r/65536),O=r-i*65536,r=R+i+65535,i=Math.floor(r/65536),R=r-i*65536,r=V+i+65535,i=Math.floor(r/65536),V=r-i*65536,r=L+i+65535,i=Math.floor(r/65536),L=r-i*65536,r=G+i+65535,i=Math.floor(r/65536),G=r-i*65536,r=J+i+65535,i=Math.floor(r/65536),J=r-i*65536,r=fe+i+65535,i=Math.floor(r/65536),fe=r-i*65536,r=oe+i+65535,i=Math.floor(r/65536),oe=r-i*65536,r=ye+i+65535,i=Math.floor(r/65536),ye=r-i*65536,d+=i-1+37*(i-1),i=1,r=d+i+65535,i=Math.floor(r/65536),d=r-i*65536,r=n+i+65535,i=Math.floor(r/65536),n=r-i*65536,r=s+i+65535,i=Math.floor(r/65536),s=r-i*65536,r=c+i+65535,i=Math.floor(r/65536),c=r-i*65536,r=v+i+65535,i=Math.floor(r/65536),v=r-i*65536,r=I+i+65535,i=Math.floor(r/65536),I=r-i*65536,r=S+i+65535,i=Math.floor(r/65536),S=r-i*65536,r=O+i+65535,i=Math.floor(r/65536),O=r-i*65536,r=R+i+65535,i=Math.floor(r/65536),R=r-i*65536,r=V+i+65535,i=Math.floor(r/65536),V=r-i*65536,r=L+i+65535,i=Math.floor(r/65536),L=r-i*65536,r=G+i+65535,i=Math.floor(r/65536),G=r-i*65536,r=J+i+65535,i=Math.floor(r/65536),J=r-i*65536,r=fe+i+65535,i=Math.floor(r/65536),fe=r-i*65536,r=oe+i+65535,i=Math.floor(r/65536),oe=r-i*65536,r=ye+i+65535,i=Math.floor(r/65536),ye=r-i*65536,d+=i-1+37*(i-1),t[0]=d,t[1]=n,t[2]=s,t[3]=c,t[4]=v,t[5]=I,t[6]=S,t[7]=O,t[8]=R,t[9]=V,t[10]=L,t[11]=G,t[12]=J,t[13]=fe,t[14]=oe,t[15]=ye}function pa(t,e){We(t,e,e)}function rs(t,e){var a=Se(),r;for(r=0;r<16;r++)a[r]=e[r];for(r=253;r>=0;r--)pa(a,a),r!==2&&r!==4&&We(a,a,e);for(r=0;r<16;r++)t[r]=a[r]}function hM(t,e){var a=Se(),r;for(r=0;r<16;r++)a[r]=e[r];for(r=250;r>=0;r--)pa(a,a),r!==1&&We(a,a,e);for(r=0;r<16;r++)t[r]=a[r]}function Um(t,e,a){var r=new Uint8Array(32),i=new Float64Array(80),d,n,s=Se(),c=Se(),v=Se(),I=Se(),S=Se(),O=Se();for(n=0;n<31;n++)r[n]=e[n];for(r[31]=e[31]&127|64,r[0]&=248,as(i,a),n=0;n<16;n++)c[n]=i[n],I[n]=s[n]=v[n]=0;for(s[0]=I[0]=1,n=254;n>=0;--n)d=r[n>>>3]>>>(n&7)&1,Ri(s,c,d),Ri(v,I,d),da(S,s,v),na(s,s,v),da(v,c,I),na(c,c,I),pa(I,S),pa(O,s),We(s,v,s),We(v,c,S),da(S,s,v),na(s,s,v),pa(c,s),na(v,I,O),We(s,v,oM),da(s,s,I),We(v,v,s),We(s,I,O),We(I,c,i),pa(c,S),Ri(s,c,d),Ri(v,I,d);for(n=0;n<16;n++)i[n+16]=s[n],i[n+32]=v[n],i[n+48]=c[n],i[n+64]=I[n];var R=i.subarray(32),V=i.subarray(16);return rs(R,R),We(V,V,R),Li(t,V),0}function mM(t,e){return Um(t,e,qm)}var Mm=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Tm(t,e,a,r){for(var i=new Int32Array(16),d=new Int32Array(16),n,s,c,v,I,S,O,R,V,L,G,J,fe,oe,ye,Ie,we,Ne,be,z,w,p,f,m,b,E,q=t[0],U=t[1],M=t[2],u=t[3],D=t[4],se=t[5],X=t[6],ne=t[7],Z=e[0],g=e[1],Q=e[2],$=e[3],k=e[4],ee=e[5],ce=e[6],ie=e[7],de=0;r>=128;){for(be=0;be<16;be++)z=8*be+de,i[be]=a[z+0]<<24|a[z+1]<<16|a[z+2]<<8|a[z+3],d[be]=a[z+4]<<24|a[z+5]<<16|a[z+6]<<8|a[z+7];for(be=0;be<80;be++)if(n=q,s=U,c=M,v=u,I=D,S=se,O=X,R=ne,V=Z,L=g,G=Q,J=$,fe=k,oe=ee,ye=ce,Ie=ie,w=ne,p=ie,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=(D>>>14|k<<32-14)^(D>>>18|k<<32-18)^(k>>>41-32|D<<32-(41-32)),p=(k>>>14|D<<32-14)^(k>>>18|D<<32-18)^(D>>>41-32|k<<32-(41-32)),f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,w=D&se^~D&X,p=k&ee^~k&ce,f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,w=Mm[be*2],p=Mm[be*2+1],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,w=i[be%16],p=d[be%16],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,we=b&65535|E<<16,Ne=f&65535|m<<16,w=we,p=Ne,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=(q>>>28|Z<<32-28)^(Z>>>34-32|q<<32-(34-32))^(Z>>>39-32|q<<32-(39-32)),p=(Z>>>28|q<<32-28)^(q>>>34-32|Z<<32-(34-32))^(q>>>39-32|Z<<32-(39-32)),f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,w=q&U^q&M^U&M,p=Z&g^Z&Q^g&Q,f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,R=b&65535|E<<16,Ie=f&65535|m<<16,w=v,p=J,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=we,p=Ne,f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,v=b&65535|E<<16,J=f&65535|m<<16,U=n,M=s,u=c,D=v,se=I,X=S,ne=O,q=R,g=V,Q=L,$=G,k=J,ee=fe,ce=oe,ie=ye,Z=Ie,be%16===15)for(z=0;z<16;z++)w=i[z],p=d[z],f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=i[(z+9)%16],p=d[(z+9)%16],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,we=i[(z+1)%16],Ne=d[(z+1)%16],w=(we>>>1|Ne<<32-1)^(we>>>8|Ne<<32-8)^we>>>7,p=(Ne>>>1|we<<32-1)^(Ne>>>8|we<<32-8)^(Ne>>>7|we<<32-7),f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,we=i[(z+14)%16],Ne=d[(z+14)%16],w=(we>>>19|Ne<<32-19)^(Ne>>>61-32|we<<32-(61-32))^we>>>6,p=(Ne>>>19|we<<32-19)^(we>>>61-32|Ne<<32-(61-32))^(Ne>>>6|we<<32-6),f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,i[z]=b&65535|E<<16,d[z]=f&65535|m<<16;w=q,p=Z,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[0],p=e[0],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[0]=q=b&65535|E<<16,e[0]=Z=f&65535|m<<16,w=U,p=g,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[1],p=e[1],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[1]=U=b&65535|E<<16,e[1]=g=f&65535|m<<16,w=M,p=Q,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[2],p=e[2],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[2]=M=b&65535|E<<16,e[2]=Q=f&65535|m<<16,w=u,p=$,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[3],p=e[3],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[3]=u=b&65535|E<<16,e[3]=$=f&65535|m<<16,w=D,p=k,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[4],p=e[4],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[4]=D=b&65535|E<<16,e[4]=k=f&65535|m<<16,w=se,p=ee,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[5],p=e[5],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[5]=se=b&65535|E<<16,e[5]=ee=f&65535|m<<16,w=X,p=ce,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[6],p=e[6],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[6]=X=b&65535|E<<16,e[6]=ce=f&65535|m<<16,w=ne,p=ie,f=p&65535,m=p>>>16,b=w&65535,E=w>>>16,w=t[7],p=e[7],f+=p&65535,m+=p>>>16,b+=w&65535,E+=w>>>16,m+=f>>>16,b+=m>>>16,E+=b>>>16,t[7]=ne=b&65535|E<<16,e[7]=ie=f&65535|m<<16,de+=128,r-=128}return r}function td(t,e,a){var r=new Int32Array(8),i=new Int32Array(8),d=new Uint8Array(256),n,s=a;for(r[0]=1779033703,r[1]=3144134277,r[2]=1013904242,r[3]=2773480762,r[4]=1359893119,r[5]=2600822924,r[6]=528734635,r[7]=1541459225,i[0]=4089235720,i[1]=2227873595,i[2]=4271175723,i[3]=1595750129,i[4]=2917565137,i[5]=725511199,i[6]=4215389547,i[7]=327033209,Tm(r,i,e,a),a%=128,n=0;n=0;--i)r=a[i/8|0]>>(i&7)&1,Bm(t,e,r),es(e,t),es(t,t),Bm(t,e,r)}function Z2(t,e){var a=[Se(),Se(),Se(),Se()];Tr(a[0],Em),Tr(a[1],Cm),Tr(a[2],Fi),We(a[3],Em,Cm),Vm(t,a,e)}var X4=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function is(t,e){var a,r,i,d;for(r=63;r>=32;--r){for(a=0,i=r-32,d=r-12;i>8,e[i]-=a*256;e[i]+=a,e[r]=0}for(a=0,i=0;i<32;i++)e[i]+=a-(e[31]>>4)*X4[i],a=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=a*X4[i];for(r=0;r<32;r++)e[r+1]+=e[r]>>8,t[r]=e[r]&255}function ad(t){var e=new Float64Array(64),a;for(a=0;a<64;a++)e[a]=t[a];for(a=0;a<64;a++)t[a]=0;is(t,e)}function vM(t,e,a,r){var i=new Uint8Array(64),d=new Uint8Array(64),n,s,c=new Float64Array(64),v=[Se(),Se(),Se(),Se()];for(n=0;n>7&&na(t[0],Z4,t[0]),We(t[3],t[0],t[1]),0)}function yM(t,e,a,r){var i,d,n=new Uint8Array(32),s=new Uint8Array(64),c=[Se(),Se(),Se(),Se()],v=[Se(),Se(),Se(),Se()];if(d=-1,a<64||gM(v,r))return-1;for(i=0;i=0}tr.verify=SM;function EM(t){if(Br(t),t.length!==32)throw new Error("wrong seed length");for(var e=new Uint8Array(32),a=new Uint8Array(32),r=0;r<32;r++)e[r]=t[r];return mM(a,e),e[0]&=248,e[31]&=127,e[31]|=64,a[31]&=127,{public:a,private:e}}tr.generateKeyPair=EM;tr.default={}});var Lm=T((PQ,ep)=>{l();(function(t){"use strict";var e=function(h){var _,A=new Float64Array(16);if(h)for(_=0;_>24&255,h[_+1]=A>>16&255,h[_+2]=A>>8&255,h[_+3]=A&255,h[_+4]=o>>24&255,h[_+5]=o>>16&255,h[_+6]=o>>8&255,h[_+7]=o&255}function V(h,_,A,o,N){var P,F=0;for(P=0;P>>8)-1}function L(h,_,A,o){return V(h,_,A,o,16)}function G(h,_,A,o){return V(h,_,A,o,32)}function J(h,_,A,o){for(var N=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,P=A[0]&255|(A[1]&255)<<8|(A[2]&255)<<16|(A[3]&255)<<24,F=A[4]&255|(A[5]&255)<<8|(A[6]&255)<<16|(A[7]&255)<<24,K=A[8]&255|(A[9]&255)<<8|(A[10]&255)<<16|(A[11]&255)<<24,W=A[12]&255|(A[13]&255)<<8|(A[14]&255)<<16|(A[15]&255)<<24,ge=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,ue=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,Fe=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,me=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,De=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,Me=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,qe=A[16]&255|(A[17]&255)<<8|(A[18]&255)<<16|(A[19]&255)<<24,Te=A[20]&255|(A[21]&255)<<8|(A[22]&255)<<16|(A[23]&255)<<24,Oe=A[24]&255|(A[25]&255)<<8|(A[26]&255)<<16|(A[27]&255)<<24,Ue=A[28]&255|(A[29]&255)<<8|(A[30]&255)<<16|(A[31]&255)<<24,Pe=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,xe=N,Ce=P,ve=F,Ae=K,_e=W,he=ge,j=ue,H=Fe,re=me,te=De,ae=Me,pe=qe,Be=Te,Le=Oe,je=Ue,Qe=Pe,B,ze=0;ze<20;ze+=2)B=xe+Be|0,_e^=B<<7|B>>>32-7,B=_e+xe|0,re^=B<<9|B>>>32-9,B=re+_e|0,Be^=B<<13|B>>>32-13,B=Be+re|0,xe^=B<<18|B>>>32-18,B=he+Ce|0,te^=B<<7|B>>>32-7,B=te+he|0,Le^=B<<9|B>>>32-9,B=Le+te|0,Ce^=B<<13|B>>>32-13,B=Ce+Le|0,he^=B<<18|B>>>32-18,B=ae+j|0,je^=B<<7|B>>>32-7,B=je+ae|0,ve^=B<<9|B>>>32-9,B=ve+je|0,j^=B<<13|B>>>32-13,B=j+ve|0,ae^=B<<18|B>>>32-18,B=Qe+pe|0,Ae^=B<<7|B>>>32-7,B=Ae+Qe|0,H^=B<<9|B>>>32-9,B=H+Ae|0,pe^=B<<13|B>>>32-13,B=pe+H|0,Qe^=B<<18|B>>>32-18,B=xe+Ae|0,Ce^=B<<7|B>>>32-7,B=Ce+xe|0,ve^=B<<9|B>>>32-9,B=ve+Ce|0,Ae^=B<<13|B>>>32-13,B=Ae+ve|0,xe^=B<<18|B>>>32-18,B=he+_e|0,j^=B<<7|B>>>32-7,B=j+he|0,H^=B<<9|B>>>32-9,B=H+j|0,_e^=B<<13|B>>>32-13,B=_e+H|0,he^=B<<18|B>>>32-18,B=ae+te|0,pe^=B<<7|B>>>32-7,B=pe+ae|0,re^=B<<9|B>>>32-9,B=re+pe|0,te^=B<<13|B>>>32-13,B=te+re|0,ae^=B<<18|B>>>32-18,B=Qe+je|0,Be^=B<<7|B>>>32-7,B=Be+Qe|0,Le^=B<<9|B>>>32-9,B=Le+Be|0,je^=B<<13|B>>>32-13,B=je+Le|0,Qe^=B<<18|B>>>32-18;xe=xe+N|0,Ce=Ce+P|0,ve=ve+F|0,Ae=Ae+K|0,_e=_e+W|0,he=he+ge|0,j=j+ue|0,H=H+Fe|0,re=re+me|0,te=te+De|0,ae=ae+Me|0,pe=pe+qe|0,Be=Be+Te|0,Le=Le+Oe|0,je=je+Ue|0,Qe=Qe+Pe|0,h[0]=xe>>>0&255,h[1]=xe>>>8&255,h[2]=xe>>>16&255,h[3]=xe>>>24&255,h[4]=Ce>>>0&255,h[5]=Ce>>>8&255,h[6]=Ce>>>16&255,h[7]=Ce>>>24&255,h[8]=ve>>>0&255,h[9]=ve>>>8&255,h[10]=ve>>>16&255,h[11]=ve>>>24&255,h[12]=Ae>>>0&255,h[13]=Ae>>>8&255,h[14]=Ae>>>16&255,h[15]=Ae>>>24&255,h[16]=_e>>>0&255,h[17]=_e>>>8&255,h[18]=_e>>>16&255,h[19]=_e>>>24&255,h[20]=he>>>0&255,h[21]=he>>>8&255,h[22]=he>>>16&255,h[23]=he>>>24&255,h[24]=j>>>0&255,h[25]=j>>>8&255,h[26]=j>>>16&255,h[27]=j>>>24&255,h[28]=H>>>0&255,h[29]=H>>>8&255,h[30]=H>>>16&255,h[31]=H>>>24&255,h[32]=re>>>0&255,h[33]=re>>>8&255,h[34]=re>>>16&255,h[35]=re>>>24&255,h[36]=te>>>0&255,h[37]=te>>>8&255,h[38]=te>>>16&255,h[39]=te>>>24&255,h[40]=ae>>>0&255,h[41]=ae>>>8&255,h[42]=ae>>>16&255,h[43]=ae>>>24&255,h[44]=pe>>>0&255,h[45]=pe>>>8&255,h[46]=pe>>>16&255,h[47]=pe>>>24&255,h[48]=Be>>>0&255,h[49]=Be>>>8&255,h[50]=Be>>>16&255,h[51]=Be>>>24&255,h[52]=Le>>>0&255,h[53]=Le>>>8&255,h[54]=Le>>>16&255,h[55]=Le>>>24&255,h[56]=je>>>0&255,h[57]=je>>>8&255,h[58]=je>>>16&255,h[59]=je>>>24&255,h[60]=Qe>>>0&255,h[61]=Qe>>>8&255,h[62]=Qe>>>16&255,h[63]=Qe>>>24&255}function fe(h,_,A,o){for(var N=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,P=A[0]&255|(A[1]&255)<<8|(A[2]&255)<<16|(A[3]&255)<<24,F=A[4]&255|(A[5]&255)<<8|(A[6]&255)<<16|(A[7]&255)<<24,K=A[8]&255|(A[9]&255)<<8|(A[10]&255)<<16|(A[11]&255)<<24,W=A[12]&255|(A[13]&255)<<8|(A[14]&255)<<16|(A[15]&255)<<24,ge=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,ue=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,Fe=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,me=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,De=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,Me=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,qe=A[16]&255|(A[17]&255)<<8|(A[18]&255)<<16|(A[19]&255)<<24,Te=A[20]&255|(A[21]&255)<<8|(A[22]&255)<<16|(A[23]&255)<<24,Oe=A[24]&255|(A[25]&255)<<8|(A[26]&255)<<16|(A[27]&255)<<24,Ue=A[28]&255|(A[29]&255)<<8|(A[30]&255)<<16|(A[31]&255)<<24,Pe=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,xe=N,Ce=P,ve=F,Ae=K,_e=W,he=ge,j=ue,H=Fe,re=me,te=De,ae=Me,pe=qe,Be=Te,Le=Oe,je=Ue,Qe=Pe,B,ze=0;ze<20;ze+=2)B=xe+Be|0,_e^=B<<7|B>>>32-7,B=_e+xe|0,re^=B<<9|B>>>32-9,B=re+_e|0,Be^=B<<13|B>>>32-13,B=Be+re|0,xe^=B<<18|B>>>32-18,B=he+Ce|0,te^=B<<7|B>>>32-7,B=te+he|0,Le^=B<<9|B>>>32-9,B=Le+te|0,Ce^=B<<13|B>>>32-13,B=Ce+Le|0,he^=B<<18|B>>>32-18,B=ae+j|0,je^=B<<7|B>>>32-7,B=je+ae|0,ve^=B<<9|B>>>32-9,B=ve+je|0,j^=B<<13|B>>>32-13,B=j+ve|0,ae^=B<<18|B>>>32-18,B=Qe+pe|0,Ae^=B<<7|B>>>32-7,B=Ae+Qe|0,H^=B<<9|B>>>32-9,B=H+Ae|0,pe^=B<<13|B>>>32-13,B=pe+H|0,Qe^=B<<18|B>>>32-18,B=xe+Ae|0,Ce^=B<<7|B>>>32-7,B=Ce+xe|0,ve^=B<<9|B>>>32-9,B=ve+Ce|0,Ae^=B<<13|B>>>32-13,B=Ae+ve|0,xe^=B<<18|B>>>32-18,B=he+_e|0,j^=B<<7|B>>>32-7,B=j+he|0,H^=B<<9|B>>>32-9,B=H+j|0,_e^=B<<13|B>>>32-13,B=_e+H|0,he^=B<<18|B>>>32-18,B=ae+te|0,pe^=B<<7|B>>>32-7,B=pe+ae|0,re^=B<<9|B>>>32-9,B=re+pe|0,te^=B<<13|B>>>32-13,B=te+re|0,ae^=B<<18|B>>>32-18,B=Qe+je|0,Be^=B<<7|B>>>32-7,B=Be+Qe|0,Le^=B<<9|B>>>32-9,B=Le+Be|0,je^=B<<13|B>>>32-13,B=je+Le|0,Qe^=B<<18|B>>>32-18;h[0]=xe>>>0&255,h[1]=xe>>>8&255,h[2]=xe>>>16&255,h[3]=xe>>>24&255,h[4]=he>>>0&255,h[5]=he>>>8&255,h[6]=he>>>16&255,h[7]=he>>>24&255,h[8]=ae>>>0&255,h[9]=ae>>>8&255,h[10]=ae>>>16&255,h[11]=ae>>>24&255,h[12]=Qe>>>0&255,h[13]=Qe>>>8&255,h[14]=Qe>>>16&255,h[15]=Qe>>>24&255,h[16]=j>>>0&255,h[17]=j>>>8&255,h[18]=j>>>16&255,h[19]=j>>>24&255,h[20]=H>>>0&255,h[21]=H>>>8&255,h[22]=H>>>16&255,h[23]=H>>>24&255,h[24]=re>>>0&255,h[25]=re>>>8&255,h[26]=re>>>16&255,h[27]=re>>>24&255,h[28]=te>>>0&255,h[29]=te>>>8&255,h[30]=te>>>16&255,h[31]=te>>>24&255}function oe(h,_,A,o){J(h,_,A,o)}function ye(h,_,A,o){fe(h,_,A,o)}var Ie=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function we(h,_,A,o,N,P,F){var K=new Uint8Array(16),W=new Uint8Array(64),ge,ue;for(ue=0;ue<16;ue++)K[ue]=0;for(ue=0;ue<8;ue++)K[ue]=P[ue];for(;N>=64;){for(oe(W,K,F,Ie),ue=0;ue<64;ue++)h[_+ue]=A[o+ue]^W[ue];for(ge=1,ue=8;ue<16;ue++)ge=ge+(K[ue]&255)|0,K[ue]=ge&255,ge>>>=8;N-=64,_+=64,o+=64}if(N>0)for(oe(W,K,F,Ie),ue=0;ue=64;){for(oe(F,P,N,Ie),W=0;W<64;W++)h[_+W]=F[W];for(K=1,W=8;W<16;W++)K=K+(P[W]&255)|0,P[W]=K&255,K>>>=8;A-=64,_+=64}if(A>0)for(oe(F,P,N,Ie),W=0;W>>13|A<<3)&8191,o=h[4]&255|(h[5]&255)<<8,this.r[2]=(A>>>10|o<<6)&7939,N=h[6]&255|(h[7]&255)<<8,this.r[3]=(o>>>7|N<<9)&8191,P=h[8]&255|(h[9]&255)<<8,this.r[4]=(N>>>4|P<<12)&255,this.r[5]=P>>>1&8190,F=h[10]&255|(h[11]&255)<<8,this.r[6]=(P>>>14|F<<2)&8191,K=h[12]&255|(h[13]&255)<<8,this.r[7]=(F>>>11|K<<5)&8065,W=h[14]&255|(h[15]&255)<<8,this.r[8]=(K>>>8|W<<8)&8191,this.r[9]=W>>>5&127,this.pad[0]=h[16]&255|(h[17]&255)<<8,this.pad[1]=h[18]&255|(h[19]&255)<<8,this.pad[2]=h[20]&255|(h[21]&255)<<8,this.pad[3]=h[22]&255|(h[23]&255)<<8,this.pad[4]=h[24]&255|(h[25]&255)<<8,this.pad[5]=h[26]&255|(h[27]&255)<<8,this.pad[6]=h[28]&255|(h[29]&255)<<8,this.pad[7]=h[30]&255|(h[31]&255)<<8};w.prototype.blocks=function(h,_,A){for(var o=this.fin?0:2048,N,P,F,K,W,ge,ue,Fe,me,De,Me,qe,Te,Oe,Ue,Pe,xe,Ce,ve,Ae=this.h[0],_e=this.h[1],he=this.h[2],j=this.h[3],H=this.h[4],re=this.h[5],te=this.h[6],ae=this.h[7],pe=this.h[8],Be=this.h[9],Le=this.r[0],je=this.r[1],Qe=this.r[2],B=this.r[3],ze=this.r[4],t1=this.r[5],a1=this.r[6],He=this.r[7],Je=this.r[8],Xe=this.r[9];A>=16;)N=h[_+0]&255|(h[_+1]&255)<<8,Ae+=N&8191,P=h[_+2]&255|(h[_+3]&255)<<8,_e+=(N>>>13|P<<3)&8191,F=h[_+4]&255|(h[_+5]&255)<<8,he+=(P>>>10|F<<6)&8191,K=h[_+6]&255|(h[_+7]&255)<<8,j+=(F>>>7|K<<9)&8191,W=h[_+8]&255|(h[_+9]&255)<<8,H+=(K>>>4|W<<12)&8191,re+=W>>>1&8191,ge=h[_+10]&255|(h[_+11]&255)<<8,te+=(W>>>14|ge<<2)&8191,ue=h[_+12]&255|(h[_+13]&255)<<8,ae+=(ge>>>11|ue<<5)&8191,Fe=h[_+14]&255|(h[_+15]&255)<<8,pe+=(ue>>>8|Fe<<8)&8191,Be+=Fe>>>5|o,me=0,De=me,De+=Ae*Le,De+=_e*(5*Xe),De+=he*(5*Je),De+=j*(5*He),De+=H*(5*a1),me=De>>>13,De&=8191,De+=re*(5*t1),De+=te*(5*ze),De+=ae*(5*B),De+=pe*(5*Qe),De+=Be*(5*je),me+=De>>>13,De&=8191,Me=me,Me+=Ae*je,Me+=_e*Le,Me+=he*(5*Xe),Me+=j*(5*Je),Me+=H*(5*He),me=Me>>>13,Me&=8191,Me+=re*(5*a1),Me+=te*(5*t1),Me+=ae*(5*ze),Me+=pe*(5*B),Me+=Be*(5*Qe),me+=Me>>>13,Me&=8191,qe=me,qe+=Ae*Qe,qe+=_e*je,qe+=he*Le,qe+=j*(5*Xe),qe+=H*(5*Je),me=qe>>>13,qe&=8191,qe+=re*(5*He),qe+=te*(5*a1),qe+=ae*(5*t1),qe+=pe*(5*ze),qe+=Be*(5*B),me+=qe>>>13,qe&=8191,Te=me,Te+=Ae*B,Te+=_e*Qe,Te+=he*je,Te+=j*Le,Te+=H*(5*Xe),me=Te>>>13,Te&=8191,Te+=re*(5*Je),Te+=te*(5*He),Te+=ae*(5*a1),Te+=pe*(5*t1),Te+=Be*(5*ze),me+=Te>>>13,Te&=8191,Oe=me,Oe+=Ae*ze,Oe+=_e*B,Oe+=he*Qe,Oe+=j*je,Oe+=H*Le,me=Oe>>>13,Oe&=8191,Oe+=re*(5*Xe),Oe+=te*(5*Je),Oe+=ae*(5*He),Oe+=pe*(5*a1),Oe+=Be*(5*t1),me+=Oe>>>13,Oe&=8191,Ue=me,Ue+=Ae*t1,Ue+=_e*ze,Ue+=he*B,Ue+=j*Qe,Ue+=H*je,me=Ue>>>13,Ue&=8191,Ue+=re*Le,Ue+=te*(5*Xe),Ue+=ae*(5*Je),Ue+=pe*(5*He),Ue+=Be*(5*a1),me+=Ue>>>13,Ue&=8191,Pe=me,Pe+=Ae*a1,Pe+=_e*t1,Pe+=he*ze,Pe+=j*B,Pe+=H*Qe,me=Pe>>>13,Pe&=8191,Pe+=re*je,Pe+=te*Le,Pe+=ae*(5*Xe),Pe+=pe*(5*Je),Pe+=Be*(5*He),me+=Pe>>>13,Pe&=8191,xe=me,xe+=Ae*He,xe+=_e*a1,xe+=he*t1,xe+=j*ze,xe+=H*B,me=xe>>>13,xe&=8191,xe+=re*Qe,xe+=te*je,xe+=ae*Le,xe+=pe*(5*Xe),xe+=Be*(5*Je),me+=xe>>>13,xe&=8191,Ce=me,Ce+=Ae*Je,Ce+=_e*He,Ce+=he*a1,Ce+=j*t1,Ce+=H*ze,me=Ce>>>13,Ce&=8191,Ce+=re*B,Ce+=te*Qe,Ce+=ae*je,Ce+=pe*Le,Ce+=Be*(5*Xe),me+=Ce>>>13,Ce&=8191,ve=me,ve+=Ae*Xe,ve+=_e*Je,ve+=he*He,ve+=j*a1,ve+=H*t1,me=ve>>>13,ve&=8191,ve+=re*ze,ve+=te*B,ve+=ae*Qe,ve+=pe*je,ve+=Be*Le,me+=ve>>>13,ve&=8191,me=(me<<2)+me|0,me=me+De|0,De=me&8191,me=me>>>13,Me+=me,Ae=De,_e=Me,he=qe,j=Te,H=Oe,re=Ue,te=Pe,ae=xe,pe=Ce,Be=ve,_+=16,A-=16;this.h[0]=Ae,this.h[1]=_e,this.h[2]=he,this.h[3]=j,this.h[4]=H,this.h[5]=re,this.h[6]=te,this.h[7]=ae,this.h[8]=pe,this.h[9]=Be},w.prototype.finish=function(h,_){var A=new Uint16Array(10),o,N,P,F;if(this.leftover){for(F=this.leftover,this.buffer[F++]=1;F<16;F++)this.buffer[F]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(o=this.h[1]>>>13,this.h[1]&=8191,F=2;F<10;F++)this.h[F]+=o,o=this.h[F]>>>13,this.h[F]&=8191;for(this.h[0]+=o*5,o=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=o,o=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=o,A[0]=this.h[0]+5,o=A[0]>>>13,A[0]&=8191,F=1;F<10;F++)A[F]=this.h[F]+o,o=A[F]>>>13,A[F]&=8191;for(A[9]-=1<<13,N=(o^1)-1,F=0;F<10;F++)A[F]&=N;for(N=~N,F=0;F<10;F++)this.h[F]=this.h[F]&N|A[F];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,P=this.h[0]+this.pad[0],this.h[0]=P&65535,F=1;F<8;F++)P=(this.h[F]+this.pad[F]|0)+(P>>>16)|0,this.h[F]=P&65535;h[_+0]=this.h[0]>>>0&255,h[_+1]=this.h[0]>>>8&255,h[_+2]=this.h[1]>>>0&255,h[_+3]=this.h[1]>>>8&255,h[_+4]=this.h[2]>>>0&255,h[_+5]=this.h[2]>>>8&255,h[_+6]=this.h[3]>>>0&255,h[_+7]=this.h[3]>>>8&255,h[_+8]=this.h[4]>>>0&255,h[_+9]=this.h[4]>>>8&255,h[_+10]=this.h[5]>>>0&255,h[_+11]=this.h[5]>>>8&255,h[_+12]=this.h[6]>>>0&255,h[_+13]=this.h[6]>>>8&255,h[_+14]=this.h[7]>>>0&255,h[_+15]=this.h[7]>>>8&255},w.prototype.update=function(h,_,A){var o,N;if(this.leftover){for(N=16-this.leftover,N>A&&(N=A),o=0;o=16&&(N=A-A%16,this.blocks(h,_,N),_+=N,A-=N),A){for(o=0;o>16&1),P[A-1]&=65535;P[15]=F[15]-32767-(P[14]>>16&1),N=P[15]>>16&1,P[14]&=65535,U(F,P,1-N)}for(A=0;A<16;A++)h[2*A]=F[A]&255,h[2*A+1]=F[A]>>8}function u(h,_){var A=new Uint8Array(32),o=new Uint8Array(32);return M(A,h),M(o,_),G(A,0,o,0)}function D(h){var _=new Uint8Array(32);return M(_,h),_[0]&1}function se(h,_){var A;for(A=0;A<16;A++)h[A]=_[2*A]+(_[2*A+1]<<8);h[15]&=32767}function X(h,_,A){for(var o=0;o<16;o++)h[o]=_[o]+A[o]}function ne(h,_,A){for(var o=0;o<16;o++)h[o]=_[o]-A[o]}function Z(h,_,A){var o,N,P=0,F=0,K=0,W=0,ge=0,ue=0,Fe=0,me=0,De=0,Me=0,qe=0,Te=0,Oe=0,Ue=0,Pe=0,xe=0,Ce=0,ve=0,Ae=0,_e=0,he=0,j=0,H=0,re=0,te=0,ae=0,pe=0,Be=0,Le=0,je=0,Qe=0,B=A[0],ze=A[1],t1=A[2],a1=A[3],He=A[4],Je=A[5],Xe=A[6],L1=A[7],g1=A[8],q1=A[9],O1=A[10],P1=A[11],H1=A[12],dt=A[13],pt=A[14],nt=A[15];o=_[0],P+=o*B,F+=o*ze,K+=o*t1,W+=o*a1,ge+=o*He,ue+=o*Je,Fe+=o*Xe,me+=o*L1,De+=o*g1,Me+=o*q1,qe+=o*O1,Te+=o*P1,Oe+=o*H1,Ue+=o*dt,Pe+=o*pt,xe+=o*nt,o=_[1],F+=o*B,K+=o*ze,W+=o*t1,ge+=o*a1,ue+=o*He,Fe+=o*Je,me+=o*Xe,De+=o*L1,Me+=o*g1,qe+=o*q1,Te+=o*O1,Oe+=o*P1,Ue+=o*H1,Pe+=o*dt,xe+=o*pt,Ce+=o*nt,o=_[2],K+=o*B,W+=o*ze,ge+=o*t1,ue+=o*a1,Fe+=o*He,me+=o*Je,De+=o*Xe,Me+=o*L1,qe+=o*g1,Te+=o*q1,Oe+=o*O1,Ue+=o*P1,Pe+=o*H1,xe+=o*dt,Ce+=o*pt,ve+=o*nt,o=_[3],W+=o*B,ge+=o*ze,ue+=o*t1,Fe+=o*a1,me+=o*He,De+=o*Je,Me+=o*Xe,qe+=o*L1,Te+=o*g1,Oe+=o*q1,Ue+=o*O1,Pe+=o*P1,xe+=o*H1,Ce+=o*dt,ve+=o*pt,Ae+=o*nt,o=_[4],ge+=o*B,ue+=o*ze,Fe+=o*t1,me+=o*a1,De+=o*He,Me+=o*Je,qe+=o*Xe,Te+=o*L1,Oe+=o*g1,Ue+=o*q1,Pe+=o*O1,xe+=o*P1,Ce+=o*H1,ve+=o*dt,Ae+=o*pt,_e+=o*nt,o=_[5],ue+=o*B,Fe+=o*ze,me+=o*t1,De+=o*a1,Me+=o*He,qe+=o*Je,Te+=o*Xe,Oe+=o*L1,Ue+=o*g1,Pe+=o*q1,xe+=o*O1,Ce+=o*P1,ve+=o*H1,Ae+=o*dt,_e+=o*pt,he+=o*nt,o=_[6],Fe+=o*B,me+=o*ze,De+=o*t1,Me+=o*a1,qe+=o*He,Te+=o*Je,Oe+=o*Xe,Ue+=o*L1,Pe+=o*g1,xe+=o*q1,Ce+=o*O1,ve+=o*P1,Ae+=o*H1,_e+=o*dt,he+=o*pt,j+=o*nt,o=_[7],me+=o*B,De+=o*ze,Me+=o*t1,qe+=o*a1,Te+=o*He,Oe+=o*Je,Ue+=o*Xe,Pe+=o*L1,xe+=o*g1,Ce+=o*q1,ve+=o*O1,Ae+=o*P1,_e+=o*H1,he+=o*dt,j+=o*pt,H+=o*nt,o=_[8],De+=o*B,Me+=o*ze,qe+=o*t1,Te+=o*a1,Oe+=o*He,Ue+=o*Je,Pe+=o*Xe,xe+=o*L1,Ce+=o*g1,ve+=o*q1,Ae+=o*O1,_e+=o*P1,he+=o*H1,j+=o*dt,H+=o*pt,re+=o*nt,o=_[9],Me+=o*B,qe+=o*ze,Te+=o*t1,Oe+=o*a1,Ue+=o*He,Pe+=o*Je,xe+=o*Xe,Ce+=o*L1,ve+=o*g1,Ae+=o*q1,_e+=o*O1,he+=o*P1,j+=o*H1,H+=o*dt,re+=o*pt,te+=o*nt,o=_[10],qe+=o*B,Te+=o*ze,Oe+=o*t1,Ue+=o*a1,Pe+=o*He,xe+=o*Je,Ce+=o*Xe,ve+=o*L1,Ae+=o*g1,_e+=o*q1,he+=o*O1,j+=o*P1,H+=o*H1,re+=o*dt,te+=o*pt,ae+=o*nt,o=_[11],Te+=o*B,Oe+=o*ze,Ue+=o*t1,Pe+=o*a1,xe+=o*He,Ce+=o*Je,ve+=o*Xe,Ae+=o*L1,_e+=o*g1,he+=o*q1,j+=o*O1,H+=o*P1,re+=o*H1,te+=o*dt,ae+=o*pt,pe+=o*nt,o=_[12],Oe+=o*B,Ue+=o*ze,Pe+=o*t1,xe+=o*a1,Ce+=o*He,ve+=o*Je,Ae+=o*Xe,_e+=o*L1,he+=o*g1,j+=o*q1,H+=o*O1,re+=o*P1,te+=o*H1,ae+=o*dt,pe+=o*pt,Be+=o*nt,o=_[13],Ue+=o*B,Pe+=o*ze,xe+=o*t1,Ce+=o*a1,ve+=o*He,Ae+=o*Je,_e+=o*Xe,he+=o*L1,j+=o*g1,H+=o*q1,re+=o*O1,te+=o*P1,ae+=o*H1,pe+=o*dt,Be+=o*pt,Le+=o*nt,o=_[14],Pe+=o*B,xe+=o*ze,Ce+=o*t1,ve+=o*a1,Ae+=o*He,_e+=o*Je,he+=o*Xe,j+=o*L1,H+=o*g1,re+=o*q1,te+=o*O1,ae+=o*P1,pe+=o*H1,Be+=o*dt,Le+=o*pt,je+=o*nt,o=_[15],xe+=o*B,Ce+=o*ze,ve+=o*t1,Ae+=o*a1,_e+=o*He,he+=o*Je,j+=o*Xe,H+=o*L1,re+=o*g1,te+=o*q1,ae+=o*O1,pe+=o*P1,Be+=o*H1,Le+=o*dt,je+=o*pt,Qe+=o*nt,P+=38*Ce,F+=38*ve,K+=38*Ae,W+=38*_e,ge+=38*he,ue+=38*j,Fe+=38*H,me+=38*re,De+=38*te,Me+=38*ae,qe+=38*pe,Te+=38*Be,Oe+=38*Le,Ue+=38*je,Pe+=38*Qe,N=1,o=P+N+65535,N=Math.floor(o/65536),P=o-N*65536,o=F+N+65535,N=Math.floor(o/65536),F=o-N*65536,o=K+N+65535,N=Math.floor(o/65536),K=o-N*65536,o=W+N+65535,N=Math.floor(o/65536),W=o-N*65536,o=ge+N+65535,N=Math.floor(o/65536),ge=o-N*65536,o=ue+N+65535,N=Math.floor(o/65536),ue=o-N*65536,o=Fe+N+65535,N=Math.floor(o/65536),Fe=o-N*65536,o=me+N+65535,N=Math.floor(o/65536),me=o-N*65536,o=De+N+65535,N=Math.floor(o/65536),De=o-N*65536,o=Me+N+65535,N=Math.floor(o/65536),Me=o-N*65536,o=qe+N+65535,N=Math.floor(o/65536),qe=o-N*65536,o=Te+N+65535,N=Math.floor(o/65536),Te=o-N*65536,o=Oe+N+65535,N=Math.floor(o/65536),Oe=o-N*65536,o=Ue+N+65535,N=Math.floor(o/65536),Ue=o-N*65536,o=Pe+N+65535,N=Math.floor(o/65536),Pe=o-N*65536,o=xe+N+65535,N=Math.floor(o/65536),xe=o-N*65536,P+=N-1+37*(N-1),N=1,o=P+N+65535,N=Math.floor(o/65536),P=o-N*65536,o=F+N+65535,N=Math.floor(o/65536),F=o-N*65536,o=K+N+65535,N=Math.floor(o/65536),K=o-N*65536,o=W+N+65535,N=Math.floor(o/65536),W=o-N*65536,o=ge+N+65535,N=Math.floor(o/65536),ge=o-N*65536,o=ue+N+65535,N=Math.floor(o/65536),ue=o-N*65536,o=Fe+N+65535,N=Math.floor(o/65536),Fe=o-N*65536,o=me+N+65535,N=Math.floor(o/65536),me=o-N*65536,o=De+N+65535,N=Math.floor(o/65536),De=o-N*65536,o=Me+N+65535,N=Math.floor(o/65536),Me=o-N*65536,o=qe+N+65535,N=Math.floor(o/65536),qe=o-N*65536,o=Te+N+65535,N=Math.floor(o/65536),Te=o-N*65536,o=Oe+N+65535,N=Math.floor(o/65536),Oe=o-N*65536,o=Ue+N+65535,N=Math.floor(o/65536),Ue=o-N*65536,o=Pe+N+65535,N=Math.floor(o/65536),Pe=o-N*65536,o=xe+N+65535,N=Math.floor(o/65536),xe=o-N*65536,P+=N-1+37*(N-1),h[0]=P,h[1]=F,h[2]=K,h[3]=W,h[4]=ge,h[5]=ue,h[6]=Fe,h[7]=me,h[8]=De,h[9]=Me,h[10]=qe,h[11]=Te,h[12]=Oe,h[13]=Ue,h[14]=Pe,h[15]=xe}function g(h,_){Z(h,_,_)}function Q(h,_){var A=e(),o;for(o=0;o<16;o++)A[o]=_[o];for(o=253;o>=0;o--)g(A,A),o!==2&&o!==4&&Z(A,A,_);for(o=0;o<16;o++)h[o]=A[o]}function $(h,_){var A=e(),o;for(o=0;o<16;o++)A[o]=_[o];for(o=250;o>=0;o--)g(A,A),o!==1&&Z(A,A,_);for(o=0;o<16;o++)h[o]=A[o]}function k(h,_,A){var o=new Uint8Array(32),N=new Float64Array(80),P,F,K=e(),W=e(),ge=e(),ue=e(),Fe=e(),me=e();for(F=0;F<31;F++)o[F]=_[F];for(o[31]=_[31]&127|64,o[0]&=248,se(N,A),F=0;F<16;F++)W[F]=N[F],ue[F]=K[F]=ge[F]=0;for(K[0]=ue[0]=1,F=254;F>=0;--F)P=o[F>>>3]>>>(F&7)&1,U(K,W,P),U(ge,ue,P),X(Fe,K,ge),ne(K,K,ge),X(ge,W,ue),ne(W,W,ue),g(ue,Fe),g(me,K),Z(K,ge,K),Z(ge,W,Fe),X(Fe,K,ge),ne(K,K,ge),g(W,K),ne(ge,ue,me),Z(K,ge,s),X(K,K,ue),Z(ge,ge,K),Z(K,ue,me),Z(ue,W,N),g(W,Fe),U(K,W,P),U(ge,ue,P);for(F=0;F<16;F++)N[F+16]=K[F],N[F+32]=ge[F],N[F+48]=W[F],N[F+64]=ue[F];var De=N.subarray(32),Me=N.subarray(16);return Q(De,De),Z(Me,Me,De),M(h,Me),0}function ee(h,_){return k(h,_,i)}function ce(h,_){return a(_,32),ee(h,_)}function ie(h,_,A){var o=new Uint8Array(32);return k(o,A,_),ye(h,r,o,Ie)}var de=m,Re=b;function le(h,_,A,o,N,P){var F=new Uint8Array(32);return ie(F,N,P),de(h,_,A,o,F)}function Ee(h,_,A,o,N,P){var F=new Uint8Array(32);return ie(F,N,P),Re(h,_,A,o,F)}var sa=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function x1(h,_,A,o){for(var N=new Int32Array(16),P=new Int32Array(16),F,K,W,ge,ue,Fe,me,De,Me,qe,Te,Oe,Ue,Pe,xe,Ce,ve,Ae,_e,he,j,H,re,te,ae,pe,Be=h[0],Le=h[1],je=h[2],Qe=h[3],B=h[4],ze=h[5],t1=h[6],a1=h[7],He=_[0],Je=_[1],Xe=_[2],L1=_[3],g1=_[4],q1=_[5],O1=_[6],P1=_[7],H1=0;o>=128;){for(_e=0;_e<16;_e++)he=8*_e+H1,N[_e]=A[he+0]<<24|A[he+1]<<16|A[he+2]<<8|A[he+3],P[_e]=A[he+4]<<24|A[he+5]<<16|A[he+6]<<8|A[he+7];for(_e=0;_e<80;_e++)if(F=Be,K=Le,W=je,ge=Qe,ue=B,Fe=ze,me=t1,De=a1,Me=He,qe=Je,Te=Xe,Oe=L1,Ue=g1,Pe=q1,xe=O1,Ce=P1,j=a1,H=P1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=(B>>>14|g1<<32-14)^(B>>>18|g1<<32-18)^(g1>>>41-32|B<<32-(41-32)),H=(g1>>>14|B<<32-14)^(g1>>>18|B<<32-18)^(B>>>41-32|g1<<32-(41-32)),re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,j=B&ze^~B&t1,H=g1&q1^~g1&O1,re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,j=sa[_e*2],H=sa[_e*2+1],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,j=N[_e%16],H=P[_e%16],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,ve=ae&65535|pe<<16,Ae=re&65535|te<<16,j=ve,H=Ae,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=(Be>>>28|He<<32-28)^(He>>>34-32|Be<<32-(34-32))^(He>>>39-32|Be<<32-(39-32)),H=(He>>>28|Be<<32-28)^(Be>>>34-32|He<<32-(34-32))^(Be>>>39-32|He<<32-(39-32)),re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,j=Be&Le^Be&je^Le&je,H=He&Je^He&Xe^Je&Xe,re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,De=ae&65535|pe<<16,Ce=re&65535|te<<16,j=ge,H=Oe,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=ve,H=Ae,re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,ge=ae&65535|pe<<16,Oe=re&65535|te<<16,Le=F,je=K,Qe=W,B=ge,ze=ue,t1=Fe,a1=me,Be=De,Je=Me,Xe=qe,L1=Te,g1=Oe,q1=Ue,O1=Pe,P1=xe,He=Ce,_e%16===15)for(he=0;he<16;he++)j=N[he],H=P[he],re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=N[(he+9)%16],H=P[(he+9)%16],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,ve=N[(he+1)%16],Ae=P[(he+1)%16],j=(ve>>>1|Ae<<32-1)^(ve>>>8|Ae<<32-8)^ve>>>7,H=(Ae>>>1|ve<<32-1)^(Ae>>>8|ve<<32-8)^(Ae>>>7|ve<<32-7),re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,ve=N[(he+14)%16],Ae=P[(he+14)%16],j=(ve>>>19|Ae<<32-19)^(Ae>>>61-32|ve<<32-(61-32))^ve>>>6,H=(Ae>>>19|ve<<32-19)^(ve>>>61-32|Ae<<32-(61-32))^(Ae>>>6|ve<<32-6),re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,N[he]=ae&65535|pe<<16,P[he]=re&65535|te<<16;j=Be,H=He,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[0],H=_[0],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[0]=Be=ae&65535|pe<<16,_[0]=He=re&65535|te<<16,j=Le,H=Je,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[1],H=_[1],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[1]=Le=ae&65535|pe<<16,_[1]=Je=re&65535|te<<16,j=je,H=Xe,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[2],H=_[2],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[2]=je=ae&65535|pe<<16,_[2]=Xe=re&65535|te<<16,j=Qe,H=L1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[3],H=_[3],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[3]=Qe=ae&65535|pe<<16,_[3]=L1=re&65535|te<<16,j=B,H=g1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[4],H=_[4],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[4]=B=ae&65535|pe<<16,_[4]=g1=re&65535|te<<16,j=ze,H=q1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[5],H=_[5],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[5]=ze=ae&65535|pe<<16,_[5]=q1=re&65535|te<<16,j=t1,H=O1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[6],H=_[6],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[6]=t1=ae&65535|pe<<16,_[6]=O1=re&65535|te<<16,j=a1,H=P1,re=H&65535,te=H>>>16,ae=j&65535,pe=j>>>16,j=h[7],H=_[7],re+=H&65535,te+=H>>>16,ae+=j&65535,pe+=j>>>16,te+=re>>>16,ae+=te>>>16,pe+=ae>>>16,h[7]=a1=ae&65535|pe<<16,_[7]=P1=re&65535|te<<16,H1+=128,o-=128}return o}function Ze(h,_,A){var o=new Int32Array(8),N=new Int32Array(8),P=new Uint8Array(256),F,K=A;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,N[0]=4089235720,N[1]=2227873595,N[2]=4271175723,N[3]=1595750129,N[4]=2917565137,N[5]=725511199,N[6]=4215389547,N[7]=327033209,x1(o,N,_,A),A%=128,F=0;F=0;--N)o=A[N/8|0]>>(N&7)&1,w1(h,_,o),Bt(_,h),Bt(h,h),w1(h,_,o)}function s1(h,_){var A=[e(),e(),e(),e()];E(A[0],I),E(A[1],S),E(A[2],n),Z(A[3],I,S),jt(h,A,_)}function u1(h,_,A){var o=new Uint8Array(64),N=[e(),e(),e(),e()],P;for(A||a(_,32),Ze(o,_,32),o[0]&=248,o[31]&=127,o[31]|=64,s1(N,o),l1(h,N),P=0;P<32;P++)_[P+32]=h[P];return 0}var qt=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function c1(h,_){var A,o,N,P;for(o=63;o>=32;--o){for(A=0,N=o-32,P=o-12;N>4)*qt[N],A=_[N]>>8,_[N]&=255;for(N=0;N<32;N++)_[N]-=A*qt[N];for(o=0;o<32;o++)_[o+1]+=_[o]>>8,h[o]=_[o]&255}function h1(h){var _=new Float64Array(64),A;for(A=0;A<64;A++)_[A]=h[A];for(A=0;A<64;A++)h[A]=0;c1(h,_)}function oa(h,_,A,o){var N=new Uint8Array(64),P=new Uint8Array(64),F=new Uint8Array(64),K,W,ge=new Float64Array(64),ue=[e(),e(),e(),e()];Ze(N,o,32),N[0]&=248,N[31]&=127,N[31]|=64;var Fe=A+64;for(K=0;K>7&&ne(h[0],d,h[0]),Z(h[3],h[0],h[1]),0)}function m1(h,_,A,o){var N,P=new Uint8Array(32),F=new Uint8Array(64),K=[e(),e(),e(),e()],W=[e(),e(),e(),e()];if(A<64||S1(W,o))return-1;for(N=0;N=0},t.sign.keyPair=function(){var h=new Uint8Array(e1),_=new Uint8Array(r1);return u1(h,_),{publicKey:h,secretKey:_}},t.sign.keyPair.fromSecretKey=function(h){if(Ke(h),h.length!==r1)throw new Error("bad secret key size");for(var _=new Uint8Array(e1),A=0;A<_.length;A++)_[A]=h[32+A];return{publicKey:_,secretKey:new Uint8Array(h)}},t.sign.keyPair.fromSeed=function(h){if(Ke(h),h.length!==Kt)throw new Error("bad seed size");for(var _=new Uint8Array(e1),A=new Uint8Array(r1),o=0;o<32;o++)A[o]=h[o];return u1(_,A,!0),{publicKey:_,secretKey:A}},t.sign.publicKeyLength=e1,t.sign.secretKeyLength=r1,t.sign.seedLength=Kt,t.sign.signatureLength=et,t.hash=function(h){Ke(h);var _=new Uint8Array(b1);return Ze(_,h,h.length),_},t.hash.hashLength=b1,t.verify=function(h,_){return Ke(h,_),h.length===0||_.length===0||h.length!==_.length?!1:V(h,0,_,0,h.length)===0},t.setPRNG=function(h){a=h},function(){var h=typeof self<"u"?self.crypto||self.msCrypto:null;if(h&&h.getRandomValues){var _=65536;t.setPRNG(function(A,o){var N,P=new Uint8Array(o);for(N=0;N{l();(function(t,e){"use strict";typeof tp<"u"&&tp.exports?tp.exports=e(Lm()):t.ed2curve=e(t.nacl)})(Qm,function(t){"use strict";if(!t)throw new Error("tweetnacl not loaded");var e=function(z){var w,p=new Float64Array(16);if(z)for(w=0;w=0;f--)O(p,p),f!==2&&f!==4&&S(p,p,w);for(f=0;f<16;f++)z[f]=p[f]}function V(z,w){var p,f,m,b=e(),E=e();for(p=0;p<16;p++)E[p]=w[p];for(n(E),n(E),n(E),f=0;f<2;f++){for(b[0]=E[0]-65517,p=1;p<15;p++)b[p]=E[p]-65535-(b[p-1]>>16&1),b[p-1]&=65535;b[15]=E[15]-32767-(b[14]>>16&1),m=b[15]>>16&1,b[14]&=65535,s(E,b,1-m)}for(p=0;p<16;p++)z[2*p]=E[p]&255,z[2*p+1]=E[p]>>8}function L(z){var w=new Uint8Array(32);return V(w,z),w[0]&1}function G(z,w,p,f,m){var b,E=0;for(b=0;b>>8)-1}function J(z,w,p,f){return G(z,w,p,f,32)}function fe(z,w){var p=new Uint8Array(32),f=new Uint8Array(32);return V(p,z),V(f,w),J(p,0,f,0)}function oe(z,w){var p=e(),f;for(f=0;f<16;f++)p[f]=w[f];for(f=250;f>=0;f--)O(p,p),f!==1&&S(p,p,w);for(f=0;f<16;f++)z[f]=p[f]}function ye(z,w){var p;for(p=0;p<16;p++)z[p]=w[p]|0}function Ie(z,w){var p=e(),f=e(),m=e(),b=e(),E=e(),q=e(),U=e();return ye(z[2],r),c(z[1],w),O(m,z[1]),S(b,m,i),I(m,m,z[2]),v(b,z[2],b),O(E,b),O(q,E),S(U,q,E),S(p,U,m),S(p,p,b),oe(p,p),S(p,p,m),S(p,p,b),S(p,p,b),S(z[0],p,b),O(f,z[0]),S(f,f,b),fe(f,m)&&S(z[0],z[0],d),O(f,z[0]),S(f,f,b),fe(f,m)?-1:(L(z[0])===w[31]>>7&&I(z[0],a,z[0]),S(z[3],z[0],z[1]),0)}function we(z){var w=new Uint8Array(32),p=[e(),e(),e(),e()],f=e(),m=e();if(Ie(p,z))return null;var b=p[1];return v(f,r,b),I(m,r,b),R(m,m),S(f,f,m),V(w,f),w}function Ne(z){var w=new Uint8Array(64),p=new Uint8Array(32),f;for(t.lowlevel.crypto_hash(w,z,32),w[0]&=248,w[31]&=127,w[31]|=64,f=0;f<32;f++)p[f]=w[f];for(f=0;f<64;f++)w[f]=0;return p}function be(z){var w=we(z.publicKey);return w?{publicKey:w,secretKey:Ne(z.secretKey)}:null}return{convertPublicKey:we,convertSecretKey:Ne,convertKeyPair:be}})});var Gm=T(us=>{"use strict";l();Object.defineProperty(us,"__esModule",{value:!0});function OM(t){var e=4,a=t.length,r=a%e;if(!r)return t;var i=a,d=e-r,n=a+d,s=C.alloc(n);for(s.write(t);d--;)s.write("=",i++);return s.toString()}us.default=OM});var Wm=T(ms=>{"use strict";l();Object.defineProperty(ms,"__esModule",{value:!0});var PM=Gm();function Ym(t,e){return e===void 0&&(e="utf8"),C.isBuffer(t)?cs(t.toString("base64")):cs(C.from(t,e).toString("base64"))}function UM(t,e){return e===void 0&&(e="utf8"),C.from(hs(t),"base64").toString(e)}function hs(t){return t=t.toString(),PM.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function cs(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function VM(t){return C.from(hs(t),"base64")}var Hi=Ym;Hi.encode=Ym;Hi.decode=UM;Hi.toBase64=hs;Hi.fromBase64=cs;Hi.toBuffer=VM;ms.default=Hi});var Jm=T((HQ,up)=>{l();up.exports=Wm().default;up.exports.default=up.exports});var zM={};vp(zM,{Crypto:()=>ls,Utils:()=>w4,default:()=>mp});module.exports=pv(zM);l();l();var Ga=la(Mp(),1),Si=la(y4(),1);var w4={};vp(w4,{concatUint8Arrays:()=>y1,decodeInt32:()=>x4,encodeInt32:()=>wa,encodeInt64:()=>T2,fromBigInt:()=>SC,hexToUint8Array:()=>i1,isHex:()=>Ye,originPrivateKey:()=>_C,toBigInt:()=>IC,toByteArray:()=>xr,uint8ArrayToHex:()=>I1});l();var hc=[];for(let t=0;t<=255;++t){let e=t.toString(16).padStart(2,"0");hc.push(e)}var _C="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function Ye(t){return/^([0-9A-Fa-f])*$/.test(t)}function i1(t){return new Uint8Array(t.match(/.{1,2}/g).map(e=>parseInt(e,16)))}function I1(t){let e=new Uint8Array(t),a=new Array(e.length);for(let r=0;rr+i.byteLength,0),{buffer:a}=t.reduce(({buffer:r,pos:i},d)=>(r.set(new Uint8Array(d),i),{buffer:r,pos:i+d.byteLength}),{buffer:new Uint8Array(e),pos:0});return a}function wa(t){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,t,!0),new Uint8Array(e).reverse()}function T2(t){let e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,BigInt(t),!0),new Uint8Array(e).reverse()}function x4(t){let e=0;for(let a=0;a=256;)t=t>>>8,e.unshift(t&255);return e}async function mc(t){let e=new URL("/api",t);return(0,Ga.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { nearestEndpoints { ip, port } - }`})}).then(xr).then(a=>a.errors||a.data.nearestEndpoints==null?[]:a.data.nearestEndpoints)}async function mc(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Ye(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=I1(t));let a=new URL("/api",e);return(0,$a.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(wr).then(a=>a.errors||a.data.nearestEndpoints==null?[]:a.data.nearestEndpoints)}async function vc(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Ye(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=I1(t));let a=new URL("/api",e);return(0,Ga.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { lastTransaction(address: "${t}") { chainLength } - }`})}).then(xr).then(r=>r.errors||r.data.lastTransaction==null?0:r.data.lastTransaction.chainLength)}async function vc(t){let e=new URL("/api",t);return(0,$a.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(wr).then(r=>r.errors||r.data.lastTransaction==null?0:r.data.lastTransaction.chainLength)}async function bc(t){let e=new URL("/api",t);return(0,Ga.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { sharedSecrets { storageNoncePublicKey } - }`})}).then(xr).then(a=>a.errors||a.data.sharedSecrets==null?"":a.data.sharedSecrets.storageNoncePublicKey)}async function bc(t,e){let a=new URL("/api/transaction_fee",e);return(0,$a.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(xr)}async function gc(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Ye(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=I1(t));let a=new URL("/api",e);return(0,$a.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(wr).then(a=>a.errors||a.data.sharedSecrets==null?"":a.data.sharedSecrets.storageNoncePublicKey)}async function gc(t,e){let a=new URL("/api/transaction_fee",e);return(0,Ga.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(wr)}async function yc(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Ye(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=I1(t));let a=new URL("/api",e);return(0,Ga.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { transaction(address: "${t}") { data { ownerships { @@ -31,12 +31,12 @@ var Jm=Object.create;var nd=Object.defineProperty;var Xm=Object.getOwnPropertyDe } } } - }`})}).then(xr).then(r=>r.errors||r.data==null?[]:r.data.transaction.data.ownerships)}async function yc(t,e){if(typeof t!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"&&!Ye(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=I1(t));let a=new URL("/api",e);return(0,$a.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(wr).then(r=>r.errors||r.data==null?[]:r.data.transaction.data.ownerships)}async function xc(t,e){if(typeof t!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"&&!Ye(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=I1(t));let a=new URL("/api",e);return(0,Ga.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { token(address: "${t}") { genesis, name, symbol, supply, type properties, collection, id, decimals } - }`})}).then(xr).then(r=>r.errors||r.data==null?[]:r.data.token)}async function xc(t,e,a){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof t=="string"&&!Ye(t))throw"'originPublicKey' must be in hexadecimal form if it's string";if(t instanceof Uint8Array&&(t=I1(t)),typeof e!="string")throw"'certificate' must be a string";let r=new URL("/api/origin_key",a);return(0,$a.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:t,certificate:e})}).then(xr)}async function Ac(t,e=void 0){let a;e===void 0?a=`query { + }`})}).then(wr).then(r=>r.errors||r.data==null?[]:r.data.token)}async function wc(t,e,a){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof t=="string"&&!Ye(t))throw"'originPublicKey' must be in hexadecimal form if it's string";if(t instanceof Uint8Array&&(t=I1(t)),typeof e!="string")throw"'certificate' must be a string";let r=new URL("/api/origin_key",a);return(0,Ga.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:t,certificate:e})}).then(wr)}async function Ac(t,e=void 0){let a;e===void 0?a=`query { oracleData { timestamp, services { @@ -55,7 +55,7 @@ var Jm=Object.create;var nd=Object.defineProperty;var Xm=Object.getOwnPropertyDe } } } - }`;let r=new URL("/api",t);return(0,$a.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:a})}).then(xr).then(i=>i.data.oracleData==null?{}:i.data.oracleData)}async function wc(t,e){let{host:a,protocol:r}=new URL(t),i=r=="https:"?"wss":"ws",d=(0,Si.absintheCreate)(`${i}://${a}/socket`),f=(0,Si.absintheSend)(d,` + }`;let r=new URL("/api",t);return(0,Ga.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:a})}).then(wr).then(i=>i.data.oracleData==null?{}:i.data.oracleData)}async function _c(t,e){let{host:a,protocol:r}=new URL(t),i=r=="https:"?"wss":"ws",d=(0,Si.absintheCreate)(`${i}://${a}/socket`),s=(0,Si.absintheSend)(d,` subscription { oracleUpdate { timestamp, @@ -67,21 +67,21 @@ var Jm=Object.create;var nd=Object.defineProperty;var Xm=Object.getOwnPropertyDe } } } - `);return(0,Si.absintheObserve)(d,f,h=>{e(h.data.oracelUpdate)})}async function xr(t){return new Promise(function(e,a){t.status>=200&&t.status<=299?t.json().then(e):a(t.statusText)})}var ss={};op(ss,{IDToCurve:()=>ns,IDToHashAlgo:()=>ps,aesDecrypt:()=>dp,aesEncrypt:()=>ip,curveToID:()=>ki,deriveAddress:()=>di,deriveKeyPair:()=>pi,ecDecrypt:()=>rp,ecEncrypt:()=>ap,generateDeterministicKeyPair:()=>tp,getHashDigest:()=>jm,hash:()=>ep,hashAlgoToID:()=>Z2,randomSecretKey:()=>X2,sign:()=>ji,verify:()=>$D});l();var B1=require("crypto"),Fm=fa(Jh(),1),Lm=fa(Xh(),1),Qm=fa(Am(),1),td=fa(Pm(),1),as=fa(Rm(),1);var{ec:km,eddsa:kD}=Fm.default,rs=new kD("ed25519"),is=new km("p256"),ds=new km("secp256k1"),{sha3_512:jD,sha3_256:HD}=Lm.default,KD=1;function X2(){return new Uint8Array((0,B1.randomBytes)(32))}function Z2(t){switch(t){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function ps(t){switch(t){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function ki(t){switch(t){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function ns(t){switch(t){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function di(t,e,a="ed25519",r="sha256"){let{publicKey:i}=pi(t,e,a),d=ki(a),n=ep(i,r);return g1([Uint8Array.from([d]),Uint8Array.from(n)])}function ep(t,e="sha256"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof t=="string"&&(Ye(t)?t=i1(t):t=new TextEncoder().encode(t));let a=Z2(e),r=jm(t,e);return g1([Uint8Array.from([a]),Uint8Array.from(r)])}function jm(t,e){switch(e){case"sha256":{let a=(0,B1.createHash)(e);return a.update(t),a.digest()}case"sha512":{let a=(0,B1.createHash)(e);return a.update(t),a.digest()}case"sha3-256":{let a=HD.create();return a.update(t),a.digest()}case"sha3-512":{let a=jD.create();return a.update(t),a.digest()}case"blake2b":{let a=new Uint8Array(64),r=(0,Qm.default)(64);return r.update(t),r.digest(a),a}default:throw"Hash algorithm not supported"}}function pi(t,e,a="ed25519"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'seed must be a string";if(typeof e!="number"||e<0)throw"'index' must be a positive number";let r=GD(t,e);return tp(r,a,KD)}function tp(t,e,a){let r=ki(e),{publicKey:i,privateKey:d}=zD(t,e);return{privateKey:g1([Uint8Array.from([r]),Uint8Array.from([a]),d]),publicKey:g1([Uint8Array.from([r]),Uint8Array.from([a]),i])}}function zD(t,e){switch(e){case"ed25519":{let a=rs.keyFromSecret(t),r=new Uint8Array(a.pubBytes());return{privateKey:t,publicKey:r}}case"P256":{let a=is.keyFromPrivate(t),r=i1(a.getPublic().encode("hex"));return{privateKey:t,publicKey:r}}case"secp256k1":{let a=ds.keyFromPrivate(t),r=i1(a.getPublic().encode("hex"));return{privateKey:t,publicKey:r}}default:throw"Curve not supported"}}function ji(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof t=="string"&&(Ye(t)?t=i1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Ye(e))e=i1(e);else throw"'privateKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let i=rs.keyFromSecret(r);return Uint8Array.from(i.sign(t).toBytes())}case 1:{let i=(0,B1.createHash)("sha256").update(t).digest(),d=is.keyFromPrivate(r);return Uint8Array.from(d.sign(i).toDER())}case 2:{let i=(0,B1.createHash)("sha256").update(t).digest(),d=ds.keyFromPrivate(r);return Uint8Array.from(d.sign(i).toDER())}default:throw"Curve not supported"}}function $D(t,e,a){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string")if(Ye(t))t=i1(t);else throw"'signature' must be an hexadecimal string";if(typeof e=="string"&&(Ye(e)?e=i1(e):e=new TextEncoder().encode(e)),typeof a=="string")if(Ye(a))a=i1(a);else throw"'publicKey' must be an hexadecimal string";let r=a.slice(0,1),i=a.slice(2,a.length);switch(r[0]){case 0:return rs.keyFromPublic(Array.from(i)).verify(e,Array.from(t));case 1:{let d=(0,B1.createHash)("sha256").update(e).digest();return is.keyFromPublic(i).verify(d,t)}case 2:{let d=(0,B1.createHash)("sha256").update(e).digest();return ds.keyFromPublic(i).verify(d,t)}default:throw"Curve not supported"}}function ap(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string"&&(Ye(t)?t=i1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Ye(e))e=i1(e);else throw"'publicKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let{public:i,private:d}=td.generateKeyPair((0,B1.randomBytes)(32)),n=as.default.convertPublicKey(r),f=td.sharedKey(d,n),{aesKey:h,iv:v}=Qi(f),{tag:I,encrypted:S}=W2(t,h,v);return g1([Uint8Array.from(i),I,S])}case 1:{let i=(0,B1.createECDH)("prime256v1");i.generateKeys();let d=i.computeSecret(r),{aesKey:n,iv:f}=Qi(d),{tag:h,encrypted:v}=W2(t,n,f);return g1([Uint8Array.from(i.getPublicKey()),h,v])}case 2:{let i=(0,B1.createECDH)("secp256k1");i.generateKeys();let d=i.computeSecret(r),{aesKey:n,iv:f}=Qi(d),{tag:h,encrypted:v}=W2(t,n,f);return g1([Uint8Array.from(i.getPublicKey()),h,v])}default:throw"Curve not supported"}}function rp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string")if(Ye(t))t=i1(t);else throw"'ciphertext' must be an hexadecimal string";if(typeof e=="string")if(Ye(e))e=i1(e);else throw"'privateKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let i=t.slice(0,32),d=t.slice(32,32+16),n=t.slice(32+16,t.length),f=as.default.convertSecretKey(r),h=td.sharedKey(f,i),{aesKey:v,iv:I}=Qi(h);return J2(n,v,I,d)}case 1:{let i=t.slice(0,65),d=t.slice(65,65+16),n=t.slice(65+16,t.length),f=(0,B1.createECDH)("prime256v1");f.setPrivateKey(r);let h=f.computeSecret(i),{aesKey:v,iv:I}=Qi(h);return J2(n,v,I,d)}case 2:{let i=t.slice(0,65),d=t.slice(65,65+16),n=t.slice(65+16,t.length),f=(0,B1.createECDH)("secp256k1");f.setPrivateKey(r);let h=f.computeSecret(i),{aesKey:v,iv:I}=Qi(h);return J2(n,v,I,d)}default:throw"Curve not supported"}}function ip(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string"&&(Ye(t)?t=i1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Ye(e))e=i1(e);else throw"'key' must be an hexadecimal string";let a=(0,B1.randomBytes)(12),{tag:r,encrypted:i}=W2(t,e,a);return g1([new Uint8Array(a),r,i])}function dp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string")if(Ye(t))t=i1(t);else throw"'cipherText' must be an hexadecimal string";if(typeof e=="string")if(Ye(e))e=i1(e);else throw"'key' must be an be hexadecimal string";let a=t.slice(0,12),r=t.slice(12,12+16),i=t.slice(28,t.length);return J2(i,e,a,r)}function GD(t,e){Ye(t)&&(t=i1(t));let a=(0,B1.createHash)("sha512").update(t).digest(),r=a.subarray(0,32),i=a.subarray(32,64),d=ya(e),n=g1([r,d]);return(0,B1.createHmac)("sha512",i).update(n).digest().subarray(0,32)}function Qi(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof t=="string")if(Ye(t))t=i1(t);else throw"'sharedKey' must be an hexadecimal string";let e=(0,B1.createHash)("sha256").update(t).digest(),a=(0,B1.createHmac)("sha256",e).update("0").digest().subarray(0,32),r=(0,B1.createHmac)("sha256",a).update("1").digest().subarray(0,32);return{iv:a,aesKey:r}}function W2(t,e,a){let r=(0,B1.createCipheriv)("aes-256-gcm",e,a),i=r.update(t);return i=g1([i,r.final()]),{tag:new Uint8Array(r.getAuthTag()),encrypted:i}}function J2(t,e,a,r){let i=(0,B1.createDecipheriv)("aes-256-gcm",e,a);i.setAuthTag(r);let d=[i.update(t)];return d.push(i.final()),g1(d)}l();l();var sp=require("crypto"),zi=fa($m(),1),ZD=0,qr=class{constructor(e,a=1){e instanceof Uint8Array||(e=new TextEncoder().encode(e)),this.version=a,this.seed=e,this.services={}}addService(e,a,r="ed25519",i="sha256"){return this.services[e]={derivationPath:a,curve:r,hashAlgo:i},this}encode(){let e=[];for(let a in this.services){let{derivationPath:r,curve:i,hashAlgo:d}=this.services[a];e.push(g1([Uint8Array.from([a.length]),new TextEncoder().encode(a),Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([ki(i)]),Uint8Array.from([Z2(d)])]))}return g1([ya(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),g1(e)])}deriveKeypair(e,a=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:r,curve:i}=this.services[e];return cs(this.seed,r,a,i)}deriveAddress(e,a=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:r,curve:i,hashAlgo:d}=this.services[e],{publicKey:n}=cs(this.seed,r,a,i),f=ki(i),h=ep(n,d);return g1([Uint8Array.from([f]),Uint8Array.from(h)])}buildTransaction(e,a,r){let i=this.deriveKeypair(a,r),d=this.deriveAddress(a,r+1);e.setAddress(d);let n=e.previousSignaturePayload(),f=ji(n,i.privateKey);return e.setPreviousSignatureAndPreviousPublicKey(f,i.publicKey),e}static decode(e){var n=0,{bytes:a,pos:n}=np(e,n,4),{byte:r,pos:n}=Ki(e,n,1),{bytes:i,pos:n}=np(e,n,r),{byte:d,pos:n}=Ki(e,n,1);let f=new qr(i,v4(a));for(let V=0;Vv.replace("'","")).at(1);if(h=="650"){let{publicKey:v}=cs(this.seed,n,0,f);r.push({id:`did:archethic:${a}#${d}`,type:"JsonWebKey2020",publicKeyJwk:tM(v,d),controller:`did:archethic:${a}`}),i.push(`did:archethic:${a}#${d}`)}else throw"Purpose '"+h+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${a}`,authentication:i,verificationMethod:r}}};function Ki(t,e,a){return{byte:t.slice(e,e+a)[0],pos:e+a}}function np(t,e,a){return{bytes:t.slice(e,e+a),pos:e+a}}function cs(t,e,a,r="ed25519"){let i=(0,sp.createHash)("sha256").update(eM(e,a)).digest(),d=(0,sp.createHmac)("sha512",t).update(i).digest().subarray(0,32);return tp(d,r,ZD)}function eM(t,e){return t.split("/").slice(0,-1).concat(`${e}`).join("/")}function tM(t,e){let a=t[0],r=t.slice(2,t.length);switch(a){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,zi.default)(r),kid:e};case 1:return x=r.subarray(16),y=r.subarray(-16),{kty:"EC",crv:"P-256",x:(0,zi.default)(x),y:(0,zi.default)(y),kid:e};case 2:return x=r.subarray(16),y=r.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,zi.default)(x),y:(0,zi.default)(y),kid:e}}}var ad=class{constructor(e){this.core=e}newKeychainTransaction(e,a){let r=new qr(e);r.addService("uco","m/650'/0/0");let i=X2(),d=a.map(n=>({publicKey:n,encryptedSecretKey:ap(i,n)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(r.toDID())).addOwnership(ip(r.encode(),i),d).build(e,0)}newAccessTransaction(e,a){let r=X2(),{publicKey:i}=pi(e,0),d=ap(r,i),n=[{publicKey:i,encryptedSecretKey:d}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(ip(a,r),n).build(e,0)}async getKeychain(e){let{publicKey:a,privateKey:r}=pi(e,0),i=di(e,1),d=await this.core.transaction.getTransactionOwnerships(i);if(d.length==0)throw"Keychain doesn't exist";let{secret:n,authorizedPublicKeys:f}=d[0],{encryptedSecretKey:h}=f.find(X=>X.publicKey.toLocaleUpperCase()==I1(a).toLocaleUpperCase()),v=rp(h,r),I=dp(n,v),S=await this.core.transaction.getTransactionOwnerships(I),{secret:O,authorizedPublicKeys:R}=S[0],{encryptedSecretKey:V}=R.find(({publicKey:X})=>X.toUpperCase()==I1(a).toUpperCase()),L=rp(V,r),$=dp(O,L);return qr.decode($)}};l();var rd=class{constructor(e){this.core=e}async getStorageNoncePublicKey(){return this.core.requestNode(e=>vc(e))}async addOriginKey(e,a){return this.core.requestNode(r=>xc(e,a,r))}async getOracleData(e=void 0){return this.core.requestNode(a=>Ac(a,e))}async subscribeToOracleUpdates(e,a){return this.core.requestNode(r=>wc(r,e,a))}async getToken(e){return this.core.requestNode(a=>yc(e,a))}};l();l();var Gm=1,Ym={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,code_proposal:7,code_approval:8},id=class{constructor(e){this.version=Gm,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(e){if(!Object.keys(Ym).includes(e))throw"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'";return this.type=e,this}setCode(e){if(typeof e!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(e),this}setContent(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof e=="string"&&(e=new TextEncoder().encode(e)),this.data.content=e,this}addOwnership(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof e=="string"&&(Ye(e)?e=i1(e):e=new TextEncoder().encode(e)),typeof a!="object"&&!(a instanceof Array))throw"'authorizedKeys must be an array";let r=[];return a.reduce((i,{publicKey:d,encryptedSecretKey:n})=>{if(typeof d!="string"&&!(d instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof d=="string"){if(!Ye(d))throw"Authorized public key must be an hexadecimal";d=i1(d)}if(typeof n!="string"&&!(n instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof n=="string"){if(!Ye(n))throw"Encrypted secret key must be an hexadecimal";n=i1(n)}return i[d]||(r.push({publicKey:d,encryptedSecretKey:n}),i[d]=n),i},{}),this.data.ownerships.push({secret:e,authorizedKeys:r}),this}addUCOTransfer(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'to' must be in hexadecimal form if it's string";e=i1(e)}if(isNaN(a)||a<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:e,amount:a}),this}addTokenTransfer(e,a,r,i=0){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'to' must be in hexadecimal form if it's string";e=i1(e)}if(isNaN(a)||a<=0)throw"Token transfer amount must be a positive number";if(typeof r=="string"){if(!Ye(r))throw"'tokenAddress' must be in hexadecimal form if it's string";r=i1(r)}if(isNaN(i)||i<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:e,amount:a,token:r,tokenId:i}),this}addRecipient(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'to' must be in hexadecimal form if it's string";e=i1(e)}return this.data.recipients.push(e),this}setPreviousSignatureAndPreviousPublicKey(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'previous Signature' must be in hexadecimal form if it's string";e=i1(e)}if(typeof a=="string"){if(!Ye(a))throw"'previous Public Key' must be in hexadecimal form if it's string";a=i1(a)}return this.previousPublicKey=a,this.previousSignature=e,this}setAddress(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'addr' must be in hexadecimal form if it's string";e=i1(e)}return this.address=e,this}build(e,a,r,i){let d=pi(e,a,r),n=di(e,a+1,r,i);this.address=n,this.previousPublicKey=d.publicKey;let f=this.previousSignaturePayload();return this.previousSignature=ji(f,d.privateKey),this}originSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string"&&!Ye(e))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=ji(this.originSignaturePayload(),e),this}setOriginSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'Signature' must be in hexadecimal form if it's string";e=i1(e)}return this.originSignature=e,this}toJSON(){return JSON.stringify({version:this.version,address:I1(this.address),type:this.type,data:{content:I1(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:e,authorizedKeys:a})=>({secret:I1(e),authorizedKeys:a.map(({publicKey:r,encryptedSecretKey:i})=>({publicKey:I1(r),encryptedSecretKey:I1(i)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(e=>({to:I1(e.to),amount:e.amount}))},token:{transfers:this.data.ledger.token.transfers.map(e=>({to:I1(e.to),amount:e.amount,tokenAddress:I1(e.token),tokenId:e.tokenId}))}},recipients:this.data.recipients.map(I1)},previousPublicKey:I1(this.previousPublicKey),previousSignature:I1(this.previousSignature),originSignature:this.originSignature&&I1(this.originSignature)})}previousSignaturePayload(){let e=ya(this.data.code.length),a=this.data.content.length;this.data.content instanceof ArrayBuffer&&(a=this.data.content.byteLength);let r=ya(a),i=this.data.ownerships.map(({secret:S,authorizedKeys:O})=>{let R=Uint8Array.from(yr(O.length)),V=[Uint8Array.from([R.length]),R];return O.sort((L,$)=>I1(L.publicKey).localeCompare(I1($.publicKey))),O.forEach(({publicKey:L,encryptedSecretKey:$})=>{V.push(L),V.push($)}),g1([ya(S.byteLength),S,g1(V)])}),d=this.data.ledger.uco.transfers.map(function(S){return g1([S.to,E2(S.amount)])}),n=this.data.ledger.token.transfers.map(function(S){let O=Uint8Array.from(yr(S.tokenId));return g1([S.token,S.to,E2(S.amount),Uint8Array.from([O.length]),O])}),f=Uint8Array.from(yr(this.data.ownerships.length)),h=Uint8Array.from(yr(this.data.ledger.uco.transfers.length)),v=Uint8Array.from(yr(this.data.ledger.token.transfers.length)),I=Uint8Array.from(yr(this.data.recipients.length));return g1([ya(Gm),this.address,Uint8Array.from([Ym[this.type]]),e,this.data.code,r,this.data.content,Uint8Array.from([f.length]),f,g1(i),Uint8Array.from([h.length]),h,g1(d),Uint8Array.from([v.length]),v,g1(n),Uint8Array.from([I.length]),I,g1(this.data.recipients)])}originSignaturePayload(){let e=this.previousSignaturePayload();return g1([e,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};l();var Wm=fa(Ip(),1);var q1=fa(m4(),1),hs="SENDER",dd=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(e,a){if(typeof e!="string")throw"'event' must be a string";if(typeof a!="function")throw"'func' must be a function";switch(e){case"sent":this.onSent.push(a);break;case"confirmation":this.onConfirmation.push(a);break;case"requiredConfirmation":this.onRequiredConfirmation.push(a);break;case"fullConfirmation":this.onFullConfirmation.push(a);break;case"error":this.onError.push(a);break;case"timeout":this.onTimeout.push(a);break;default:throw"Event "+e+" is not supported"}return this}async send(e,a,r=100,i=60){if(typeof e!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof a!="string")throw"'endpoint' must be a string";if(typeof r!="number"||r<0&&r>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof i!="number"||i<=0)throw"'timeout' must be an integer greater than 0";let d=I1(e.address),{host:n,protocol:f}=new URL(a),h=f=="https:"?"wss":"ws";this.absintheSocket=(0,q1.absintheCreate)(`${h}://${n}/socket`);try{this.confirmationNotifier=await aM(d,this.absintheSocket,(v,I)=>iM.call(this,r,v,I)),this.errorNotifier=await rM(d,this.absintheSocket,dM.bind(this))}catch(v){return this.onError.forEach(I=>I(hs,v.message,this)),this}return(0,Wm.default)(a+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(v=>pM.call(this,i,v)).catch(v=>this.onError.forEach(I=>I(hs,v,this))),this}unsubscribe(e=void 0){if(e)switch(e){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+e+" is not supported"}else(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function aM(t,e,a){let r=` + `);return(0,Si.absintheObserve)(d,s,c=>{e(c.data.oracelUpdate)})}async function wr(t){return new Promise(function(e,a){t.status>=200&&t.status<=299?t.json().then(e):a(t.statusText)})}var ls={};vp(ls,{IDToCurve:()=>fs,IDToHashAlgo:()=>os,aesDecrypt:()=>lp,aesEncrypt:()=>fp,curveToID:()=>ki,deriveAddress:()=>pi,deriveKeyPair:()=>ni,ecDecrypt:()=>op,ecEncrypt:()=>sp,generateDeterministicKeyPair:()=>np,getHashDigest:()=>$m,hash:()=>pp,hashAlgoToID:()=>dp,randomSecretKey:()=>ip,sign:()=>ji,verify:()=>BM});l();var T1=require("crypto"),jm=la(Xh(),1),Hm=la(Zh(),1),Km=la(Sm(),1),rd=la(Fm(),1),ds=la(km(),1);var{ec:zm,eddsa:CM}=jm.default,ps=new CM("ed25519"),ns=new zm("p256"),ss=new zm("secp256k1"),{sha3_512:NM,sha3_256:DM}=Hm.default,MM=1;function ip(){return new Uint8Array((0,T1.randomBytes)(32))}function dp(t){switch(t){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function os(t){switch(t){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function ki(t){switch(t){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function fs(t){switch(t){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function pi(t,e,a="ed25519",r="sha256"){let{publicKey:i}=ni(t,e,a),d=ki(a),n=pp(i,r);return y1([Uint8Array.from([d]),Uint8Array.from(n)])}function pp(t,e="sha256"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof t=="string"&&(Ye(t)?t=i1(t):t=new TextEncoder().encode(t));let a=dp(e),r=$m(t,e);return y1([Uint8Array.from([a]),Uint8Array.from(r)])}function $m(t,e){switch(e){case"sha256":{let a=(0,T1.createHash)(e);return a.update(t),a.digest()}case"sha512":{let a=(0,T1.createHash)(e);return a.update(t),a.digest()}case"sha3-256":{let a=DM.create();return a.update(t),a.digest()}case"sha3-512":{let a=NM.create();return a.update(t),a.digest()}case"blake2b":{let a=new Uint8Array(64),r=(0,Km.default)(64);return r.update(t),r.digest(a),a}default:throw"Hash algorithm not supported"}}function ni(t,e,a="ed25519"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'seed must be a string";if(typeof e!="number"||e<0)throw"'index' must be a positive number";let r=qM(t,e);return np(r,a,MM)}function np(t,e,a){let r=ki(e),{publicKey:i,privateKey:d}=TM(t,e);return{privateKey:y1([Uint8Array.from([r]),Uint8Array.from([a]),d]),publicKey:y1([Uint8Array.from([r]),Uint8Array.from([a]),i])}}function TM(t,e){switch(e){case"ed25519":{let a=ps.keyFromSecret(t),r=new Uint8Array(a.pubBytes());return{privateKey:t,publicKey:r}}case"P256":{let a=ns.keyFromPrivate(t),r=i1(a.getPublic().encode("hex"));return{privateKey:t,publicKey:r}}case"secp256k1":{let a=ss.keyFromPrivate(t),r=i1(a.getPublic().encode("hex"));return{privateKey:t,publicKey:r}}default:throw"Curve not supported"}}function ji(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof t=="string"&&(Ye(t)?t=i1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Ye(e))e=i1(e);else throw"'privateKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let i=ps.keyFromSecret(r);return Uint8Array.from(i.sign(t).toBytes())}case 1:{let i=(0,T1.createHash)("sha256").update(t).digest(),d=ns.keyFromPrivate(r);return Uint8Array.from(d.sign(i).toDER())}case 2:{let i=(0,T1.createHash)("sha256").update(t).digest(),d=ss.keyFromPrivate(r);return Uint8Array.from(d.sign(i).toDER())}default:throw"Curve not supported"}}function BM(t,e,a){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string")if(Ye(t))t=i1(t);else throw"'signature' must be an hexadecimal string";if(typeof e=="string"&&(Ye(e)?e=i1(e):e=new TextEncoder().encode(e)),typeof a=="string")if(Ye(a))a=i1(a);else throw"'publicKey' must be an hexadecimal string";let r=a.slice(0,1),i=a.slice(2,a.length);switch(r[0]){case 0:return ps.keyFromPublic(Array.from(i)).verify(e,Array.from(t));case 1:{let d=(0,T1.createHash)("sha256").update(e).digest();return ns.keyFromPublic(i).verify(d,t)}case 2:{let d=(0,T1.createHash)("sha256").update(e).digest();return ss.keyFromPublic(i).verify(d,t)}default:throw"Curve not supported"}}function sp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string"&&(Ye(t)?t=i1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Ye(e))e=i1(e);else throw"'publicKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let{public:i,private:d}=rd.generateKeyPair((0,T1.randomBytes)(32)),n=ds.default.convertPublicKey(r),s=rd.sharedKey(d,n),{aesKey:c,iv:v}=Qi(s),{tag:I,encrypted:S}=ap(t,c,v);return y1([Uint8Array.from(i),I,S])}case 1:{let i=(0,T1.createECDH)("prime256v1");i.generateKeys();let d=i.computeSecret(r),{aesKey:n,iv:s}=Qi(d),{tag:c,encrypted:v}=ap(t,n,s);return y1([Uint8Array.from(i.getPublicKey()),c,v])}case 2:{let i=(0,T1.createECDH)("secp256k1");i.generateKeys();let d=i.computeSecret(r),{aesKey:n,iv:s}=Qi(d),{tag:c,encrypted:v}=ap(t,n,s);return y1([Uint8Array.from(i.getPublicKey()),c,v])}default:throw"Curve not supported"}}function op(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string")if(Ye(t))t=i1(t);else throw"'ciphertext' must be an hexadecimal string";if(typeof e=="string")if(Ye(e))e=i1(e);else throw"'privateKey' must be an hexadecimal string";let a=e.slice(0,1),r=e.slice(2,e.length);switch(a[0]){case 0:{let i=t.slice(0,32),d=t.slice(32,32+16),n=t.slice(32+16,t.length),s=ds.default.convertSecretKey(r),c=rd.sharedKey(s,i),{aesKey:v,iv:I}=Qi(c);return rp(n,v,I,d)}case 1:{let i=t.slice(0,65),d=t.slice(65,65+16),n=t.slice(65+16,t.length),s=(0,T1.createECDH)("prime256v1");s.setPrivateKey(r);let c=s.computeSecret(i),{aesKey:v,iv:I}=Qi(c);return rp(n,v,I,d)}case 2:{let i=t.slice(0,65),d=t.slice(65,65+16),n=t.slice(65+16,t.length),s=(0,T1.createECDH)("secp256k1");s.setPrivateKey(r);let c=s.computeSecret(i),{aesKey:v,iv:I}=Qi(c);return rp(n,v,I,d)}default:throw"Curve not supported"}}function fp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string"&&(Ye(t)?t=i1(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Ye(e))e=i1(e);else throw"'key' must be an hexadecimal string";let a=(0,T1.randomBytes)(12),{tag:r,encrypted:i}=ap(t,e,a);return y1([new Uint8Array(a),r,i])}function lp(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string")if(Ye(t))t=i1(t);else throw"'cipherText' must be an hexadecimal string";if(typeof e=="string")if(Ye(e))e=i1(e);else throw"'key' must be an be hexadecimal string";let a=t.slice(0,12),r=t.slice(12,12+16),i=t.slice(28,t.length);return rp(i,e,a,r)}function qM(t,e){Ye(t)&&(t=i1(t));let a=(0,T1.createHash)("sha512").update(t).digest(),r=a.subarray(0,32),i=a.subarray(32,64),d=wa(e),n=y1([r,d]);return(0,T1.createHmac)("sha512",i).update(n).digest().subarray(0,32)}function Qi(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof t=="string")if(Ye(t))t=i1(t);else throw"'sharedKey' must be an hexadecimal string";let e=(0,T1.createHash)("sha256").update(t).digest(),a=(0,T1.createHmac)("sha256",e).update("0").digest().subarray(0,32),r=(0,T1.createHmac)("sha256",a).update("1").digest().subarray(0,32);return{iv:a,aesKey:r}}function ap(t,e,a){let r=(0,T1.createCipheriv)("aes-256-gcm",e,a),i=r.update(t);return i=y1([i,r.final()]),{tag:new Uint8Array(r.getAuthTag()),encrypted:i}}function rp(t,e,a,r){let i=(0,T1.createDecipheriv)("aes-256-gcm",e,a);i.setAuthTag(r);let d=[i.update(t)];return d.push(i.final()),y1(d)}l();l();var hp=require("crypto"),zi=la(Jm(),1),RM=0,qr=class{constructor(e,a=1){e instanceof Uint8Array||(e=new TextEncoder().encode(e)),this.version=a,this.seed=e,this.services={}}addService(e,a,r="ed25519",i="sha256"){return this.services[e]={derivationPath:a,curve:r,hashAlgo:i},this}encode(){let e=[];for(let a in this.services){let{derivationPath:r,curve:i,hashAlgo:d}=this.services[a];e.push(y1([Uint8Array.from([a.length]),new TextEncoder().encode(a),Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([ki(i)]),Uint8Array.from([dp(d)])]))}return y1([wa(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),y1(e)])}deriveKeypair(e,a=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:r,curve:i}=this.services[e];return vs(this.seed,r,a,i)}deriveAddress(e,a=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:r,curve:i,hashAlgo:d}=this.services[e],{publicKey:n}=vs(this.seed,r,a,i),s=ki(i),c=pp(n,d);return y1([Uint8Array.from([s]),Uint8Array.from(c)])}buildTransaction(e,a,r){let i=this.deriveKeypair(a,r),d=this.deriveAddress(a,r+1);e.setAddress(d);let n=e.previousSignaturePayload(),s=ji(n,i.privateKey);return e.setPreviousSignatureAndPreviousPublicKey(s,i.publicKey),e}static decode(e){var n=0,{bytes:a,pos:n}=cp(e,n,4),{byte:r,pos:n}=Ki(e,n,1),{bytes:i,pos:n}=cp(e,n,r),{byte:d,pos:n}=Ki(e,n,1);let s=new qr(i,x4(a));for(let V=0;Vv.replace("'","")).at(1);if(c=="650"){let{publicKey:v}=vs(this.seed,n,0,s);r.push({id:`did:archethic:${a}#${d}`,type:"JsonWebKey2020",publicKeyJwk:LM(v,d),controller:`did:archethic:${a}`}),i.push(`did:archethic:${a}#${d}`)}else throw"Purpose '"+c+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${a}`,authentication:i,verificationMethod:r}}};function Ki(t,e,a){return{byte:t.slice(e,e+a)[0],pos:e+a}}function cp(t,e,a){return{bytes:t.slice(e,e+a),pos:e+a}}function vs(t,e,a,r="ed25519"){let i=(0,hp.createHash)("sha256").update(FM(e,a)).digest(),d=(0,hp.createHmac)("sha512",t).update(i).digest().subarray(0,32);return np(d,r,RM)}function FM(t,e){return t.split("/").slice(0,-1).concat(`${e}`).join("/")}function LM(t,e){let a=t[0],r=t.slice(2,t.length);switch(a){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,zi.default)(r),kid:e};case 1:return x=r.subarray(16),y=r.subarray(-16),{kty:"EC",crv:"P-256",x:(0,zi.default)(x),y:(0,zi.default)(y),kid:e};case 2:return x=r.subarray(16),y=r.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,zi.default)(x),y:(0,zi.default)(y),kid:e}}}var id=class{constructor(e){this.core=e}newKeychainTransaction(e,a){let r=new qr(e);r.addService("uco","m/650'/0/0");let i=ip(),d=a.map(n=>({publicKey:n,encryptedSecretKey:sp(i,n)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(r.toDID())).addOwnership(fp(r.encode(),i),d).build(e,0)}newAccessTransaction(e,a){let r=ip(),{publicKey:i}=ni(e,0),d=sp(r,i),n=[{publicKey:i,encryptedSecretKey:d}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(fp(a,r),n).build(e,0)}async getKeychain(e){let{publicKey:a,privateKey:r}=ni(e,0),i=pi(e,1),d=await this.core.transaction.getTransactionOwnerships(i);if(d.length==0)throw"Keychain doesn't exist";let{secret:n,authorizedPublicKeys:s}=d[0],{encryptedSecretKey:c}=s.find(J=>J.publicKey.toLocaleUpperCase()==I1(a).toLocaleUpperCase()),v=op(c,r),I=lp(n,v),S=await this.core.transaction.getTransactionOwnerships(I),{secret:O,authorizedPublicKeys:R}=S[0],{encryptedSecretKey:V}=R.find(({publicKey:J})=>J.toUpperCase()==I1(a).toUpperCase()),L=op(V,r),G=lp(O,L);return qr.decode(G)}};l();var dd=class{constructor(e){this.core=e}async getStorageNoncePublicKey(){return this.core.requestNode(e=>bc(e))}async addOriginKey(e,a){return this.core.requestNode(r=>wc(e,a,r))}async getOracleData(e=void 0){return this.core.requestNode(a=>Ac(a,e))}async subscribeToOracleUpdates(e,a){return this.core.requestNode(r=>_c(r,e,a))}async getToken(e){return this.core.requestNode(a=>xc(e,a))}};l();l();var Xm=1,bs={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,data:250,contract:249,code_proposal:7,code_approval:8},pd=class{constructor(e){this.version=Xm,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(e){if(!Object.keys(bs).includes(e))throw"Transaction type must be in "+Object.keys(bs).map(a=>`'${a}'`).join(", ");return this.type=e,this}setCode(e){if(typeof e!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(e),this}setContent(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof e=="string"&&(e=new TextEncoder().encode(e)),this.data.content=e,this}addOwnership(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof e=="string"&&(Ye(e)?e=i1(e):e=new TextEncoder().encode(e)),typeof a!="object"&&!(a instanceof Array))throw"'authorizedKeys must be an array";let r=[];return a.reduce((i,{publicKey:d,encryptedSecretKey:n})=>{if(typeof d!="string"&&!(d instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof d=="string"){if(!Ye(d))throw"Authorized public key must be an hexadecimal";d=i1(d)}if(typeof n!="string"&&!(n instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof n=="string"){if(!Ye(n))throw"Encrypted secret key must be an hexadecimal";n=i1(n)}return i[d]||(r.push({publicKey:d,encryptedSecretKey:n}),i[d]=n),i},{}),this.data.ownerships.push({secret:e,authorizedKeys:r}),this}addUCOTransfer(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'to' must be in hexadecimal form if it's string";e=i1(e)}if(isNaN(a)||a<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:e,amount:a}),this}addTokenTransfer(e,a,r,i=0){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'to' must be in hexadecimal form if it's string";e=i1(e)}if(isNaN(a)||a<=0)throw"Token transfer amount must be a positive number";if(typeof r=="string"){if(!Ye(r))throw"'tokenAddress' must be in hexadecimal form if it's string";r=i1(r)}if(isNaN(i)||i<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:e,amount:a,token:r,tokenId:i}),this}addRecipient(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'to' must be in hexadecimal form if it's string";e=i1(e)}return this.data.recipients.push(e),this}setPreviousSignatureAndPreviousPublicKey(e,a){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'previous Signature' must be in hexadecimal form if it's string";e=i1(e)}if(typeof a=="string"){if(!Ye(a))throw"'previous Public Key' must be in hexadecimal form if it's string";a=i1(a)}return this.previousPublicKey=a,this.previousSignature=e,this}setAddress(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'addr' must be in hexadecimal form if it's string";e=i1(e)}return this.address=e,this}build(e,a,r,i){let d=ni(e,a,r),n=pi(e,a+1,r,i);this.address=n,this.previousPublicKey=d.publicKey;let s=this.previousSignaturePayload();return this.previousSignature=ji(s,d.privateKey),this}originSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string"&&!Ye(e))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=ji(this.originSignaturePayload(),e),this}setOriginSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof e=="string"){if(!Ye(e))throw"'Signature' must be in hexadecimal form if it's string";e=i1(e)}return this.originSignature=e,this}toJSON(){return JSON.stringify({version:this.version,address:I1(this.address),type:this.type,data:{content:I1(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:e,authorizedKeys:a})=>({secret:I1(e),authorizedKeys:a.map(({publicKey:r,encryptedSecretKey:i})=>({publicKey:I1(r),encryptedSecretKey:I1(i)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(e=>({to:I1(e.to),amount:e.amount}))},token:{transfers:this.data.ledger.token.transfers.map(e=>({to:I1(e.to),amount:e.amount,tokenAddress:I1(e.token),tokenId:e.tokenId}))}},recipients:this.data.recipients.map(I1)},previousPublicKey:I1(this.previousPublicKey),previousSignature:I1(this.previousSignature),originSignature:this.originSignature&&I1(this.originSignature)})}previousSignaturePayload(){let e=wa(this.data.code.length),a=this.data.content.length;this.data.content instanceof ArrayBuffer&&(a=this.data.content.byteLength);let r=wa(a),i=this.data.ownerships.map(({secret:S,authorizedKeys:O})=>{let R=Uint8Array.from(xr(O.length)),V=[Uint8Array.from([R.length]),R];return O.sort((L,G)=>I1(L.publicKey).localeCompare(I1(G.publicKey))),O.forEach(({publicKey:L,encryptedSecretKey:G})=>{V.push(L),V.push(G)}),y1([wa(S.byteLength),S,y1(V)])}),d=this.data.ledger.uco.transfers.map(function(S){return y1([S.to,T2(S.amount)])}),n=this.data.ledger.token.transfers.map(function(S){let O=Uint8Array.from(xr(S.tokenId));return y1([S.token,S.to,T2(S.amount),Uint8Array.from([O.length]),O])}),s=Uint8Array.from(xr(this.data.ownerships.length)),c=Uint8Array.from(xr(this.data.ledger.uco.transfers.length)),v=Uint8Array.from(xr(this.data.ledger.token.transfers.length)),I=Uint8Array.from(xr(this.data.recipients.length));return y1([wa(Xm),this.address,Uint8Array.from([bs[this.type]]),e,this.data.code,r,this.data.content,Uint8Array.from([s.length]),s,y1(i),Uint8Array.from([c.length]),c,y1(d),Uint8Array.from([v.length]),v,y1(n),Uint8Array.from([I.length]),I,y1(this.data.recipients)])}originSignaturePayload(){let e=this.previousSignaturePayload();return y1([e,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};l();var Zm=la(Mp(),1);var B1=la(y4(),1),gs="SENDER",nd=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(e,a){if(typeof e!="string")throw"'event' must be a string";if(typeof a!="function")throw"'func' must be a function";switch(e){case"sent":this.onSent.push(a);break;case"confirmation":this.onConfirmation.push(a);break;case"requiredConfirmation":this.onRequiredConfirmation.push(a);break;case"fullConfirmation":this.onFullConfirmation.push(a);break;case"error":this.onError.push(a);break;case"timeout":this.onTimeout.push(a);break;default:throw"Event "+e+" is not supported"}return this}async send(e,a,r=100,i=60){if(typeof e!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof a!="string")throw"'endpoint' must be a string";if(typeof r!="number"||r<0&&r>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof i!="number"||i<=0)throw"'timeout' must be an integer greater than 0";let d=I1(e.address),{host:n,protocol:s}=new URL(a),c=s=="https:"?"wss":"ws";this.absintheSocket=(0,B1.absintheCreate)(`${c}://${n}/socket`);try{this.confirmationNotifier=await QM(d,this.absintheSocket,(v,I)=>jM.call(this,r,v,I)),this.errorNotifier=await kM(d,this.absintheSocket,HM.bind(this))}catch(v){return this.onError.forEach(I=>I(gs,v.message,this)),this}return(0,Zm.default)(a+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(v=>KM.call(this,i,v)).catch(v=>this.onError.forEach(I=>I(gs,v,this))),this}unsubscribe(e=void 0){if(e)switch(e){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+e+" is not supported"}else(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function QM(t,e,a){let r=` subscription { transactionConfirmed(address: "${t}") { nbConfirmations, maxConfirmations } } - `,i=(0,q1.absintheSend)(e,r);return(0,q1.absintheObserve)(e,i,d=>{if(d.data.transactionConfirmed){let{nbConfirmations:n,maxConfirmations:f}=d.data.transactionConfirmed;a(n,f)}})}async function rM(t,e,a){let r=` + `,i=(0,B1.absintheSend)(e,r);return(0,B1.absintheObserve)(e,i,d=>{if(d.data.transactionConfirmed){let{nbConfirmations:n,maxConfirmations:s}=d.data.transactionConfirmed;a(n,s)}})}async function kM(t,e,a){let r=` subscription { transactionError(address: "${t}") { context, reason } } - `,i=(0,q1.absintheSend)(e,r);return(0,q1.absintheObserve)(e,i,d=>{if(d.data.transactionError){let{context:n,reason:f}=d.data.transactionError;a(n,f)}})}function iM(t,e,a){this.nbConfirmationReceived=e,e==1&&(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(r=>r(e,a,this)),a*(t/100)<=e&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(r=>r(e,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),e==a&&(clearTimeout(this.timeout),(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(r=>r(a,this)))}function dM(t,e){clearTimeout(this.timeout),(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(a=>a(t,e,this))}function pM(t,e){e.status>=200&&e.status<=299?(this.onSent.forEach(a=>a(this)),this.timeout=setTimeout(()=>{(0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(a=>a(this.nbConfirmationReceived,this))},t*1e3)):((0,q1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,q1.absintheCancel)(this.absintheSocket,this.errorNotifier),e.json().then(a=>this.onError.forEach(r=>r(hs,a.status,this))))}var pd=class{constructor(e){this.core=e,this.builder=ms}new(){return new this.builder(this.core)}getTransactionIndex(e){return this.core.requestNode(a=>mc(e,a))}getTransactionFee(e){return this.core.requestNode(a=>bc(e,a))}getTransactionOwnerships(e){return this.core.requestNode(a=>gc(e,a))}},ms=class extends id{constructor(e){super(),this.core=e,this.sender=new dd}send(e,a){this.core.requestNode(r=>this.sender.send(this,r,e,a))}on(e,a){return this.sender.on(e,a),this}unsubscribe(e){return this.sender.unsubscribe(e),this}};var fp=class{constructor(e){this.endpoint=new URL(e),this.transaction=new pd(this),this.account=new ad(this),this.network=new rd(this)}async connect(){let e=await hc(this.endpoint);return this.nearestEndpoints=e.map(({ip:a,port:r})=>`http://${a}:${r}`),this}async requestNode(e){let a=this.nearestEndpoints[0];try{return await e(a)}catch(r){if(console.error(r),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(e)}}};0&&(module.exports={Crypto,Utils}); + `,i=(0,B1.absintheSend)(e,r);return(0,B1.absintheObserve)(e,i,d=>{if(d.data.transactionError){let{context:n,reason:s}=d.data.transactionError;a(n,s)}})}function jM(t,e,a){this.nbConfirmationReceived=e,e==1&&(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(r=>r(e,a,this)),a*(t/100)<=e&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(r=>r(e,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),e==a&&(clearTimeout(this.timeout),(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(r=>r(a,this)))}function HM(t,e){clearTimeout(this.timeout),(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(a=>a(t,e,this))}function KM(t,e){e.status>=200&&e.status<=299?(this.onSent.forEach(a=>a(this)),this.timeout=setTimeout(()=>{(0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(a=>a(this.nbConfirmationReceived,this))},t*1e3)):((0,B1.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,B1.absintheCancel)(this.absintheSocket,this.errorNotifier),e.json().then(a=>this.onError.forEach(r=>r(gs,a.status,this))))}var sd=class{constructor(e){this.core=e,this.builder=ys}new(){return new this.builder(this.core)}getTransactionIndex(e){return this.core.requestNode(a=>vc(e,a))}getTransactionFee(e){return this.core.requestNode(a=>gc(e,a))}getTransactionOwnerships(e){return this.core.requestNode(a=>yc(e,a))}},ys=class extends pd{constructor(e){super(),this.core=e,this.sender=new nd}send(e,a){this.core.requestNode(r=>this.sender.send(this,r,e,a))}on(e,a){return this.sender.on(e,a),this}unsubscribe(e){return this.sender.unsubscribe(e),this}};var mp=class{constructor(e){this.endpoint=new URL(e),this.transaction=new sd(this),this.account=new id(this),this.network=new dd(this)}async connect(){let e=await mc(this.endpoint);return this.nearestEndpoints=e.map(({ip:a,port:r})=>`http://${a}:${r}`),this}async requestNode(e){let a=this.nearestEndpoints[0];try{return await e(a)}catch(r){if(console.error(r),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(e)}}};0&&(module.exports={Crypto,Utils}); /** * [js-sha3]{@link https://github.com/emn178/js-sha3} * diff --git a/dist/archethic.cjs.map b/dist/archethic.cjs.map index 6f5f366..b04d2d7 100644 --- a/dist/archethic.cjs.map +++ b/dist/archethic.cjs.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../esbuild.inject.js", "../node_modules/webidl-conversions/lib/index.js", "../node_modules/whatwg-url/lib/utils.js", "../node_modules/tr46/index.js", "../node_modules/whatwg-url/lib/url-state-machine.js", "../node_modules/whatwg-url/lib/URL-impl.js", "../node_modules/whatwg-url/lib/URL.js", "../node_modules/whatwg-url/lib/public-api.js", "../node_modules/node-fetch/lib/index.js", "../node_modules/cross-fetch/dist/node-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/ws/lib/constants.js", "../node_modules/ws/lib/buffer-util.js", "../node_modules/ws/lib/limiter.js", "../node_modules/ws/lib/permessage-deflate.js", "../node_modules/ws/lib/validation.js", "../node_modules/ws/lib/receiver.js", "../node_modules/ws/lib/sender.js", "../node_modules/ws/lib/event-target.js", "../node_modules/ws/lib/extension.js", "../node_modules/ws/lib/websocket.js", "../node_modules/ws/lib/stream.js", "../node_modules/ws/lib/subprotocol.js", "../node_modules/ws/lib/websocket-server.js", "../node_modules/ws/index.js", "../node_modules/isomorphic-ws/node.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/bn.js/lib/bn.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/brorand/index.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/inherits/inherits.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], - "sourcesContent": ["export let Buffer = require(\"buffer\").Buffer", "\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n", "const nodeFetch = require('node-fetch')\nconst realFetch = nodeFetch.default || nodeFetch\n\nconst fetch = function (url, options) {\n // Support schemaless URIs on the server for parity with the browser.\n // Ex: //github.com/ -> https://github.com/\n if (/^\\/\\//.test(url)) {\n url = 'https:' + url\n }\n return realFetch.call(this, url, options)\n}\n\nfetch.ponyfill = true\n\nmodule.exports = exports = fetch\nexports.fetch = fetch\nexports.Headers = nodeFetch.Headers\nexports.Request = nodeFetch.Request\nexports.Response = nodeFetch.Response\n\n// Needed for TypeScript consumers without esModuleInterop.\nexports.default = fetch\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || this\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => { callback && callback(null) }\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(){\n this.close()\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry()\n }\n\n poll(){\n if(!(this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting)){ return }\n\n Ajax.request(\"GET\", this.endpointURL(), \"application/json\", null, this.timeout, this.ontimeout.bind(this), (resp) => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => {\n this.onmessage({data: msg})\n }, 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen()\n this.poll()\n break\n case 403:\n this.onerror()\n this.close()\n break\n case 0:\n case 500:\n this.onerror()\n this.closeAndRetry()\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n Ajax.request(\"POST\", this.endpointURL(), \"application/json\", body, this.timeout, this.onerror.bind(this, \"timeout\"), (resp) => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry()\n }\n })\n }\n\n close(_code, _reason){\n this.readyState = SOCKET_STATES.closed\n this.onclose()\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millsec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millsec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.disconnect()\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualifed socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n this.connectClock++\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * @private\n */\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.abnormalClose(\"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n clearTimeout(this.heartbeatTimer)\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n clearTimeout(this.heartbeatTimer)\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n abnormalClose(reason){\n this.closeWasClean = false\n if(this.isConnected()){ this.conn.close(WS_CLOSE_NORMAL, reason) }\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n clearTimeout(this.heartbeatTimer)\n this.pendingHeartbeatRef = null\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}\n", "'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n },\n tokenChars\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n };\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data, true);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf, false);\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf);\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n randomFillSync(mask, 0, 4);\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(data, {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1: false\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const params = this._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options = {}) {\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = listener;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n this._sender = new Sender(socket, this._extensions, options.generateMask);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n\n websocket._url = address;\n }\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n let invalidURLMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isUnixSocket) {\n invalidURLMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", or \"ws+unix:\"';\n } else if (isUnixSocket && !parsedUrl.pathname) {\n invalidURLMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidURLMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidURLMessage) {\n const err = new SyntaxError(invalidURLMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalHost = parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (parsedUrl.host !== websocket._originalHost) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n delete opts.headers.host;\n opts.auth = undefined;\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n}\n\n/**\n * Emit the `'error'` and `'close'` event.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key']\n : false;\n const version = +req.headers['sec-websocket-version'];\n\n if (\n req.method !== 'GET' ||\n req.headers.upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n", "\"use strict\";\n\nmodule.exports = require('ws');", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\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", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "assert.notEqual = notEqual\nassert.notOk = notOk\nassert.equal = equal\nassert.ok = assert\n\nmodule.exports = assert\n\nfunction equal (a, b, m) {\n assert(a == b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notEqual (a, b, m) {\n assert(a != b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notOk (t, m) {\n assert(!t, m)\n}\n\nfunction assert (t, m) {\n if (!t) throw new Error(m || 'AssertionError')\n}\n", "\nmodule.exports = loadWebAssembly\n\nloadWebAssembly.supported = typeof WebAssembly !== 'undefined'\n\nfunction loadWebAssembly (opts) {\n if (!loadWebAssembly.supported) return null\n\n var imp = opts && opts.imports\n var wasm = toUint8Array('AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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')\n var ready = null\n\n var mod = {\n buffer: wasm,\n memory: null,\n exports: null,\n realloc: realloc,\n onload: onload\n }\n\n onload(function () {})\n\n return mod\n\n function realloc (size) {\n mod.exports.memory.grow(Math.ceil(Math.abs(size - mod.memory.length) / 65536))\n mod.memory = new Uint8Array(mod.exports.memory.buffer)\n }\n\n function onload (cb) {\n if (mod.exports) return cb()\n\n if (ready) {\n ready.then(cb.bind(null, null)).catch(cb)\n return\n }\n\n try {\n if (opts && opts.async) throw new Error('async')\n setup({instance: new WebAssembly.Instance(new WebAssembly.Module(wasm), imp)})\n } catch (err) {\n ready = WebAssembly.instantiate(wasm, imp).then(setup)\n }\n\n onload(cb)\n }\n\n function setup (w) {\n mod.exports = w.instance.exports\n mod.memory = mod.exports.memory && mod.exports.memory.buffer && new Uint8Array(mod.exports.memory.buffer)\n }\n}\n\nfunction toUint8Array (s) {\n if (typeof atob === 'function') return new Uint8Array(atob(s).split('').map(charCodeAt))\n return new (require('buf' + 'fer').Buffer)(s, 'base64')\n}\n\nfunction charCodeAt (c) {\n return c.charCodeAt(0)\n}\n", "var assert = require('nanoassert')\nvar wasm = require('./blake2b')()\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!(wasm && wasm.exports)) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n\n wasm.memory.fill(0, 0, 64)\n wasm.memory[0] = this.digestLength\n wasm.memory[1] = key ? key.length : 0\n wasm.memory[2] = 1 // fanout\n wasm.memory[3] = 1 // depth\n\n if (salt) wasm.memory.set(salt, 32)\n if (personal) wasm.memory.set(personal, 48)\n\n if (this.pointer + 216 > wasm.memory.length) wasm.realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.exports.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n wasm.memory.fill(0, head, head + key.length) // whiteout key\n wasm.memory[this.pointer + 200] = 128\n }\n}\n\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input, 'input must be TypedArray or Buffer')\n\n if (head + input.length > wasm.memory.length) wasm.realloc(head + input.length)\n wasm.memory.set(input, head)\n wasm.exports.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.exports.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return wasm.memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (enc === 'hex') {\n return hexSlice(wasm.memory, this.pointer + 128, this.digestLength)\n }\n\n assert(enc.length >= this.digestLength, 'input must be TypedArray or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = wasm.memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm && wasm.buffer\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasm) return cb(new Error('WebAssembly not supported'))\n\n // backwards compat, can be removed in a new major\n var p = new Promise(function (reject, resolve) {\n wasm.onload(function (err) {\n if (err) resolve()\n else reject()\n cb(err)\n })\n })\n\n return p\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nfunction noop () {}\n\nfunction hexSlice (buf, start, len) {\n var str = ''\n for (var i = 0; i < len; i++) str += toHex(buf[start + i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input != null, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n Proto = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'\"\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({publicKey, encryptedSecretKey})\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({to, amount})\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], - "mappings": "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O,CAAC,EAC9B,KAAK,MAAM,OAAOA,CAAG,CAC9B,IC9CA,IAAAG,GAAAC,EAAAC,IAAA,CAAAC,IAAA,IAAIC,GAAOF,GAEXE,GAAK,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAE,GAAAC,EAAAC,IAAA,cAAAC,IAEA,IAAIC,GAASF,GAETG,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAER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AAMsB,EAAEtB,GACdW,EAAEX,EAAI,IAAM0B,EAAE1B,GACdW,EAAEX,EAAI,IAAM8B,EAAE9B,GACdW,EAAEX,EAAI,IAAMmB,EAAEnB,GAElB,IAAI+F,EAAMpF,EAAE,SAAS,EAAE,EACnBqF,EAAMrF,EAAE,SAAS,EAAE,EACvB,OAAA8E,GAASM,EAAKA,CAAG,EACjBvD,GAAEwD,EAAKA,EAAKD,CAAG,EACf/D,GAAUH,EAAGmE,CAAG,EACT,CACX,CACA,SAASC,GAAuBpE,EAAGX,EAAG,CAClC,OAAOyE,GAAkB9D,EAAGX,EAAGrB,EAAE,CACrC,CACA,IAAIqG,GAAI,CACJ,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAAqBC,EAAIC,EAAInE,EAAG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", - "names": ["Buffer", "init_esbuild_inject", "__esmMin", "require_lib", "__commonJSMin", "exports", "module", "init_esbuild_inject", "conversions", "sign", "x", "evenRound", "createNumberConversion", "bitLength", "typeOpts", "lowerBound", "upperBound", "moduloVal", "moduloBound", "V", "opts", "val", "c", "S", "n", "U", "d", "a", "b", "require_utils", "__commonJSMin", "exports", "module", "init_esbuild_inject", "target", "source", "keys", "impl", "wrapper", "require_tr46", "__commonJSMin", "exports", "module", "init_esbuild_inject", "punycode", "mappingTable", "PROCESSING_OPTIONS", "normalize", "str", "s", "findStatus", "val", "start", "end", "mid", "target", "regexAstralSymbols", "countSymbols", "string", "mapChars", "domain_name", "useSTD3", "processing_option", "hasError", "processed", "len", "i", "codePoint", "status", "combiningMarksRegex", "validateLabel", "label", "error", "processing", "result", "labels", "validation", "verifyDnsLength", "l", "total", "require_url_state_machine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "punycode", "tr46", "specialSchemes", "failure", "countSymbols", "str", "at", "input", "idx", "c", "isASCIIDigit", "isASCIIAlpha", "isASCIIAlphanumeric", "isASCIIHex", "isSingleDot", "buffer", "isDoubleDot", "isWindowsDriveLetterCodePoints", "cp1", "cp2", "isWindowsDriveLetterString", "string", "isNormalizedWindowsDriveLetterString", "containsForbiddenHostCodePoint", "containsForbiddenHostCodePointExcludingPercent", "isSpecialScheme", "scheme", "isSpecial", "url", "defaultPort", "percentEncode", "hex", "utf8PercentEncode", "buf", "Buffer", "i", "utf8PercentDecode", "output", "isC0ControlPercentEncode", "extraPathPercentEncodeSet", "isPathPercentEncode", "extraUserinfoPercentEncodeSet", "isUserinfoPercentEncode", "percentEncodeChar", "encodeSetPredicate", "cStr", "parseIPv4Number", "R", "parseIPv4", "parts", "numbers", "part", "ipv4", "counter", "n", "serializeIPv4", "address", "parseIPv6", "pieceIndex", "compress", "pointer", "value", "length", "numbersSeen", "ipv4Piece", "number", "swaps", "temp", "serializeIPv6", "findLongestZeroSequence", "ignore0", "parseHost", "isSpecialArg", "parseOpaqueHost", "domain", "asciiDomain", "ipv4Host", "decoded", "arr", "maxIdx", "maxLen", "currStart", "currLen", "serializeHost", "host", "trimControlChars", "trimTabAndNewline", "shortenPath", "path", "isNormalizedWindowsDriveLetter", "includesCredentials", "cannotHaveAUsernamePasswordPort", "URLStateMachine", "base", "encodingOverride", "stateOverride", "res", "ret", "len", "codePoint", "encodedCodePoints", "port", "fileOtherwiseCodePoints", "serializeURL", "excludeFragment", "serializeOrigin", "tuple", "result", "options", "usm", "username", "password", "integer", "require_URL_impl", "__commonJSMin", "exports", "init_esbuild_inject", "usm", "constructorArgs", "url", "base", "parsedBase", "parsedURL", "v", "input", "require_URL", "__commonJSMin", "exports", "module", "init_esbuild_inject", "conversions", "utils", "Impl", "impl", "URL", "url", "args", "i", "V", "obj", "constructorArgs", "privateData", "require_public_api", "__commonJSMin", "exports", "init_esbuild_inject", "require_lib", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_interopDefault", "ex", "Stream", "http", "Url", "whatwgUrl", "https", "zlib", "Readable", "BUFFER", "TYPE", "Blob", "blobParts", "options", "buffers", "size", "a", "length", "i", "element", "buffer", "Buffer", "type", "buf", "ab", "readable", "start", "end", "relativeStart", "relativeEnd", "span", "slicedBuffer", "blob", "FetchError", "message", "systemError", "convert", "INTERNALS", "PassThrough", "Body", "body", "_this", "_ref", "_ref$size", "_ref$timeout", "timeout", "isURLSearchParams", "isBlob", "err", "error", "consumeBody", "ct", "_this2", "_this3", "convertBody", "proto", "name", "desc", "_this4", "accum", "accumBytes", "abort", "resolve", "reject", "resTimeout", "chunk", "headers", "charset", "res", "str", "obj", "clone", "instance", "p1", "p2", "extractContentType", "getTotalBytes", "writeToStream", "dest", "invalidTokenRegex", "invalidHeaderCharRegex", "validateName", "validateValue", "value", "find", "map", "key", "MAP", "Headers", "init", "rawHeaders", "headerNames", "headerName", "method", "pairs", "pair", "callback", "thisArg", "getHeaders", "_pairs$i", "createHeadersIterator", "kind", "k", "INTERNAL", "target", "iterator", "HeadersIteratorPrototype", "_INTERNAL", "index", "values", "len", "exportNodeCompatibleHeaders", "hostHeaderKey", "createHeadersLenient", "val", "INTERNALS$1", "STATUS_CODES", "Response", "opts", "status", "contentType", "INTERNALS$2", "URL", "parse_url", "format_url", "parseURL", "urlStr", "streamDestructionSupported", "isRequest", "input", "isAbortSignal", "signal", "Request", "parsedURL", "inputBody", "getNodeRequestOptions", "request", "contentLengthValue", "totalBytes", "agent", "AbortError", "URL$1", "PassThrough$1", "isDomainOrSubdomain", "destination", "original", "orig", "fetch", "url", "send", "response", "abortAndFinalize", "finalize", "req", "reqTimeout", "socket", "location", "locationURL", "requestOpts", "response_options", "codings", "zlibOptions", "code", "require_node_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nodeFetch", "realFetch", "fetch", "url", "options", "__export", "exports", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "token", "messages", "msg", "_code", "_reason", "opts", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "code", "error", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_constants", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "require_buffer_util", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EMPTY_BUFFER", "concat", "list", "totalLength", "target", "Buffer", "offset", "buf", "_mask", "source", "mask", "output", "length", "i", "_unmask", "buffer", "toArrayBuffer", "toBuffer", "data", "bufferUtil", "require_limiter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "kDone", "kRun", "Limiter", "concurrency", "job", "require_permessage_deflate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "zlib", "bufferUtil", "Limiter", "kStatusCode", "TRAILER", "Buffer", "kPerMessageDeflate", "kTotalLength", "kCallback", "kBuffers", "kError", "zlibLimiter", "PerMessageDeflate", "options", "isServer", "maxPayload", "concurrency", "params", "configurations", "callback", "offers", "opts", "accepted", "response", "key", "value", "num", "data", "fin", "done", "err", "result", "endpoint", "windowBits", "inflateOnError", "inflateOnData", "deflateOnData", "chunk", "require_validation", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "isValidStatusCode", "code", "_isValidUTF8", "buf", "len", "i", "isValidUTF8", "require_receiver", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "PerMessageDeflate", "BINARY_TYPES", "EMPTY_BUFFER", "kStatusCode", "kWebSocket", "concat", "toArrayBuffer", "unmask", "isValidStatusCode", "isValidUTF8", "GET_INFO", "GET_PAYLOAD_LENGTH_16", "GET_PAYLOAD_LENGTH_64", "GET_MASK", "GET_DATA", "INFLATING", "Receiver", "options", "chunk", "encoding", "cb", "n", "buf", "dst", "Buffer", "offset", "err", "error", "compressed", "num", "data", "er", "messageLength", "fragments", "code", "ErrorCtor", "message", "prefix", "statusCode", "errorCode", "require_sender", "__commonJSMin", "exports", "module", "init_esbuild_inject", "net", "tls", "randomFillSync", "PerMessageDeflate", "EMPTY_BUFFER", "isValidStatusCode", "applyMask", "toBuffer", "kByteLength", "maskBuffer", "Buffer", "Sender", "socket", "extensions", "generateMask", "data", "options", "mask", "merge", "offset", "skipMasking", "dataLength", "payloadLength", "target", "code", "cb", "buf", "length", "byteLength", "readOnly", "perMessageDeflate", "opcode", "rsv1", "opts", "compress", "_", "err", "i", "params", "callback", "list", "require_event_target", "__commonJSMin", "exports", "module", "init_esbuild_inject", "kForOnEventAttribute", "kListener", "kCode", "kData", "kError", "kMessage", "kReason", "kTarget", "kType", "kWasClean", "Event", "type", "CloseEvent", "options", "ErrorEvent", "MessageEvent", "EventTarget", "listener", "wrapper", "data", "isBinary", "event", "code", "message", "error", "handler", "require_extension", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "push", "dest", "name", "elem", "parse", "header", "offers", "params", "mustUnescape", "isEscaping", "inQuotes", "extensionName", "paramName", "start", "code", "end", "i", "value", "token", "format", "extensions", "extension", "configurations", "k", "values", "v", "require_websocket", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EventEmitter", "https", "http", "net", "tls", "randomBytes", "createHash", "Readable", "URL", "PerMessageDeflate", "Receiver", "Sender", "BINARY_TYPES", "EMPTY_BUFFER", "GUID", "kForOnEventAttribute", "kListener", "kStatusCode", "kWebSocket", "NOOP", "addEventListener", "removeEventListener", "format", "parse", "toBuffer", "readyStates", "subprotocolRegex", "protocolVersions", "closeTimeout", "WebSocket", "address", "protocols", "options", "initAsClient", "type", "socket", "head", "receiver", "receiverOnConclude", "receiverOnDrain", "receiverOnError", "receiverOnMessage", "receiverOnPing", "receiverOnPong", "socketOnClose", "socketOnData", "socketOnEnd", "socketOnError", "code", "data", "msg", "abortHandshake", "err", "mask", "cb", "sendAfterClose", "opts", "property", "method", "listener", "handler", "websocket", "parsedUrl", "isSecure", "isUnixSocket", "invalidURLMessage", "emitErrorAndClose", "defaultPort", "key", "get", "protocolSet", "perMessageDeflate", "tlsConnect", "netConnect", "protocol", "parts", "headers", "value", "Buffer", "req", "res", "location", "statusCode", "addr", "digest", "serverProt", "protError", "secWebSocketExtensions", "extensions", "extensionNames", "stream", "message", "length", "reason", "resume", "receiverOnFinish", "isBinary", "chunk", "require_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Duplex", "emitClose", "stream", "duplexOnEnd", "duplexOnError", "err", "createWebSocketStream", "ws", "options", "terminateOnDestroy", "duplex", "msg", "isBinary", "data", "callback", "called", "chunk", "encoding", "require_subprotocol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "parse", "header", "protocols", "start", "end", "code", "protocol", "require_websocket_server", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EventEmitter", "http", "https", "net", "tls", "createHash", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "GUID", "kWebSocket", "keyRegex", "RUNNING", "CLOSING", "CLOSED", "WebSocketServer", "options", "callback", "req", "res", "body", "emitConnection", "addListeners", "socket", "head", "cb", "emitClose", "server", "index", "socketOnError", "key", "version", "abortHandshake", "secWebSocketProtocol", "protocols", "secWebSocketExtensions", "extensions", "perMessageDeflate", "offers", "info", "verified", "code", "message", "headers", "digest", "ws", "protocol", "params", "value", "map", "event", "Buffer", "h", "require_ws", "__commonJSMin", "exports", "module", "init_esbuild_inject", "WebSocket", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "l", "a", "b", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "i", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "i", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "e", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "l", "a", "b", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "i", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "e", "enqueue", "fn", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex", "str", "end", "r", "len", "c", "parseBase", "mul", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "r", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "r", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "init_esbuild_inject", "util", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h2", "h3", "nz", "h", "pow", "a", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "nx", "ny", "nt", "nz", "j", "f", "p", "h", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "notEqual", "notOk", "equal", "a", "b", "m", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "loadWebAssembly", "opts", "imp", "wasm", "toUint8Array", "ready", "mod", "realloc", "onload", "size", "cb", "setup", "w", "s", "charCodeAt", "c", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "wasm", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "input", "enc", "hexSlice", "i", "cb", "noop", "p", "reject", "resolve", "err", "buf", "start", "len", "str", "toHex", "n", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "r", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_32", "set25519", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "b", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "m", "par25519", "d", "vn", "x", "xi", "y", "yi", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "libjs_exports", "__export", "crypto_exports", "utils_exports", "Archethic", "__toCommonJS", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "i", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_crypto", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "pseudoRandomKey", "cipher", "decipher", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_crypto", "import_base64url", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "t", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] + "sources": ["../esbuild.inject.js", "../node_modules/webidl-conversions/lib/index.js", "../node_modules/whatwg-url/lib/utils.js", "../node_modules/tr46/index.js", "../node_modules/whatwg-url/lib/url-state-machine.js", "../node_modules/whatwg-url/lib/URL-impl.js", "../node_modules/whatwg-url/lib/URL.js", "../node_modules/whatwg-url/lib/public-api.js", "../node_modules/node-fetch/lib/index.js", "../node_modules/cross-fetch/dist/node-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/ws/lib/constants.js", "../node_modules/ws/lib/buffer-util.js", "../node_modules/ws/lib/limiter.js", "../node_modules/ws/lib/permessage-deflate.js", "../node_modules/ws/lib/validation.js", "../node_modules/ws/lib/receiver.js", "../node_modules/ws/lib/sender.js", "../node_modules/ws/lib/event-target.js", "../node_modules/ws/lib/extension.js", "../node_modules/ws/lib/websocket.js", "../node_modules/ws/lib/stream.js", "../node_modules/ws/lib/subprotocol.js", "../node_modules/ws/lib/websocket-server.js", "../node_modules/ws/index.js", "../node_modules/isomorphic-ws/node.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/elliptic/node_modules/bn.js/lib/bn.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/brorand/index.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/inherits/inherits.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/b4a/index.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], + "sourcesContent": ["export let Buffer = require(\"buffer\").Buffer", "\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n", "const nodeFetch = require('node-fetch')\nconst realFetch = nodeFetch.default || nodeFetch\n\nconst fetch = function (url, options) {\n // Support schemaless URIs on the server for parity with the browser.\n // Ex: //github.com/ -> https://github.com/\n if (/^\\/\\//.test(url)) {\n url = 'https:' + url\n }\n return realFetch.call(this, url, options)\n}\n\nfetch.ponyfill = true\n\nmodule.exports = exports = fetch\nexports.fetch = fetch\nexports.Headers = nodeFetch.Headers\nexports.Request = nodeFetch.Request\nexports.Response = nodeFetch.Response\n\n// Needed for TypeScript consumers without esModuleInterop.\nexports.default = fetch\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || global\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n return this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n return this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n return req\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => callback && callback(null)\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n return req\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.reqs = new Set()\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(code, reason, wasClean){\n this.close(code, reason, wasClean)\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry(1005, \"timeout\", false)\n }\n\n isActive(){ return this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting }\n\n poll(){\n this.ajax(\"GET\", null, () => this.ontimeout(), resp => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => this.onmessage({data: msg}), 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen({})\n this.poll()\n break\n case 403:\n this.onerror(403)\n this.close(1008, \"forbidden\", false)\n break\n case 0:\n case 500:\n this.onerror(500)\n this.closeAndRetry(1011, \"internal server error\", 500)\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n this.ajax(\"POST\", body, () => this.onerror(\"timeout\"), resp => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry(1011, \"internal server error\", false)\n }\n })\n }\n\n close(code, reason, wasClean){\n for(let req of this.reqs){ req.abort() }\n this.readyState = SOCKET_STATES.closed\n let opts = Object.assign({code: 1000, reason: undefined, wasClean: true}, {code, reason, wasClean})\n if(typeof(CloseEvent) !== \"undefined\"){\n this.onclose(new CloseEvent(\"close\", opts))\n } else {\n this.onclose(opts)\n }\n }\n\n ajax(method, body, onCallerTimeout, callback){\n let req\n let ontimeout = () => {\n this.reqs.delete(req)\n onCallerTimeout()\n }\n req = Ajax.request(method, this.endpointURL(), \"application/json\", body, this.timeout, ontimeout, resp => {\n this.reqs.delete(req)\n if(this.isActive()){ callback(resp) }\n })\n this.reqs.add(req)\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millisec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millisec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimeoutTimer = null\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Returns the LongPoll transport reference\n */\n getLongPollTransport(){ return LongPoll }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.sendBuffer = []\n if(this.conn){\n this.conn.close()\n this.conn = null\n }\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualified socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n\n this.connectClock++\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * Pings the server and invokes the callback with the RTT in milliseconds\n * @param {Function} callback\n *\n * Returns true if the ping was pushed or false if unable to be pushed.\n */\n ping(callback){\n if(!this.isConnected()){ return false }\n let ref = this.makeRef()\n let startTime = Date.now()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: ref})\n let onMsgRef = this.onMessage(msg => {\n if(msg.ref === ref){\n this.off([onMsgRef])\n callback(Date.now() - startTime)\n }\n })\n return true\n }\n\n /**\n * @private\n */\n\n clearHeartbeats(){\n clearTimeout(this.heartbeatTimer)\n clearTimeout(this.heartbeatTimeoutTimer)\n }\n\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.triggerChanError()\n this.closeWasClean = false\n this.teardown(() => this.reconnectTimer.scheduleTimeout(), WS_CLOSE_NORMAL, \"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n this.clearHeartbeats()\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onopen = function (){ } // noop\n this.conn.onerror = function (){ } // noop\n this.conn.onmessage = function (){ } // noop\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n this.clearHeartbeats()\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimeoutTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n this.clearHeartbeats()\n this.pendingHeartbeatRef = null\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}", "'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data, true);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf, false);\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf);\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n randomFillSync(mask, 0, 4);\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(data, {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1: false\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const params = this._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n this._sender = new Sender(socket, this._extensions, options.generateMask);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n\n websocket._url = address;\n }\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n if (res.headers.upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n req.end();\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (req.headers.upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!key || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 8 && version !== 13) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message);\n }\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n", "\"use strict\";\n\nmodule.exports = require('ws');", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\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", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "module.exports = assert\n\nclass AssertionError extends Error {}\nAssertionError.prototype.name = 'AssertionError'\n\n/**\n * Minimal assert function\n * @param {any} t Value to check if falsy\n * @param {string=} m Optional assertion error message\n * @throws {AssertionError}\n */\nfunction assert (t, m) {\n if (!t) {\n var err = new AssertionError(m)\n if (Error.captureStackTrace) Error.captureStackTrace(err, assert)\n throw err\n }\n}\n", "function isBuffer (value) {\n return Buffer.isBuffer(value) || value instanceof Uint8Array\n}\n\nfunction isEncoding (encoding) {\n return Buffer.isEncoding(encoding)\n}\n\nfunction alloc (size, fill, encoding) {\n return Buffer.alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n return Buffer.allocUnsafe(size)\n}\n\nfunction allocUnsafeSlow (size) {\n return Buffer.allocUnsafeSlow(size)\n}\n\nfunction byteLength (string, encoding) {\n return Buffer.byteLength(string, encoding)\n}\n\nfunction compare (a, b) {\n return Buffer.compare(a, b)\n}\n\nfunction concat (buffers, totalLength) {\n return Buffer.concat(buffers, totalLength)\n}\n\nfunction copy (source, target, targetStart, start, end) {\n return toBuffer(source).copy(target, targetStart, start, end)\n}\n\nfunction equals (a, b) {\n return toBuffer(a).equals(b)\n}\n\nfunction fill (buffer, value, offset, end, encoding) {\n return toBuffer(buffer).fill(value, offset, end, encoding)\n}\n\nfunction from (value, encodingOrOffset, length) {\n return Buffer.from(value, encodingOrOffset, length)\n}\n\nfunction includes (buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).includes(value, byteOffset, encoding)\n}\n\nfunction indexOf (buffer, value, byfeOffset, encoding) {\n return toBuffer(buffer).indexOf(value, byfeOffset, encoding)\n}\n\nfunction lastIndexOf (buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).lastIndexOf(value, byteOffset, encoding)\n}\n\nfunction swap16 (buffer) {\n return toBuffer(buffer).swap16()\n}\n\nfunction swap32 (buffer) {\n return toBuffer(buffer).swap32()\n}\n\nfunction swap64 (buffer) {\n return toBuffer(buffer).swap64()\n}\n\nfunction toBuffer (buffer) {\n if (Buffer.isBuffer(buffer)) return buffer\n return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nfunction toString (buffer, encoding, start, end) {\n return toBuffer(buffer).toString(encoding, start, end)\n}\n\nfunction write (buffer, string, offset, length, encoding) {\n return toBuffer(buffer).write(string, offset, length, encoding)\n}\n\nfunction writeDoubleLE (buffer, value, offset) {\n return toBuffer(buffer).writeDoubleLE(value, offset)\n}\n\nfunction writeFloatLE (buffer, value, offset) {\n return toBuffer(buffer).writeFloatLE(value, offset)\n}\n\nfunction writeUInt32LE (buffer, value, offset) {\n return toBuffer(buffer).writeUInt32LE(value, offset)\n}\n\nfunction writeInt32LE (buffer, value, offset) {\n return toBuffer(buffer).writeInt32LE(value, offset)\n}\n\nfunction readDoubleLE (buffer, offset) {\n return toBuffer(buffer).readDoubleLE(offset)\n}\n\nfunction readFloatLE (buffer, offset) {\n return toBuffer(buffer).readFloatLE(offset)\n}\n\nfunction readUInt32LE (buffer, offset) {\n return toBuffer(buffer).readUInt32LE(offset)\n}\n\nfunction readInt32LE (buffer, offset) {\n return toBuffer(buffer).readInt32LE(offset)\n}\n\nmodule.exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n writeDoubleLE,\n writeFloatLE,\n writeUInt32LE,\n writeInt32LE,\n readDoubleLE,\n readFloatLE,\n readUInt32LE,\n readInt32LE\n}\n", "var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __toBinary = /* @__PURE__ */ (() => {\n var table = new Uint8Array(128);\n for (var i = 0; i < 64; i++)\n table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i;\n return (base64) => {\n var n = base64.length, bytes2 = new Uint8Array((n - (base64[n - 1] == \"=\") - (base64[n - 2] == \"=\")) * 3 / 4 | 0);\n for (var i2 = 0, j = 0; i2 < n; ) {\n var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)];\n var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)];\n bytes2[j++] = c0 << 2 | c1 >> 4;\n bytes2[j++] = c1 << 4 | c2 >> 2;\n bytes2[j++] = c2 << 6 | c3;\n }\n return bytes2;\n };\n})();\n\n// wasm-binary:./blake2b.wat\nvar require_blake2b = __commonJS({\n \"wasm-binary:./blake2b.wat\"(exports2, module2) {\n module2.exports = __toBinary(\"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\");\n }\n});\n\n// wasm-module:./blake2b.wat\nvar bytes = require_blake2b();\nvar compiled = WebAssembly.compile(bytes);\nmodule.exports = async (imports) => {\n const instance = await WebAssembly.instantiate(await compiled, imports);\n return instance.exports;\n};\n", "var assert = require('nanoassert')\nvar b4a = require('b4a')\n\nvar wasm = null\nvar wasmPromise = typeof WebAssembly !== \"undefined\" && require('./blake2b')().then(mod => {\n wasm = mod\n})\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!wasm) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) {\n assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')\n assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n }\n if (salt != null) {\n assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')\n assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n }\n if (personal != null) {\n assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')\n assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n this._memory = new Uint8Array(wasm.memory.buffer)\n\n this._memory.fill(0, 0, 64)\n this._memory[0] = this.digestLength\n this._memory[1] = key ? key.length : 0\n this._memory[2] = 1 // fanout\n this._memory[3] = 1 // depth\n\n if (salt) this._memory.set(salt, 32)\n if (personal) this._memory.set(personal, 48)\n\n if (this.pointer + 216 > this._memory.length) this._realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n this._memory.fill(0, head, head + key.length) // whiteout key\n this._memory[this.pointer + 200] = 128\n }\n}\n\nBlake2b.prototype._realloc = function (size) {\n wasm.memory.grow(Math.max(0, Math.ceil(Math.abs(size - this._memory.length) / 65536)))\n this._memory = new Uint8Array(wasm.memory.buffer)\n}\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')\n\n if (head + input.length > this._memory.length) this._realloc(head + input.length)\n this._memory.set(input, head)\n wasm.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return this._memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (typeof enc === 'string') {\n return b4a.toString(this._memory, enc, this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n assert(enc instanceof Uint8Array && enc.length >= this.digestLength, 'input must be Uint8Array or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = this._memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasmPromise) return cb(new Error('WebAssembly not supported'))\n return wasmPromise.then(() => cb(), cb)\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nBlake2b.prototype.getPartialHash = function () {\n return this._memory.slice(this.pointer, this.pointer + 216);\n}\n\nBlake2b.prototype.setPartialHash = function (ph) {\n this._memory.set(ph, this.pointer);\n}\n\nfunction noop () {}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf instanceof Uint8Array, 'out must be \"binary\", \"hex\", Uint8Array, or Buffer')\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) {\n assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')\n assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n }\n if (salt != null) {\n assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')\n assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n }\n if (personal != null) {\n assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')\n assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n module.exports = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n \"data\": 250,\n \"contract\": 249,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be in \" + Object.keys(txTypes).map(t => `'${t}'`).join(\", \")\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({ publicKey, encryptedSecretKey })\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({ to, amount })\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], + "mappings": "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AGA,EAAIF,EAAI,OAAQE,IAC1BF,EAAIE,IAAM,IACZ,KAAK,MAAQ,IAAI,KAAK,KAAK,EAAE,OAAOF,CAAG,CACzC,EAEAF,GAAK,UAAU,OAAS,SAAgBK,EAAKF,EAAK,CAChD,YAAK,MAAM,OAAOE,EAAKF,CAAG,EACnB,IACT,EAEAH,GAAK,UAAU,OAAS,SAAgBG,EAAK,CAC3C,YAAK,MAAM,OAAO,KAAK,MAAM,OAAO,CAAC,EAC9B,KAAK,MAAM,OAAOA,CAAG,CAC9B,IC9CA,IAAAG,GAAAC,EAAAC,IAAA,CAAAC,IAAA,IAAIC,GAAOF,GAEXE,GAAK,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kE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,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAAqBC,EAAIC,EAAInE,EAAGhB,EAAG,CAIxC,QAHIoF,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAIC,GAAIzH,GAAGiC,EAAGrB,EAAGC,EAAGS,EAAGQ,EAAGJ,EAAGP,EAC/JuG,EAAMtB,EAAG,GAAIuB,EAAMvB,EAAG,GAAIwB,EAAMxB,EAAG,GAAIyB,EAAMzB,EAAG,GAAI0B,EAAM1B,EAAG,GAAI2B,GAAM3B,EAAG,GAAI4B,EAAM5B,EAAG,GAAI6B,GAAM7B,EAAG,GAAI8B,EAAM7B,EAAG,GAAI8B,EAAM9B,EAAG,GAAI+B,EAAM/B,EAAG,GAAIgC,EAAMhC,EAAG,GAAIiC,EAAMjC,EAAG,GAAIkC,GAAMlC,EAAG,GAAImC,GAAMnC,EAAG,GAAIoC,GAAMpC,EAAG,GAC5MqC,GAAM,EACHxH,GAAK,KAAK,CAC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", + "names": ["Buffer", "init_esbuild_inject", "__esmMin", "require_lib", "__commonJSMin", "exports", "module", "init_esbuild_inject", "conversions", "sign", "x", "evenRound", "createNumberConversion", "bitLength", "typeOpts", "lowerBound", "upperBound", "moduloVal", "moduloBound", "V", "opts", "val", "c", "S", "n", "U", "d", "a", "b", "require_utils", "__commonJSMin", "exports", "module", "init_esbuild_inject", "target", "source", "keys", "impl", "wrapper", "require_tr46", "__commonJSMin", "exports", "module", "init_esbuild_inject", "punycode", "mappingTable", "PROCESSING_OPTIONS", "normalize", "str", "s", "findStatus", "val", "start", "end", "mid", "target", "regexAstralSymbols", "countSymbols", "string", "mapChars", "domain_name", "useSTD3", "processing_option", "hasError", "processed", "len", "i", "codePoint", "status", "combiningMarksRegex", "validateLabel", "label", "error", "processing", "result", "labels", "validation", "verifyDnsLength", "l", "total", "require_url_state_machine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "punycode", "tr46", "specialSchemes", "failure", "countSymbols", "str", "at", "input", "idx", "c", "isASCIIDigit", "isASCIIAlpha", "isASCIIAlphanumeric", "isASCIIHex", "isSingleDot", "buffer", "isDoubleDot", "isWindowsDriveLetterCodePoints", "cp1", "cp2", "isWindowsDriveLetterString", "string", "isNormalizedWindowsDriveLetterString", "containsForbiddenHostCodePoint", "containsForbiddenHostCodePointExcludingPercent", "isSpecialScheme", "scheme", "isSpecial", "url", "defaultPort", "percentEncode", "hex", "utf8PercentEncode", "buf", "Buffer", "i", "utf8PercentDecode", "output", "isC0ControlPercentEncode", "extraPathPercentEncodeSet", "isPathPercentEncode", "extraUserinfoPercentEncodeSet", "isUserinfoPercentEncode", "percentEncodeChar", "encodeSetPredicate", "cStr", "parseIPv4Number", "R", "parseIPv4", "parts", "numbers", "part", "ipv4", "counter", "n", "serializeIPv4", "address", "parseIPv6", "pieceIndex", "compress", "pointer", "value", "length", "numbersSeen", "ipv4Piece", "number", "swaps", "temp", "serializeIPv6", "findLongestZeroSequence", "ignore0", "parseHost", "isSpecialArg", "parseOpaqueHost", "domain", "asciiDomain", "ipv4Host", "decoded", "arr", "maxIdx", "maxLen", "currStart", "currLen", "serializeHost", "host", "trimControlChars", "trimTabAndNewline", "shortenPath", "path", "isNormalizedWindowsDriveLetter", "includesCredentials", "cannotHaveAUsernamePasswordPort", "URLStateMachine", "base", "encodingOverride", "stateOverride", "res", "ret", "len", "codePoint", "encodedCodePoints", "port", "fileOtherwiseCodePoints", "serializeURL", "excludeFragment", "serializeOrigin", "tuple", "result", "options", "usm", "username", "password", "integer", "require_URL_impl", "__commonJSMin", "exports", "init_esbuild_inject", "usm", "constructorArgs", "url", "base", "parsedBase", "parsedURL", "v", "input", "require_URL", "__commonJSMin", "exports", "module", "init_esbuild_inject", "conversions", "utils", "Impl", "impl", "URL", "url", "args", "i", "V", "obj", "constructorArgs", "privateData", "require_public_api", "__commonJSMin", "exports", "init_esbuild_inject", "require_lib", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_interopDefault", "ex", "Stream", "http", "Url", "whatwgUrl", "https", "zlib", "Readable", "BUFFER", "TYPE", "Blob", "blobParts", "options", "buffers", "size", "a", "length", "i", "element", "buffer", "Buffer", "type", "buf", "ab", "readable", "start", "end", "relativeStart", "relativeEnd", "span", "slicedBuffer", "blob", "FetchError", "message", "systemError", "convert", "INTERNALS", "PassThrough", "Body", "body", "_this", "_ref", "_ref$size", "_ref$timeout", "timeout", "isURLSearchParams", "isBlob", "err", "error", "consumeBody", "ct", "_this2", "_this3", "convertBody", "proto", "name", "desc", "_this4", "accum", "accumBytes", "abort", "resolve", "reject", "resTimeout", "chunk", "headers", "charset", "res", "str", "obj", "clone", "instance", "p1", "p2", "extractContentType", "getTotalBytes", "writeToStream", "dest", "invalidTokenRegex", "invalidHeaderCharRegex", "validateName", "validateValue", "value", "find", "map", "key", "MAP", "Headers", "init", "rawHeaders", "headerNames", "headerName", "method", "pairs", "pair", "callback", "thisArg", "getHeaders", "_pairs$i", "createHeadersIterator", "kind", "k", "INTERNAL", "target", "iterator", "HeadersIteratorPrototype", "_INTERNAL", "index", "values", "len", "exportNodeCompatibleHeaders", "hostHeaderKey", "createHeadersLenient", "val", "INTERNALS$1", "STATUS_CODES", "Response", "opts", "status", "contentType", "INTERNALS$2", "URL", "parse_url", "format_url", "parseURL", "urlStr", "streamDestructionSupported", "isRequest", "input", "isAbortSignal", "signal", "Request", "parsedURL", "inputBody", "getNodeRequestOptions", "request", "contentLengthValue", "totalBytes", "agent", "AbortError", "URL$1", "PassThrough$1", "isDomainOrSubdomain", "destination", "original", "orig", "fetch", "url", "send", "response", "abortAndFinalize", "finalize", "req", "reqTimeout", "socket", "location", "locationURL", "requestOpts", "response_options", "codings", "zlibOptions", "code", "require_node_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nodeFetch", "realFetch", "fetch", "url", "options", "phoenix_exports", "__export", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "module", "__toCommonJS", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "code", "wasClean", "token", "messages", "msg", "opts", "onCallerTimeout", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "error", "startTime", "onMsgRef", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_constants", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "require_buffer_util", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EMPTY_BUFFER", "concat", "list", "totalLength", "target", "Buffer", "offset", "buf", "_mask", "source", "mask", "output", "length", "i", "_unmask", "buffer", "toArrayBuffer", "toBuffer", "data", "bufferUtil", "require_limiter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "kDone", "kRun", "Limiter", "concurrency", "job", "require_permessage_deflate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "zlib", "bufferUtil", "Limiter", "kStatusCode", "TRAILER", "Buffer", "kPerMessageDeflate", "kTotalLength", "kCallback", "kBuffers", "kError", "zlibLimiter", "PerMessageDeflate", "options", "isServer", "maxPayload", "concurrency", "params", "configurations", "callback", "offers", "opts", "accepted", "response", "key", "value", "num", "data", "fin", "done", "err", "result", "endpoint", "windowBits", "inflateOnError", "inflateOnData", "deflateOnData", "chunk", "require_validation", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "isValidStatusCode", "code", "_isValidUTF8", "buf", "len", "i", "isValidUTF8", "require_receiver", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "PerMessageDeflate", "BINARY_TYPES", "EMPTY_BUFFER", "kStatusCode", "kWebSocket", "concat", "toArrayBuffer", "unmask", "isValidStatusCode", "isValidUTF8", "GET_INFO", "GET_PAYLOAD_LENGTH_16", "GET_PAYLOAD_LENGTH_64", "GET_MASK", "GET_DATA", "INFLATING", "Receiver", "options", "chunk", "encoding", "cb", "n", "buf", "dst", "Buffer", "offset", "err", "error", "compressed", "num", "data", "er", "messageLength", "fragments", "code", "ErrorCtor", "message", "prefix", "statusCode", "errorCode", "require_sender", "__commonJSMin", "exports", "module", "init_esbuild_inject", "net", "tls", "randomFillSync", "PerMessageDeflate", "EMPTY_BUFFER", "isValidStatusCode", "applyMask", "toBuffer", "kByteLength", "maskBuffer", "Buffer", "Sender", "socket", "extensions", "generateMask", "data", "options", "mask", "merge", "offset", "skipMasking", "dataLength", "payloadLength", "target", "code", "cb", "buf", "length", "byteLength", "readOnly", "perMessageDeflate", "opcode", "rsv1", "opts", "compress", "_", "err", "i", "params", "callback", "list", "require_event_target", "__commonJSMin", "exports", "module", "init_esbuild_inject", "kForOnEventAttribute", "kListener", "kCode", "kData", "kError", "kMessage", "kReason", "kTarget", "kType", "kWasClean", "Event", "type", "CloseEvent", "options", "ErrorEvent", "MessageEvent", "EventTarget", "handler", "listener", "wrapper", "data", "isBinary", "event", "callListener", "code", "message", "error", "thisArg", "require_extension", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "push", "dest", "name", "elem", "parse", "header", "offers", "params", "mustUnescape", "isEscaping", "inQuotes", "extensionName", "paramName", "start", "code", "end", "i", "value", "token", "format", "extensions", "extension", "configurations", "k", "values", "v", "require_websocket", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EventEmitter", "https", "http", "net", "tls", "randomBytes", "createHash", "Readable", "URL", "PerMessageDeflate", "Receiver", "Sender", "BINARY_TYPES", "EMPTY_BUFFER", "GUID", "kForOnEventAttribute", "kListener", "kStatusCode", "kWebSocket", "NOOP", "addEventListener", "removeEventListener", "format", "parse", "toBuffer", "closeTimeout", "kAborted", "protocolVersions", "readyStates", "subprotocolRegex", "WebSocket", "address", "protocols", "options", "initAsClient", "type", "socket", "head", "receiver", "receiverOnConclude", "receiverOnDrain", "receiverOnError", "receiverOnMessage", "receiverOnPing", "receiverOnPong", "socketOnClose", "socketOnData", "socketOnEnd", "socketOnError", "code", "data", "msg", "abortHandshake", "err", "mask", "cb", "sendAfterClose", "opts", "property", "method", "listener", "handler", "websocket", "parsedUrl", "isSecure", "isIpcUrl", "invalidUrlMessage", "emitErrorAndClose", "defaultPort", "key", "request", "protocolSet", "perMessageDeflate", "tlsConnect", "netConnect", "protocol", "parts", "req", "headers", "value", "isSameHost", "Buffer", "res", "location", "statusCode", "addr", "digest", "serverProt", "protError", "secWebSocketExtensions", "extensions", "extensionNames", "stream", "message", "length", "reason", "resume", "receiverOnFinish", "isBinary", "chunk", "require_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Duplex", "emitClose", "stream", "duplexOnEnd", "duplexOnError", "err", "createWebSocketStream", "ws", "options", "terminateOnDestroy", "duplex", "msg", "isBinary", "data", "callback", "called", "chunk", "encoding", "require_subprotocol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "tokenChars", "parse", "header", "protocols", "start", "end", "code", "protocol", "require_websocket_server", "__commonJSMin", "exports", "module", "init_esbuild_inject", "EventEmitter", "http", "https", "net", "tls", "createHash", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "GUID", "kWebSocket", "keyRegex", "RUNNING", "CLOSING", "CLOSED", "WebSocketServer", "options", "callback", "req", "res", "body", "emitConnection", "addListeners", "socket", "head", "cb", "emitClose", "server", "index", "socketOnError", "key", "version", "abortHandshakeOrEmitwsClientError", "abortHandshake", "secWebSocketProtocol", "protocols", "secWebSocketExtensions", "extensions", "perMessageDeflate", "offers", "info", "verified", "code", "message", "headers", "ws", "protocol", "params", "value", "map", "event", "Buffer", "h", "err", "require_ws", "__commonJSMin", "exports", "module", "init_esbuild_inject", "WebSocket", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "l", "a", "b", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "i", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "i", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "e", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "l", "a", "b", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "i", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "e", "enqueue", "fn", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "r", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "r", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "init_esbuild_inject", "util", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "a", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "AssertionError", "m", "err", "require_b4a", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isBuffer", "value", "Buffer", "isEncoding", "encoding", "alloc", "size", "fill", "allocUnsafe", "allocUnsafeSlow", "byteLength", "string", "compare", "a", "b", "concat", "buffers", "totalLength", "copy", "source", "target", "targetStart", "start", "end", "toBuffer", "equals", "buffer", "offset", "from", "encodingOrOffset", "length", "includes", "byteOffset", "indexOf", "byfeOffset", "lastIndexOf", "swap16", "swap32", "swap64", "toString", "write", "writeDoubleLE", "writeFloatLE", "writeUInt32LE", "writeInt32LE", "readDoubleLE", "readFloatLE", "readUInt32LE", "readInt32LE", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "__commonJS", "cb", "mod", "__toBinary", "table", "i", "base64", "n", "bytes2", "i2", "j", "c0", "c1", "c2", "c3", "exports2", "module2", "bytes", "compiled", "imports", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b4a", "wasm", "wasmPromise", "mod", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "size", "input", "enc", "i", "cb", "noop", "ph", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "r", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_32", "set25519", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "b", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "m", "par25519", "d", "vn", "x", "xi", "y", "yi", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "libjs_exports", "__export", "crypto_exports", "utils_exports", "Archethic", "__toCommonJS", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "i", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_crypto", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "pseudoRandomKey", "cipher", "decipher", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_crypto", "import_base64url", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "t", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] } diff --git a/dist/archethic.js b/dist/archethic.js index 624dcef..8eae13d 100644 --- a/dist/archethic.js +++ b/dist/archethic.js @@ -1,24 +1,24 @@ -var archethic=(()=>{var W_=Object.create;var Hs=Object.defineProperty;var J_=Object.getOwnPropertyDescriptor;var X_=Object.getOwnPropertyNames;var Z_=Object.getPrototypeOf,eI=Object.prototype.hasOwnProperty;var Bv=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var tI=(t,e)=>()=>(t&&(e=t(t=0)),e);var P=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Xh=(t,e)=>{for(var r in e)Hs(t,r,{get:e[r],enumerable:!0})},qv=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of X_(e))!eI.call(t,n)&&n!==r&&Hs(t,n,{get:()=>e[n],enumerable:!(i=J_(e,n))||i.enumerable});return t};var $r=(t,e,r)=>(r=t!=null?W_(Z_(t)):{},qv(e||!t||!t.__esModule?Hs(r,"default",{value:t,enumerable:!0}):r,t)),rI=t=>qv(Hs({},"__esModule",{value:!0}),t);var Ov=P(zs=>{"use strict";g();zs.byteLength=nI;zs.toByteArray=aI;zs.fromByteArray=uI;var Fi=[],Wr=[],iI=typeof Uint8Array<"u"?Uint8Array:Array,Zh="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(lf=0,Rv=Zh.length;lf0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var i=r===e?0:4-r%4;return[r,i]}function nI(t){var e=Tv(t),r=e[0],i=e[1];return(r+i)*3/4-i}function fI(t,e,r){return(e+r)*3/4-r}function aI(t){var e,r=Tv(t),i=r[0],n=r[1],a=new iI(fI(t,i,n)),o=0,c=n>0?i-4:i,m;for(m=0;m>16&255,a[o++]=e>>8&255,a[o++]=e&255;return n===2&&(e=Wr[t.charCodeAt(m)]<<2|Wr[t.charCodeAt(m+1)]>>4,a[o++]=e&255),n===1&&(e=Wr[t.charCodeAt(m)]<<10|Wr[t.charCodeAt(m+1)]<<4|Wr[t.charCodeAt(m+2)]>>2,a[o++]=e>>8&255,a[o++]=e&255),a}function oI(t){return Fi[t>>18&63]+Fi[t>>12&63]+Fi[t>>6&63]+Fi[t&63]}function sI(t,e,r){for(var i,n=[],a=e;ac?c:o+a));return i===1?(e=t[r-1],n.push(Fi[e>>2]+Fi[e<<4&63]+"==")):i===2&&(e=(t[r-2]<<8)+t[r-1],n.push(Fi[e>>10]+Fi[e>>4&63]+Fi[e<<2&63]+"=")),n.join("")}});var Dv=P(ec=>{g();ec.read=function(t,e,r,i,n){var a,o,c=n*8-i-1,m=(1<>1,B=-7,R=r?n-1:0,F=r?-1:1,N=t[e+R];for(R+=F,a=N&(1<<-B)-1,N>>=-B,B+=c;B>0;a=a*256+t[e+R],R+=F,B-=8);for(o=a&(1<<-B)-1,a>>=-B,B+=i;B>0;o=o*256+t[e+R],R+=F,B-=8);if(a===0)a=1-M;else{if(a===m)return o?NaN:(N?-1:1)*(1/0);o=o+Math.pow(2,i),a=a-M}return(N?-1:1)*o*Math.pow(2,a-i)};ec.write=function(t,e,r,i,n,a){var o,c,m,M=a*8-n-1,B=(1<>1,F=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,N=i?0:a-1,G=i?1:-1,Z=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(c=isNaN(e)?1:0,o=B):(o=Math.floor(Math.log(e)/Math.LN2),e*(m=Math.pow(2,-o))<1&&(o--,m*=2),o+R>=1?e+=F/m:e+=F*Math.pow(2,1-R),e*m>=2&&(o++,m/=2),o+R>=B?(c=0,o=B):o+R>=1?(c=(e*m-1)*Math.pow(2,n),o=o+R):(c=e*Math.pow(2,R-1)*Math.pow(2,n),o=0));n>=8;t[r+N]=c&255,N+=G,c/=256,n-=8);for(o=o<0;t[r+N]=o&255,N+=G,o/=256,M-=8);t[r+N-G]|=Z*128}});var fn=P(sa=>{"use strict";g();var tc=Ov(),aa=Dv(),Pv=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;sa.Buffer=re;sa.SlowBuffer=vI;sa.INSPECT_MAX_BYTES=50;var Gs=2147483647;sa.kMaxLength=Gs;re.TYPED_ARRAY_SUPPORT=hI();!re.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function hI(){try{let t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),t.foo()===42}catch{return!1}}Object.defineProperty(re.prototype,"parent",{enumerable:!0,get:function(){if(!!re.isBuffer(this))return this.buffer}});Object.defineProperty(re.prototype,"offset",{enumerable:!0,get:function(){if(!!re.isBuffer(this))return this.byteOffset}});function nn(t){if(t>Gs)throw new RangeError('The value "'+t+'" is invalid for option "size"');let e=new Uint8Array(t);return Object.setPrototypeOf(e,re.prototype),e}function re(t,e,r){if(typeof t=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return fc(t)}return Lv(t,e,r)}re.poolSize=8192;function Lv(t,e,r){if(typeof t=="string")return dI(t,e);if(ArrayBuffer.isView(t))return lI(t);if(t==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(Li(t,ArrayBuffer)||t&&Li(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Li(t,SharedArrayBuffer)||t&&Li(t.buffer,SharedArrayBuffer)))return ic(t,e,r);if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let i=t.valueOf&&t.valueOf();if(i!=null&&i!==t)return re.from(i,e,r);let n=pI(t);if(n)return n;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof t[Symbol.toPrimitive]=="function")return re.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}re.from=function(t,e,r){return Lv(t,e,r)};Object.setPrototypeOf(re.prototype,Uint8Array.prototype);Object.setPrototypeOf(re,Uint8Array);function Nv(t){if(typeof t!="number")throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function cI(t,e,r){return Nv(t),t<=0?nn(t):e!==void 0?typeof r=="string"?nn(t).fill(e,r):nn(t).fill(e):nn(t)}re.alloc=function(t,e,r){return cI(t,e,r)};function fc(t){return Nv(t),nn(t<0?0:ac(t)|0)}re.allocUnsafe=function(t){return fc(t)};re.allocUnsafeSlow=function(t){return fc(t)};function dI(t,e){if((typeof e!="string"||e==="")&&(e="utf8"),!re.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let r=Qv(t,e)|0,i=nn(r),n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}function rc(t){let e=t.length<0?0:ac(t.length)|0,r=nn(e);for(let i=0;i=Gs)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Gs.toString(16)+" bytes");return t|0}function vI(t){return+t!=t&&(t=0),re.alloc(+t)}re.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==re.prototype};re.compare=function(e,r){if(Li(e,Uint8Array)&&(e=re.from(e,e.offset,e.byteLength)),Li(r,Uint8Array)&&(r=re.from(r,r.offset,r.byteLength)),!re.isBuffer(e)||!re.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===r)return 0;let i=e.length,n=r.length;for(let a=0,o=Math.min(i,n);an.length?(re.isBuffer(o)||(o=re.from(o)),o.copy(n,a)):Uint8Array.prototype.set.call(n,o,a);else if(re.isBuffer(o))o.copy(n,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=o.length}return n};function Qv(t,e){if(re.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||Li(t,ArrayBuffer))return t.byteLength;if(typeof t!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);let r=t.length,i=arguments.length>2&&arguments[2]===!0;if(!i&&r===0)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return nc(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Wv(t).length;default:if(n)return i?-1:nc(t).length;e=(""+e).toLowerCase(),n=!0}}re.byteLength=Qv;function bI(t,e,r){let i=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,e>>>=0,r<=e))return"";for(t||(t="utf8");;)switch(t){case"hex":return MI(this,e,r);case"utf8":case"utf-8":return jv(this,e,r);case"ascii":return II(this,e,r);case"latin1":case"binary":return EI(this,e,r);case"base64":return AI(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return SI(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}re.prototype._isBuffer=!0;function pf(t,e,r){let i=t[e];t[e]=t[r],t[r]=i}re.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(e+=" ... "),""};Pv&&(re.prototype[Pv]=re.prototype.inspect);re.prototype.compare=function(e,r,i,n,a){if(Li(e,Uint8Array)&&(e=re.from(e,e.offset,e.byteLength)),!re.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(r===void 0&&(r=0),i===void 0&&(i=e?e.length:0),n===void 0&&(n=0),a===void 0&&(a=this.length),r<0||i>e.length||n<0||a>this.length)throw new RangeError("out of range index");if(n>=a&&r>=i)return 0;if(n>=a)return-1;if(r>=i)return 1;if(r>>>=0,i>>>=0,n>>>=0,a>>>=0,this===e)return 0;let o=a-n,c=i-r,m=Math.min(o,c),M=this.slice(n,a),B=e.slice(r,i);for(let R=0;R2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,sc(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0)if(n)r=0;else return-1;if(typeof e=="string"&&(e=re.from(e,i)),re.isBuffer(e))return e.length===0?-1:Uv(t,e,r,i,n);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):Uv(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function Uv(t,e,r,i,n){let a=1,o=t.length,c=e.length;if(i!==void 0&&(i=String(i).toLowerCase(),i==="ucs2"||i==="ucs-2"||i==="utf16le"||i==="utf-16le")){if(t.length<2||e.length<2)return-1;a=2,o/=2,c/=2,r/=2}function m(B,R){return a===1?B[R]:B.readUInt16BE(R*a)}let M;if(n){let B=-1;for(M=r;Mo&&(r=o-c),M=r;M>=0;M--){let B=!0;for(let R=0;Rn&&(i=n)):i=n;let a=e.length;i>a/2&&(i=a/2);let o;for(o=0;o>>0,isFinite(i)?(i=i>>>0,n===void 0&&(n="utf8")):(n=i,i=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((i===void 0||i>a)&&(i=a),e.length>0&&(i<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return gI(this,e,r,i);case"utf8":case"utf-8":return yI(this,e,r,i);case"ascii":case"latin1":case"binary":return mI(this,e,r,i);case"base64":return xI(this,e,r,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wI(this,e,r,i);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}};re.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function AI(t,e,r){return e===0&&r===t.length?tc.fromByteArray(t):tc.fromByteArray(t.slice(e,r))}function jv(t,e,r){r=Math.min(t.length,r);let i=[],n=e;for(;n239?4:a>223?3:a>191?2:1;if(n+c<=r){let m,M,B,R;switch(c){case 1:a<128&&(o=a);break;case 2:m=t[n+1],(m&192)===128&&(R=(a&31)<<6|m&63,R>127&&(o=R));break;case 3:m=t[n+1],M=t[n+2],(m&192)===128&&(M&192)===128&&(R=(a&15)<<12|(m&63)<<6|M&63,R>2047&&(R<55296||R>57343)&&(o=R));break;case 4:m=t[n+1],M=t[n+2],B=t[n+3],(m&192)===128&&(M&192)===128&&(B&192)===128&&(R=(a&15)<<18|(m&63)<<12|(M&63)<<6|B&63,R>65535&&R<1114112&&(o=R))}}o===null?(o=65533,c=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|o&1023),i.push(o),n+=c}return _I(i)}var kv=4096;function _I(t){let e=t.length;if(e<=kv)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii)&&(r=i);let n="";for(let a=e;ai&&(e=i),r<0?(r+=i,r<0&&(r=0)):r>i&&(r=i),rr)throw new RangeError("Trying to access beyond buffer length")}re.prototype.readUintLE=re.prototype.readUIntLE=function(e,r,i){e=e>>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e],a=1,o=0;for(;++o>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e+--r],a=1;for(;r>0&&(a*=256);)n+=this[e+--r]*a;return n};re.prototype.readUint8=re.prototype.readUInt8=function(e,r){return e=e>>>0,r||ur(e,1,this.length),this[e]};re.prototype.readUint16LE=re.prototype.readUInt16LE=function(e,r){return e=e>>>0,r||ur(e,2,this.length),this[e]|this[e+1]<<8};re.prototype.readUint16BE=re.prototype.readUInt16BE=function(e,r){return e=e>>>0,r||ur(e,2,this.length),this[e]<<8|this[e+1]};re.prototype.readUint32LE=re.prototype.readUInt32LE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};re.prototype.readUint32BE=re.prototype.readUInt32BE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};re.prototype.readBigUInt64LE=On(function(e){e=e>>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=r+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,a=this[++e]+this[++e]*2**8+this[++e]*2**16+i*2**24;return BigInt(n)+(BigInt(a)<>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=r*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],a=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i;return(BigInt(n)<>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e],a=1,o=0;for(;++o=a&&(n-=Math.pow(2,8*r)),n};re.prototype.readIntBE=function(e,r,i){e=e>>>0,r=r>>>0,i||ur(e,r,this.length);let n=r,a=1,o=this[e+--n];for(;n>0&&(a*=256);)o+=this[e+--n]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};re.prototype.readInt8=function(e,r){return e=e>>>0,r||ur(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};re.prototype.readInt16LE=function(e,r){e=e>>>0,r||ur(e,2,this.length);let i=this[e]|this[e+1]<<8;return i&32768?i|4294901760:i};re.prototype.readInt16BE=function(e,r){e=e>>>0,r||ur(e,2,this.length);let i=this[e+1]|this[e]<<8;return i&32768?i|4294901760:i};re.prototype.readInt32LE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};re.prototype.readInt32BE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};re.prototype.readBigInt64LE=On(function(e){e=e>>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(i<<24);return(BigInt(n)<>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=(r<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(n)<>>0,r||ur(e,4,this.length),aa.read(this,e,!0,23,4)};re.prototype.readFloatBE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),aa.read(this,e,!1,23,4)};re.prototype.readDoubleLE=function(e,r){return e=e>>>0,r||ur(e,8,this.length),aa.read(this,e,!0,52,8)};re.prototype.readDoubleBE=function(e,r){return e=e>>>0,r||ur(e,8,this.length),aa.read(this,e,!1,52,8)};function Or(t,e,r,i,n,a){if(!re.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}re.prototype.writeUintLE=re.prototype.writeUIntLE=function(e,r,i,n){if(e=+e,r=r>>>0,i=i>>>0,!n){let c=Math.pow(2,8*i)-1;Or(this,e,r,i,c,0)}let a=1,o=0;for(this[r]=e&255;++o>>0,i=i>>>0,!n){let c=Math.pow(2,8*i)-1;Or(this,e,r,i,c,0)}let a=i-1,o=1;for(this[r+a]=e&255;--a>=0&&(o*=256);)this[r+a]=e/o&255;return r+i};re.prototype.writeUint8=re.prototype.writeUInt8=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,1,255,0),this[r]=e&255,r+1};re.prototype.writeUint16LE=re.prototype.writeUInt16LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,65535,0),this[r]=e&255,this[r+1]=e>>>8,r+2};re.prototype.writeUint16BE=re.prototype.writeUInt16BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,65535,0),this[r]=e>>>8,this[r+1]=e&255,r+2};re.prototype.writeUint32LE=re.prototype.writeUInt32LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,4294967295,0),this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=e&255,r+4};re.prototype.writeUint32BE=re.prototype.writeUInt32BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,4294967295,0),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};function Hv(t,e,r,i,n){$v(e,i,n,t,r,7);let a=Number(e&BigInt(4294967295));t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a;let o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=o,o=o>>8,t[r++]=o,o=o>>8,t[r++]=o,o=o>>8,t[r++]=o,r}function zv(t,e,r,i,n){$v(e,i,n,t,r,7);let a=Number(e&BigInt(4294967295));t[r+7]=a,a=a>>8,t[r+6]=a,a=a>>8,t[r+5]=a,a=a>>8,t[r+4]=a;let o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=o,o=o>>8,t[r+2]=o,o=o>>8,t[r+1]=o,o=o>>8,t[r]=o,r+8}re.prototype.writeBigUInt64LE=On(function(e,r=0){return Hv(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});re.prototype.writeBigUInt64BE=On(function(e,r=0){return zv(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});re.prototype.writeIntLE=function(e,r,i,n){if(e=+e,r=r>>>0,!n){let m=Math.pow(2,8*i-1);Or(this,e,r,i,m-1,-m)}let a=0,o=1,c=0;for(this[r]=e&255;++a>0)-c&255;return r+i};re.prototype.writeIntBE=function(e,r,i,n){if(e=+e,r=r>>>0,!n){let m=Math.pow(2,8*i-1);Or(this,e,r,i,m-1,-m)}let a=i-1,o=1,c=0;for(this[r+a]=e&255;--a>=0&&(o*=256);)e<0&&c===0&&this[r+a+1]!==0&&(c=1),this[r+a]=(e/o>>0)-c&255;return r+i};re.prototype.writeInt8=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,1,127,-128),e<0&&(e=255+e+1),this[r]=e&255,r+1};re.prototype.writeInt16LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,32767,-32768),this[r]=e&255,this[r+1]=e>>>8,r+2};re.prototype.writeInt16BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,32767,-32768),this[r]=e>>>8,this[r+1]=e&255,r+2};re.prototype.writeInt32LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,2147483647,-2147483648),this[r]=e&255,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24,r+4};re.prototype.writeInt32BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};re.prototype.writeBigInt64LE=On(function(e,r=0){return Hv(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});re.prototype.writeBigInt64BE=On(function(e,r=0){return zv(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Gv(t,e,r,i,n,a){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Yv(t,e,r,i,n){return e=+e,r=r>>>0,n||Gv(t,e,r,4,34028234663852886e22,-34028234663852886e22),aa.write(t,e,r,i,23,4),r+4}re.prototype.writeFloatLE=function(e,r,i){return Yv(this,e,r,!0,i)};re.prototype.writeFloatBE=function(e,r,i){return Yv(this,e,r,!1,i)};function Vv(t,e,r,i,n){return e=+e,r=r>>>0,n||Gv(t,e,r,8,17976931348623157e292,-17976931348623157e292),aa.write(t,e,r,i,52,8),r+8}re.prototype.writeDoubleLE=function(e,r,i){return Vv(this,e,r,!0,i)};re.prototype.writeDoubleBE=function(e,r,i){return Vv(this,e,r,!1,i)};re.prototype.copy=function(e,r,i,n){if(!re.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),!n&&n!==0&&(n=this.length),r>=e.length&&(r=e.length),r||(r=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-r>>0,i=i===void 0?this.length:i>>>0,e||(e=0);let a;if(typeof e=="number")for(a=r;a2**32?n=Fv(String(r)):typeof r=="bigint"&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Fv(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i},RangeError);function Fv(t){let e="",r=t.length,i=t[0]==="-"?1:0;for(;r>=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function CI(t,e,r){oa(e,"offset"),(t[e]===void 0||t[e+r]===void 0)&&uo(e,t.length-(r+1))}function $v(t,e,r,i,n,a){if(t>r||t3?e===0||e===BigInt(0)?c=`>= 0${o} and < 2${o} ** ${(a+1)*8}${o}`:c=`>= -(2${o} ** ${(a+1)*8-1}${o}) and < 2 ** ${(a+1)*8-1}${o}`:c=`>= ${e}${o} and <= ${r}${o}`,new fa.ERR_OUT_OF_RANGE("value",c,t)}CI(i,n,a)}function oa(t,e){if(typeof t!="number")throw new fa.ERR_INVALID_ARG_TYPE(e,"number",t)}function uo(t,e,r){throw Math.floor(t)!==t?(oa(t,r),new fa.ERR_OUT_OF_RANGE(r||"offset","an integer",t)):e<0?new fa.ERR_BUFFER_OUT_OF_BOUNDS:new fa.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}var BI=/[^+/0-9A-Za-z-_]/g;function qI(t){if(t=t.split("=")[0],t=t.trim().replace(BI,""),t.length<2)return"";for(;t.length%4!==0;)t=t+"=";return t}function nc(t,e){e=e||1/0;let r,i=t.length,n=null,a=[];for(let o=0;o55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}else if(o+1===i){(e-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),n=r;continue}r=(n-55296<<10|r-56320)+65536}else n&&(e-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function RI(t){let e=[];for(let r=0;r>8,n=r%256,a.push(n),a.push(i);return a}function Wv(t){return tc.toByteArray(qI(t))}function Ys(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function Li(t,e){return t instanceof e||t!=null&&t.constructor!=null&&t.constructor.name!=null&&t.constructor.name===e.name}function sc(t){return t!==t}var OI=function(){let t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){let i=r*16;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function On(t){return typeof BigInt>"u"?DI:t}function DI(){throw new Error("BigInt not supported")}});var U,g=tI(()=>{U=fn().Buffer});var uc=P((an,Xv)=>{g();var Jv=typeof self<"u"?self:an,Vs=function(){function t(){this.fetch=!1,this.DOMException=Jv.DOMException}return t.prototype=Jv,new t}();(function(t){var e=function(r){var i={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};function n(d){return d&&DataView.prototype.isPrototypeOf(d)}if(i.arrayBuffer)var a=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],o=ArrayBuffer.isView||function(d){return d&&a.indexOf(Object.prototype.toString.call(d))>-1};function c(d){if(typeof d!="string"&&(d=String(d)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(d))throw new TypeError("Invalid character in header field name");return d.toLowerCase()}function m(d){return typeof d!="string"&&(d=String(d)),d}function M(d){var b={next:function(){var E=d.shift();return{done:E===void 0,value:E}}};return i.iterable&&(b[Symbol.iterator]=function(){return b}),b}function B(d){this.map={},d instanceof B?d.forEach(function(b,E){this.append(E,b)},this):Array.isArray(d)?d.forEach(function(b){this.append(b[0],b[1])},this):d&&Object.getOwnPropertyNames(d).forEach(function(b){this.append(b,d[b])},this)}B.prototype.append=function(d,b){d=c(d),b=m(b);var E=this.map[d];this.map[d]=E?E+", "+b:b},B.prototype.delete=function(d){delete this.map[c(d)]},B.prototype.get=function(d){return d=c(d),this.has(d)?this.map[d]:null},B.prototype.has=function(d){return this.map.hasOwnProperty(c(d))},B.prototype.set=function(d,b){this.map[c(d)]=m(b)},B.prototype.forEach=function(d,b){for(var E in this.map)this.map.hasOwnProperty(E)&&d.call(b,this.map[E],E,this)},B.prototype.keys=function(){var d=[];return this.forEach(function(b,E){d.push(E)}),M(d)},B.prototype.values=function(){var d=[];return this.forEach(function(b){d.push(b)}),M(d)},B.prototype.entries=function(){var d=[];return this.forEach(function(b,E){d.push([E,b])}),M(d)},i.iterable&&(B.prototype[Symbol.iterator]=B.prototype.entries);function R(d){if(d.bodyUsed)return Promise.reject(new TypeError("Already read"));d.bodyUsed=!0}function F(d){return new Promise(function(b,E){d.onload=function(){b(d.result)},d.onerror=function(){E(d.error)}})}function N(d){var b=new FileReader,E=F(b);return b.readAsArrayBuffer(d),E}function G(d){var b=new FileReader,E=F(b);return b.readAsText(d),E}function Z(d){for(var b=new Uint8Array(d),E=new Array(b.length),p=0;p-1?b:d}function ve(d,b){b=b||{};var E=b.body;if(d instanceof ve){if(d.bodyUsed)throw new TypeError("Already read");this.url=d.url,this.credentials=d.credentials,b.headers||(this.headers=new B(d.headers)),this.method=d.method,this.mode=d.mode,this.signal=d.signal,!E&&d._bodyInit!=null&&(E=d._bodyInit,d.bodyUsed=!0)}else this.url=String(d);if(this.credentials=b.credentials||this.credentials||"same-origin",(b.headers||!this.headers)&&(this.headers=new B(b.headers)),this.method=ge(b.method||this.method||"GET"),this.mode=b.mode||this.mode||null,this.signal=b.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&E)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(E)}ve.prototype.clone=function(){return new ve(this,{body:this._bodyInit})};function Ke(d){var b=new FormData;return d.trim().split("&").forEach(function(E){if(E){var p=E.split("="),f=p.shift().replace(/\+/g," "),s=p.join("=").replace(/\+/g," ");b.append(decodeURIComponent(f),decodeURIComponent(s))}}),b}function be(d){var b=new B,E=d.replace(/\r?\n[\t ]+/g," ");return E.split(/\r?\n/).forEach(function(p){var f=p.split(":"),s=f.shift().trim();if(s){var v=f.join(":").trim();b.append(s,v)}}),b}fe.call(ve.prototype);function pe(d,b){b||(b={}),this.type="default",this.status=b.status===void 0?200:b.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in b?b.statusText:"OK",this.headers=new B(b.headers),this.url=b.url||"",this._initBody(d)}fe.call(pe.prototype),pe.prototype.clone=function(){return new pe(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new B(this.headers),url:this.url})},pe.error=function(){var d=new pe(null,{status:0,statusText:""});return d.type="error",d};var Ne=[301,302,303,307,308];pe.redirect=function(d,b){if(Ne.indexOf(b)===-1)throw new RangeError("Invalid status code");return new pe(null,{status:b,headers:{location:d}})},r.DOMException=t.DOMException;try{new r.DOMException}catch{r.DOMException=function(b,E){this.message=b,this.name=E;var p=Error(b);this.stack=p.stack},r.DOMException.prototype=Object.create(Error.prototype),r.DOMException.prototype.constructor=r.DOMException}function k(d,b){return new Promise(function(E,p){var f=new ve(d,b);if(f.signal&&f.signal.aborted)return p(new r.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function v(){s.abort()}s.onload=function(){var l={status:s.status,statusText:s.statusText,headers:be(s.getAllResponseHeaders()||"")};l.url="responseURL"in s?s.responseURL:l.headers.get("X-Request-URL");var h="response"in s?s.response:s.responseText;E(new pe(h,l))},s.onerror=function(){p(new TypeError("Network request failed"))},s.ontimeout=function(){p(new TypeError("Network request failed"))},s.onabort=function(){p(new r.DOMException("Aborted","AbortError"))},s.open(f.method,f.url,!0),f.credentials==="include"?s.withCredentials=!0:f.credentials==="omit"&&(s.withCredentials=!1),"responseType"in s&&i.blob&&(s.responseType="blob"),f.headers.forEach(function(l,h){s.setRequestHeader(h,l)}),f.signal&&(f.signal.addEventListener("abort",v),s.onreadystatechange=function(){s.readyState===4&&f.signal.removeEventListener("abort",v)}),s.send(typeof f._bodyInit>"u"?null:f._bodyInit)})}return k.polyfill=!0,t.fetch||(t.fetch=k,t.Headers=B,t.Request=ve,t.Response=pe),r.Headers=B,r.Request=ve,r.Response=pe,r.fetch=k,Object.defineProperty(r,"__esModule",{value:!0}),r}({})})(Vs);Vs.fetch.ponyfill=!0;delete Vs.fetch.polyfill;var ua=Vs;an=ua.fetch;an.default=ua.fetch;an.fetch=ua.fetch;an.Headers=ua.Headers;an.Request=ua.Request;an.Response=ua.Response;Xv.exports=an});var dc=P(r2=>{g();var Zv=Object.defineProperty,PI=t=>Zv(t,"__esModule",{value:!0}),UI=(t,e)=>{PI(t);for(var r in e)Zv(t,r,{get:e[r],enumerable:!0})};UI(r2,{Channel:()=>t2,LongPoll:()=>cc,Presence:()=>co,Serializer:()=>lo,Socket:()=>KI});var po=t=>typeof t=="function"?t:function(){return t},kI=typeof self<"u"?self:null,ho=typeof window<"u"?window:null,Ws=kI||ho||void 0,FI="2.0.0",Ni={connecting:0,open:1,closing:2,closed:3},LI=1e4,NI=1e3,Kr={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},on={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},hc={longpoll:"longpoll",websocket:"websocket"},QI={complete:4},$s=class{constructor(t,e,r,i){this.channel=t,this.event=e,this.payload=r||function(){return{}},this.receivedResp=null,this.timeout=i,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:t,response:e,_ref:r}){this.recHooks.filter(i=>i.status===t).forEach(i=>i.callback(e))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},e2=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},t2=class{constructor(t,e,r){this.state=Kr.closed,this.topic=t,this.params=po(e||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new $s(this,on.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new e2(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Kr.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(i=>i.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=Kr.closed,this.socket.remove(this)}),this.onError(i=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,i),this.isJoining()&&this.joinPush.reset(),this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new $s(this,on.leave,po({}),this.timeout).send(),this.state=Kr.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(on.reply,(i,n)=>{this.trigger(this.replyEventName(n),i)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(t){this.on(on.close,t)}onError(t){return this.on(on.error,e=>t(e))}on(t,e){let r=this.bindingRef++;return this.bindings.push({event:t,ref:r,callback:e}),r}off(t,e){this.bindings=this.bindings.filter(r=>!(r.event===t&&(typeof e>"u"||e===r.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,r=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let i=new $s(this,t,function(){return e},r);return this.canPush()?i.send():(i.startTimeout(),this.pushBuffer.push(i)),i}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Kr.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(on.close,"leave")},r=new $s(this,on.leave,po({}),t);return r.receive("ok",()=>e()).receive("timeout",()=>e()),r.send(),this.canPush()||r.trigger("ok",{}),r}onMessage(t,e,r){return e}isMember(t,e,r,i){return this.topic!==t?!1:i&&i!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:r,joinRef:i}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Kr.joining,this.joinPush.resend(t))}trigger(t,e,r,i){let n=this.onMessage(t,e,r,i);if(e&&!n)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let a=this.bindings.filter(o=>o.event===t);for(let o=0;o{let c=this.parseJSON(t.responseText);o&&o(c)},a&&(t.ontimeout=a),t.onprogress=()=>{},t.send(i)}static xhrRequest(t,e,r,i,n,a,o,c){t.open(e,r,!0),t.timeout=a,t.setRequestHeader("Content-Type",i),t.onerror=()=>{c&&c(null)},t.onreadystatechange=()=>{if(t.readyState===QI.complete&&c){let m=this.parseJSON(t.responseText);c(m)}},o&&(t.ontimeout=o),t.send(n)}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let r=[];for(var i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;let n=e?`${e}[${i}]`:i,a=t[i];typeof a=="object"?r.push(this.serialize(a,n)):r.push(encodeURIComponent(n)+"="+encodeURIComponent(a))}return r.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let r=t.match(/\?/)?"&":"?";return`${t}${r}${this.serialize(e)}`}},cc=class{constructor(t){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=Ni.connecting,this.poll()}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+hc.websocket),"$1/"+hc.longpoll)}endpointURL(){return vo.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(){this.close(),this.readyState=Ni.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry()}poll(){(this.readyState===Ni.open||this.readyState===Ni.connecting)&&vo.request("GET",this.endpointURL(),"application/json",null,this.timeout,this.ontimeout.bind(this),t=>{if(t){var{status:e,token:r,messages:i}=t;this.token=r}else e=0;switch(e){case 200:i.forEach(n=>{setTimeout(()=>{this.onmessage({data:n})},0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Ni.open,this.onopen(),this.poll();break;case 403:this.onerror(),this.close();break;case 0:case 500:this.onerror(),this.closeAndRetry();break;default:throw new Error(`unhandled poll status ${e}`)}})}send(t){vo.request("POST",this.endpointURL(),"application/json",t,this.timeout,this.onerror.bind(this,"timeout"),e=>{(!e||e.status!==200)&&(this.onerror(e&&e.status),this.closeAndRetry())})}close(t,e){this.readyState=Ni.closed,this.onclose()}},co=class{constructor(t,e={}){let r=e.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(r.state,i=>{let{onJoin:n,onLeave:a,onSync:o}=this.caller;this.joinRef=this.channel.joinRef(),this.state=co.syncState(this.state,i,n,a),this.pendingDiffs.forEach(c=>{this.state=co.syncDiff(this.state,c,n,a)}),this.pendingDiffs=[],o()}),this.channel.on(r.diff,i=>{let{onJoin:n,onLeave:a,onSync:o}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(i):(this.state=co.syncDiff(this.state,i,n,a),o())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return co.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,e,r,i){let n=this.clone(t),a={},o={};return this.map(n,(c,m)=>{e[c]||(o[c]=m)}),this.map(e,(c,m)=>{let M=n[c];if(M){let B=m.metas.map(G=>G.phx_ref),R=M.metas.map(G=>G.phx_ref),F=m.metas.filter(G=>R.indexOf(G.phx_ref)<0),N=M.metas.filter(G=>B.indexOf(G.phx_ref)<0);F.length>0&&(a[c]=m,a[c].metas=F),N.length>0&&(o[c]=this.clone(M),o[c].metas=N)}else a[c]=m}),this.syncDiff(n,{joins:a,leaves:o},r,i)}static syncDiff(t,e,r,i){let{joins:n,leaves:a}=this.clone(e);return r||(r=function(){}),i||(i=function(){}),this.map(n,(o,c)=>{let m=t[o];if(t[o]=this.clone(c),m){let M=t[o].metas.map(R=>R.phx_ref),B=m.metas.filter(R=>M.indexOf(R.phx_ref)<0);t[o].metas.unshift(...B)}r(o,m,c)}),this.map(a,(o,c)=>{let m=t[o];if(!m)return;let M=c.metas.map(B=>B.phx_ref);m.metas=m.metas.filter(B=>M.indexOf(B.phx_ref)<0),i(o,m,c),m.metas.length===0&&delete t[o]}),t}static list(t,e){return e||(e=function(r,i){return i}),this.map(t,(r,i)=>e(r,i))}static map(t,e){return Object.getOwnPropertyNames(t).map(r=>e(r,t[r]))}static clone(t){return JSON.parse(JSON.stringify(t))}},lo={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let r=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(r))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[r,i,n,a,o]=JSON.parse(t);return e({join_ref:r,ref:i,topic:n,event:a,payload:o})}},binaryEncode(t){let{join_ref:e,ref:r,event:i,topic:n,payload:a}=t,o=this.META_LENGTH+e.length+r.length+n.length+i.length,c=new ArrayBuffer(this.HEADER_LENGTH+o),m=new DataView(c),M=0;m.setUint8(M++,this.KINDS.push),m.setUint8(M++,e.length),m.setUint8(M++,r.length),m.setUint8(M++,n.length),m.setUint8(M++,i.length),Array.from(e,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(r,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(n,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(i,R=>m.setUint8(M++,R.charCodeAt(0)));var B=new Uint8Array(c.byteLength+a.byteLength);return B.set(new Uint8Array(c),0),B.set(new Uint8Array(a),c.byteLength),B.buffer},binaryDecode(t){let e=new DataView(t),r=e.getUint8(0),i=new TextDecoder;switch(r){case this.KINDS.push:return this.decodePush(t,e,i);case this.KINDS.reply:return this.decodeReply(t,e,i);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,i)}},decodePush(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=e.getUint8(3),o=this.HEADER_LENGTH+this.META_LENGTH-1,c=r.decode(t.slice(o,o+i));o=o+i;let m=r.decode(t.slice(o,o+n));o=o+n;let M=r.decode(t.slice(o,o+a));o=o+a;let B=t.slice(o,t.byteLength);return{join_ref:c,ref:null,topic:m,event:M,payload:B}},decodeReply(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=e.getUint8(3),o=e.getUint8(4),c=this.HEADER_LENGTH+this.META_LENGTH,m=r.decode(t.slice(c,c+i));c=c+i;let M=r.decode(t.slice(c,c+n));c=c+n;let B=r.decode(t.slice(c,c+a));c=c+a;let R=r.decode(t.slice(c,c+o));c=c+o;let F=t.slice(c,t.byteLength),N={status:R,response:F};return{join_ref:m,ref:M,topic:B,event:on.reply,payload:N}},decodeBroadcast(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=this.HEADER_LENGTH+2,o=r.decode(t.slice(a,a+i));a=a+i;let c=r.decode(t.slice(a,a+n));a=a+n;let m=t.slice(a,t.byteLength);return{join_ref:null,ref:null,topic:o,event:c,payload:m}}},KI=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=e.timeout||LI,this.transport=e.transport||Ws.WebSocket||cc,this.establishedConnections=0,this.defaultEncoder=lo.encode.bind(lo),this.defaultDecoder=lo.decode.bind(lo),this.closeWasClean=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.transport!==cc?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let r=null;ho&&ho.addEventListener&&(ho.addEventListener("pagehide",i=>{this.conn&&(this.disconnect(),r=this.connectClock)}),ho.addEventListener("pageshow",i=>{r===this.connectClock&&(r=null,this.connect())})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.rejoinAfterMs=i=>e.rejoinAfterMs?e.rejoinAfterMs(i):[1e3,2e3,5e3][i-1]||1e4,this.reconnectAfterMs=i=>e.reconnectAfterMs?e.reconnectAfterMs(i):[10,50,100,150,200,250,500,1e3,2e3][i-1]||5e3,this.logger=e.logger||null,this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=po(e.params||{}),this.endPoint=`${t}/${hc.websocket}`,this.vsn=e.vsn||FI,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new e2(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}replaceTransport(t){this.disconnect(),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=vo.appendParams(vo.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,r){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(t,e,r)}connect(t){this.connectClock++,t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=po(t)),!this.conn&&(this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(t,e,r){this.logger(t,e,r)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,t])=>t())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.abnormalClose("heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,clearTimeout(this.heartbeatTimer),setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,r){if(!this.conn)return t&&t();this.waitForBufferDone(()=>{this.conn&&(e?this.conn.close(e,r||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e=1){if(e===5||!this.conn||!this.conn.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(t,e+1)},150*e)}waitForSocketClosed(t,e=1){if(e===5||!this.conn||this.conn.readyState===Ni.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(t,e+1)},150*e)}onConnClose(t){let e=t&&t.code;this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(),clearTimeout(this.heartbeatTimer),!this.closeWasClean&&e!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,r])=>r(t))}onConnError(t){this.hasLogger()&&this.log("transport",t);let e=this.transport,r=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,i])=>{i(t,e,r)}),(e===this.transport||r>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(on.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case Ni.connecting:return"connecting";case Ni.open:return"open";case Ni.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e.joinRef()!==t.joinRef())}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([r])=>t.indexOf(r)===-1)}channel(t,e={}){let r=new t2(t,e,this);return this.channels.push(r),r}push(t){if(this.hasLogger()){let{topic:e,event:r,payload:i,ref:n,join_ref:a}=t;this.log("push",`${e} ${r} (${a}, ${n})`,i)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}abnormalClose(t){this.closeWasClean=!1,this.isConnected()&&this.conn.close(NI,t)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:r,event:i,payload:n,ref:a,join_ref:o}=e;a&&a===this.pendingHeartbeatRef&&(clearTimeout(this.heartbeatTimer),this.pendingHeartbeatRef=null,setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${n.status||""} ${r} ${i} ${a&&"("+a+")"||""}`,n);for(let c=0;cr.topic===t&&(r.isJoined()||r.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}}});var n2=P((Yj,i2)=>{g();var ha=null;typeof WebSocket<"u"?ha=WebSocket:typeof MozWebSocket<"u"?ha=MozWebSocket:typeof window<"u"||typeof window<"u"?ha=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(ha=self.WebSocket||self.MozWebSocket);i2.exports=ha});var Dn=P(($j,f2)=>{g();var jI=f2.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=jI)});var Js=P((Jj,a2)=>{g();var HI=a2.exports={version:"2.6.0"};typeof __e=="number"&&(__e=HI)});var vf=P((Zj,o2)=>{g();o2.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var ca=P((tH,s2)=>{g();var zI=vf();s2.exports=function(t){if(!zI(t))throw TypeError(t+" is not an object!");return t}});var bo=P((iH,u2)=>{g();u2.exports=function(t){try{return!!t()}catch{return!0}}});var da=P((fH,h2)=>{g();h2.exports=!bo()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var pc=P((oH,d2)=>{g();var c2=vf(),lc=Dn().document,GI=c2(lc)&&c2(lc.createElement);d2.exports=function(t){return GI?lc.createElement(t):{}}});var p2=P((uH,l2)=>{g();l2.exports=!da()&&!bo()(function(){return Object.defineProperty(pc()("div"),"a",{get:function(){return 7}}).a!=7})});var b2=P((cH,v2)=>{g();var Xs=vf();v2.exports=function(t,e){if(!Xs(t))return t;var r,i;if(e&&typeof(r=t.toString)=="function"&&!Xs(i=r.call(t))||typeof(r=t.valueOf)=="function"&&!Xs(i=r.call(t))||!e&&typeof(r=t.toString)=="function"&&!Xs(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}});var go=P(y2=>{g();var g2=ca(),YI=p2(),VI=b2(),$I=Object.defineProperty;y2.f=da()?Object.defineProperty:function(e,r,i){if(g2(e),r=VI(r,!0),g2(i),YI)try{return $I(e,r,i)}catch{}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[r]=i.value),e}});var vc=P((vH,m2)=>{g();m2.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var Pn=P((gH,x2)=>{g();var WI=go(),JI=vc();x2.exports=da()?function(t,e,r){return WI.f(t,e,JI(1,r))}:function(t,e,r){return t[e]=r,t}});var yo=P((mH,w2)=>{g();var XI={}.hasOwnProperty;w2.exports=function(t,e){return XI.call(t,e)}});var Zs=P((wH,A2)=>{g();var ZI=0,eE=Math.random();A2.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++ZI+eE).toString(36))}});var mo=P((_H,I2)=>{g();var tE=Dn(),e0=Pn(),_2=yo(),bc=Zs()("src"),gc="toString",yc=Function[gc],rE=(""+yc).split(gc);Js().inspectSource=function(t){return yc.call(t)};(I2.exports=function(t,e,r,i){var n=typeof r=="function";n&&(_2(r,"name")||e0(r,"name",e)),t[e]!==r&&(n&&(_2(r,bc)||e0(r,bc,t[e]?""+t[e]:rE.join(String(e)))),t===tE?t[e]=r:i?t[e]?t[e]=r:e0(t,e,r):(delete t[e],e0(t,e,r)))})(Function.prototype,gc,function(){return typeof this=="function"&&this[bc]||yc.call(this)})});var mc=P((EH,E2)=>{g();E2.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var xc=P((SH,M2)=>{g();var iE=mc();M2.exports=function(t,e,r){if(iE(t),e===void 0)return t;switch(r){case 1:return function(i){return t.call(e,i)};case 2:return function(i,n){return t.call(e,i,n)};case 3:return function(i,n,a){return t.call(e,i,n,a)}}return function(){return t.apply(e,arguments)}}});var Jr=P((BH,C2)=>{g();var la=Dn(),t0=Js(),nE=Pn(),fE=mo(),S2=xc(),wc="prototype",qr=function(t,e,r){var i=t&qr.F,n=t&qr.G,a=t&qr.S,o=t&qr.P,c=t&qr.B,m=n?la:a?la[e]||(la[e]={}):(la[e]||{})[wc],M=n?t0:t0[e]||(t0[e]={}),B=M[wc]||(M[wc]={}),R,F,N,G;n&&(r=e);for(R in r)F=!i&&m&&m[R]!==void 0,N=(F?m:r)[R],G=c&&F?S2(N,la):o&&typeof N=="function"?S2(Function.call,N):N,m&&fE(m,R,N,t&qr.U),M[R]!=N&&nE(M,R,G),o&&B[R]!=N&&(B[R]=N)};la.core=t0;qr.F=1;qr.G=2;qr.S=4;qr.P=8;qr.B=16;qr.W=32;qr.U=64;qr.R=128;C2.exports=qr});var xo=P((RH,B2)=>{g();var aE={}.toString;B2.exports=function(t){return aE.call(t).slice(8,-1)}});var Ac=P((OH,q2)=>{g();var oE=xo();q2.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return oE(t)=="String"?t.split(""):Object(t)}});var pa=P((PH,R2)=>{g();R2.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var _c=P((kH,T2)=>{g();var sE=pa();T2.exports=function(t){return Object(sE(t))}});var r0=P((LH,O2)=>{g();var uE=Math.ceil,hE=Math.floor;O2.exports=function(t){return isNaN(t=+t)?0:(t>0?hE:uE)(t)}});var i0=P((QH,D2)=>{g();var cE=r0(),dE=Math.min;D2.exports=function(t){return t>0?dE(cE(t),9007199254740991):0}});var U2=P((jH,P2)=>{g();var lE=xo();P2.exports=Array.isArray||function(e){return lE(e)=="Array"}});var Ic=P((zH,k2)=>{g();k2.exports=!1});var Ec=P((YH,Q2)=>{g();var pE=Js(),F2=Dn(),L2="__core-js_shared__",N2=F2[L2]||(F2[L2]={});(Q2.exports=function(t,e){return N2[t]||(N2[t]=e!==void 0?e:{})})("versions",[]).push({version:pE.version,mode:Ic()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var gi=P(($H,j2)=>{g();var Mc=Ec()("wks"),vE=Zs(),Sc=Dn().Symbol,K2=typeof Sc=="function",bE=j2.exports=function(t){return Mc[t]||(Mc[t]=K2&&Sc[t]||(K2?Sc:vE)("Symbol."+t))};bE.store=Mc});var G2=P((JH,z2)=>{g();var gE=vf(),H2=U2(),yE=gi()("species");z2.exports=function(t){var e;return H2(t)&&(e=t.constructor,typeof e=="function"&&(e===Array||H2(e.prototype))&&(e=void 0),gE(e)&&(e=e[yE],e===null&&(e=void 0))),e===void 0?Array:e}});var V2=P((ZH,Y2)=>{g();var mE=G2();Y2.exports=function(t,e){return new(mE(t))(e)}});var va=P((tz,$2)=>{g();var xE=xc(),wE=Ac(),AE=_c(),_E=i0(),IE=V2();$2.exports=function(t,e){var r=t==1,i=t==2,n=t==3,a=t==4,o=t==6,c=t==5||o,m=e||IE;return function(M,B,R){for(var F=AE(M),N=wE(F),G=xE(B,R,3),Z=_E(N.length),ie=0,fe=r?m(M,Z):i?m(M,0):void 0,ce,ge;Z>ie;ie++)if((c||ie in N)&&(ce=N[ie],ge=G(ce,ie,F),t)){if(r)fe[ie]=ge;else if(ge)switch(t){case 3:return!0;case 5:return ce;case 6:return ie;case 2:fe.push(ce)}else if(a)return!1}return o?-1:n||a?a:fe}}});var wo=P((iz,W2)=>{g();var Cc=gi()("unscopables"),Bc=Array.prototype;Bc[Cc]==null&&Pn()(Bc,Cc,{});W2.exports=function(t){Bc[Cc][t]=!0}});var X2=P(()=>{"use strict";g();var qc=Jr(),EE=va()(6),Rc="findIndex",J2=!0;Rc in[]&&Array(1)[Rc](function(){J2=!1});qc(qc.P+qc.F*J2,"Array",{findIndex:function(e){return EE(this,e,arguments.length>1?arguments[1]:void 0)}});wo()(Rc)});var eb=P(()=>{"use strict";g();var Tc=Jr(),ME=va()(5),Oc="find",Z2=!0;Oc in[]&&Array(1)[Oc](function(){Z2=!1});Tc(Tc.P+Tc.F*Z2,"Array",{find:function(e){return ME(this,e,arguments.length>1?arguments[1]:void 0)}});wo()(Oc)});var ib=P(()=>{g();var SE=go().f,tb=Function.prototype,CE=/^\s*function ([^ (]*)/,rb="name";rb in tb||da()&&SE(tb,rb,{configurable:!0,get:function(){try{return(""+this).match(CE)[1]}catch{return""}}})});var Pc=P(Dc=>{"use strict";g();Dc.__esModule=!0;Dc.default=function(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}});var fb=P(Un=>{"use strict";g();Object.defineProperty(Un,"__esModule",{value:!0});Un.flip=BE;Un.constant=qE;Un.on=RE;Un.compose=TE;Un.pipe=OE;Un.curry=DE;function BE(t){return function(e,r){return t(r,e)}}function qE(t){return function(){return t}}function RE(t,e){return function(r,i){return t(e(r),e(i))}}function TE(){for(var t=this,e=arguments.length,r=Array(e),i=0;i-1;c--)o=r[c].call(t,o);return o}}function OE(){for(var t=this,e=arguments.length,r=Array(e),i=0;i=e?t.apply(this,i):nb(t,e,i)}}function DE(t){return nb(t,t.length,[])}});var n0=P((yz,ab)=>{g();var PE=Math.ceil,UE=Math.floor;ab.exports=function(t){return isNaN(t=+t)?0:(t>0?UE:PE)(t)}});var f0=P((xz,ob)=>{g();ob.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var ub=P((Az,sb)=>{g();var kE=n0(),FE=f0();sb.exports=function(t){return function(e,r){var i=String(FE(e)),n=kE(r),a=i.length,o,c;return n<0||n>=a?t?"":void 0:(o=i.charCodeAt(n),o<55296||o>56319||n+1===a||(c=i.charCodeAt(n+1))<56320||c>57343?t?i.charAt(n):o:t?i.slice(n,n+2):(o-55296<<10)+(c-56320)+65536)}}});var Ao=P((Iz,hb)=>{g();hb.exports=!0});var sn=P((Mz,cb)=>{g();var LE=cb.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=LE)});var Rr=P((Cz,db)=>{g();var NE=db.exports={version:"2.6.0"};typeof __e=="number"&&(__e=NE)});var pb=P((qz,lb)=>{g();lb.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var Uc=P((Tz,vb)=>{g();var QE=pb();vb.exports=function(t,e,r){if(QE(t),e===void 0)return t;switch(r){case 1:return function(i){return t.call(e,i)};case 2:return function(i,n){return t.call(e,i,n)};case 3:return function(i,n,a){return t.call(e,i,n,a)}}return function(){return t.apply(e,arguments)}}});var bf=P((Dz,bb)=>{g();bb.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var gf=P((Uz,gb)=>{g();var KE=bf();gb.exports=function(t){if(!KE(t))throw TypeError(t+" is not an object!");return t}});var yf=P((Fz,yb)=>{g();yb.exports=function(t){try{return!!t()}catch{return!0}}});var kn=P((Nz,mb)=>{g();mb.exports=!yf()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Fc=P((Kz,wb)=>{g();var xb=bf(),kc=sn().document,jE=xb(kc)&&xb(kc.createElement);wb.exports=function(t){return jE?kc.createElement(t):{}}});var Lc=P((Hz,Ab)=>{g();Ab.exports=!kn()&&!yf()(function(){return Object.defineProperty(Fc()("div"),"a",{get:function(){return 7}}).a!=7})});var o0=P((Gz,_b)=>{g();var a0=bf();_b.exports=function(t,e){if(!a0(t))return t;var r,i;if(e&&typeof(r=t.toString)=="function"&&!a0(i=r.call(t))||typeof(r=t.valueOf)=="function"&&!a0(i=r.call(t))||!e&&typeof(r=t.toString)=="function"&&!a0(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}});var un=P(Eb=>{g();var Ib=gf(),HE=Lc(),zE=o0(),GE=Object.defineProperty;Eb.f=kn()?Object.defineProperty:function(e,r,i){if(Ib(e),r=zE(r,!0),Ib(i),HE)try{return GE(e,r,i)}catch{}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[r]=i.value),e}});var ba=P((Wz,Mb)=>{g();Mb.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var mf=P((Xz,Sb)=>{g();var YE=un(),VE=ba();Sb.exports=kn()?function(t,e,r){return YE.f(t,e,VE(1,r))}:function(t,e,r){return t[e]=r,t}});var Fn=P((eG,Cb)=>{g();var $E={}.hasOwnProperty;Cb.exports=function(t,e){return $E.call(t,e)}});var hn=P((rG,qb)=>{g();var s0=sn(),Nc=Rr(),Bb=Uc(),WE=mf(),JE=Fn(),u0="prototype",Ar=function(t,e,r){var i=t&Ar.F,n=t&Ar.G,a=t&Ar.S,o=t&Ar.P,c=t&Ar.B,m=t&Ar.W,M=n?Nc:Nc[e]||(Nc[e]={}),B=M[u0],R=n?s0:a?s0[e]:(s0[e]||{})[u0],F,N,G;n&&(r=e);for(F in r)N=!i&&R&&R[F]!==void 0,!(N&&JE(M,F))&&(G=N?R[F]:r[F],M[F]=n&&typeof R[F]!="function"?r[F]:c&&N?Bb(G,s0):m&&R[F]==G?function(Z){var ie=function(fe,ce,ge){if(this instanceof Z){switch(arguments.length){case 0:return new Z;case 1:return new Z(fe);case 2:return new Z(fe,ce)}return new Z(fe,ce,ge)}return Z.apply(this,arguments)};return ie[u0]=Z[u0],ie}(G):o&&typeof G=="function"?Bb(Function.call,G):G,o&&((M.virtual||(M.virtual={}))[F]=G,t&Ar.R&&B&&!B[F]&&WE(B,F,G)))};Ar.F=1;Ar.G=2;Ar.S=4;Ar.P=8;Ar.B=16;Ar.W=32;Ar.U=64;Ar.R=128;qb.exports=Ar});var Qc=P((nG,Rb)=>{g();Rb.exports=mf()});var xf=P((aG,Tb)=>{g();Tb.exports={}});var h0=P((sG,Ob)=>{g();var XE={}.toString;Ob.exports=function(t){return XE.call(t).slice(8,-1)}});var Kc=P((hG,Db)=>{g();var ZE=h0();Db.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return ZE(t)=="String"?t.split(""):Object(t)}});var Ln=P((dG,Pb)=>{g();var eM=Kc(),tM=f0();Pb.exports=function(t){return eM(tM(t))}});var jc=P((pG,Ub)=>{g();var rM=n0(),iM=Math.min;Ub.exports=function(t){return t>0?iM(rM(t),9007199254740991):0}});var Fb=P((bG,kb)=>{g();var nM=n0(),fM=Math.max,aM=Math.min;kb.exports=function(t,e){return t=nM(t),t<0?fM(t+e,0):aM(t,e)}});var Nb=P((yG,Lb)=>{g();var oM=Ln(),sM=jc(),uM=Fb();Lb.exports=function(t){return function(e,r,i){var n=oM(e),a=sM(n.length),o=uM(i,a),c;if(t&&r!=r){for(;a>o;)if(c=n[o++],c!=c)return!0}else for(;a>o;o++)if((t||o in n)&&n[o]===r)return t||o||0;return!t&&-1}}});var c0=P((xG,Hb)=>{g();var hM=Rr(),Qb=sn(),Kb="__core-js_shared__",jb=Qb[Kb]||(Qb[Kb]={});(Hb.exports=function(t,e){return jb[t]||(jb[t]=e!==void 0?e:{})})("versions",[]).push({version:hM.version,mode:Ao()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var _o=P((AG,zb)=>{g();var cM=0,dM=Math.random();zb.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++cM+dM).toString(36))}});var d0=P((IG,Yb)=>{g();var Gb=c0()("keys"),lM=_o();Yb.exports=function(t){return Gb[t]||(Gb[t]=lM(t))}});var Hc=P((MG,$b)=>{g();var Vb=Fn(),pM=Ln(),vM=Nb()(!1),bM=d0()("IE_PROTO");$b.exports=function(t,e){var r=pM(t),i=0,n=[],a;for(a in r)a!=bM&&Vb(r,a)&&n.push(a);for(;e.length>i;)Vb(r,a=e[i++])&&(~vM(n,a)||n.push(a));return n}});var l0=P((CG,Wb)=>{g();Wb.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var wf=P((qG,Jb)=>{g();var gM=Hc(),yM=l0();Jb.exports=Object.keys||function(e){return gM(e,yM)}});var Zb=P((TG,Xb)=>{g();var mM=un(),xM=gf(),wM=wf();Xb.exports=kn()?Object.defineProperties:function(e,r){xM(e);for(var i=wM(r),n=i.length,a=0,o;n>a;)mM.f(e,o=i[a++],r[o]);return e}});var r6=P((DG,t6)=>{g();var e6=sn().document;t6.exports=e6&&e6.documentElement});var Yc=P((UG,n6)=>{g();var AM=gf(),_M=Zb(),i6=l0(),IM=d0()("IE_PROTO"),zc=function(){},Gc="prototype",p0=function(){var t=Fc()("iframe"),e=i6.length,r="<",i=">",n;for(t.style.display="none",r6().appendChild(t),t.src="javascript:",n=t.contentWindow.document,n.open(),n.write(r+"script"+i+"document.F=Object"+r+"/script"+i),n.close(),p0=n.F;e--;)delete p0[Gc][i6[e]];return p0()};n6.exports=Object.create||function(e,r){var i;return e!==null?(zc[Gc]=AM(e),i=new zc,zc[Gc]=null,i[IM]=e):i=p0(),r===void 0?i:_M(i,r)}});var Xr=P((FG,a6)=>{g();var Vc=c0()("wks"),EM=_o(),$c=sn().Symbol,f6=typeof $c=="function",MM=a6.exports=function(t){return Vc[t]||(Vc[t]=f6&&$c[t]||(f6?$c:EM)("Symbol."+t))};MM.store=Vc});var v0=P((NG,s6)=>{g();var SM=un().f,CM=Fn(),o6=Xr()("toStringTag");s6.exports=function(t,e,r){t&&!CM(t=r?t:t.prototype,o6)&&SM(t,o6,{configurable:!0,value:e})}});var c6=P((KG,h6)=>{"use strict";g();var BM=Yc(),qM=ba(),RM=v0(),u6={};mf()(u6,Xr()("iterator"),function(){return this});h6.exports=function(t,e,r){t.prototype=BM(u6,{next:qM(1,r)}),RM(t,e+" Iterator")}});var Io=P((HG,d6)=>{g();var TM=f0();d6.exports=function(t){return Object(TM(t))}});var v6=P((GG,p6)=>{g();var OM=Fn(),DM=Io(),l6=d0()("IE_PROTO"),PM=Object.prototype;p6.exports=Object.getPrototypeOf||function(t){return t=DM(t),OM(t,l6)?t[l6]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?PM:null}});var Xc=P((VG,w6)=>{"use strict";g();var b6=Ao(),Wc=hn(),UM=Qc(),g6=mf(),y6=xf(),kM=c6(),FM=v0(),LM=v6(),Eo=Xr()("iterator"),Jc=!([].keys&&"next"in[].keys()),NM="@@iterator",m6="keys",b0="values",x6=function(){return this};w6.exports=function(t,e,r,i,n,a,o){kM(r,e,i);var c=function(ge){if(!Jc&&ge in R)return R[ge];switch(ge){case m6:return function(){return new r(this,ge)};case b0:return function(){return new r(this,ge)}}return function(){return new r(this,ge)}},m=e+" Iterator",M=n==b0,B=!1,R=t.prototype,F=R[Eo]||R[NM]||n&&R[n],N=F||c(n),G=n?M?c("entries"):N:void 0,Z=e=="Array"&&R.entries||F,ie,fe,ce;if(Z&&(ce=LM(Z.call(new t)),ce!==Object.prototype&&ce.next&&(FM(ce,m,!0),!b6&&typeof ce[Eo]!="function"&&g6(ce,Eo,x6))),M&&F&&F.name!==b0&&(B=!0,N=function(){return F.call(this)}),(!b6||o)&&(Jc||B||!R[Eo])&&g6(R,Eo,N),y6[e]=N,y6[m]=x6,n)if(ie={values:M?N:c(b0),keys:a?N:c(m6),entries:G},o)for(fe in ie)fe in R||UM(R,fe,ie[fe]);else Wc(Wc.P+Wc.F*(Jc||B),e,ie);return ie}});var Mo=P(()=>{"use strict";g();var QM=ub()(!0);Xc()(String,"String",function(t){this._t=String(t),this._i=0},function(){var t=this._t,e=this._i,r;return e>=t.length?{value:void 0,done:!0}:(r=QM(t,e),this._i+=r.length,{value:r,done:!1})})});var _6=P((ZG,A6)=>{g();A6.exports=function(){}});var E6=P((tY,I6)=>{g();I6.exports=function(t,e){return{value:e,done:!!t}}});var C6=P((iY,S6)=>{"use strict";g();var Zc=_6(),g0=E6(),M6=xf(),KM=Ln();S6.exports=Xc()(Array,"Array",function(t,e){this._t=KM(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,g0(1)):e=="keys"?g0(0,r):e=="values"?g0(0,t[r]):g0(0,[r,t[r]])},"values");M6.Arguments=M6.Array;Zc("keys");Zc("values");Zc("entries")});var w0=P(()=>{g();C6();var jM=sn(),HM=mf(),B6=xf(),q6=Xr()("toStringTag"),R6="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(y0=0;y0{g();T6.f=Xr()});var D6=P((hY,O6)=>{g();Mo();w0();O6.exports=A0().f("iterator")});var U6=P((dY,P6)=>{g();P6.exports={default:D6(),__esModule:!0}});var F6=P((pY,k6)=>{g();var Af=_o()("meta"),zM=bf(),td=Fn(),GM=un().f,YM=0,_0=Object.isExtensible||function(){return!0},VM=!yf()(function(){return _0(Object.preventExtensions({}))}),rd=function(t){GM(t,Af,{value:{i:"O"+ ++YM,w:{}}})},$M=function(t,e){if(!zM(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!td(t,Af)){if(!_0(t))return"F";if(!e)return"E";rd(t)}return t[Af].i},WM=function(t,e){if(!td(t,Af)){if(!_0(t))return!0;if(!e)return!1;rd(t)}return t[Af].w},JM=function(t){return VM&&XM.NEED&&_0(t)&&!td(t,Af)&&rd(t),t},XM=k6.exports={KEY:Af,NEED:!1,fastKey:$M,getWeak:WM,onFreeze:JM}});var I0=P((bY,N6)=>{g();var ZM=sn(),L6=Rr(),eS=Ao(),tS=A0(),rS=un().f;N6.exports=function(t){var e=L6.Symbol||(L6.Symbol=eS?{}:ZM.Symbol||{});t.charAt(0)!="_"&&!(t in e)&&rS(e,t,{value:tS.f(t)})}});var E0=P(Q6=>{g();Q6.f=Object.getOwnPropertySymbols});var ga=P(K6=>{g();K6.f={}.propertyIsEnumerable});var H6=P((AY,j6)=>{g();var iS=wf(),nS=E0(),fS=ga();j6.exports=function(t){var e=iS(t),r=nS.f;if(r)for(var i=r(t),n=fS.f,a=0,o;i.length>a;)n.call(t,o=i[a++])&&e.push(o);return e}});var G6=P((IY,z6)=>{g();var aS=h0();z6.exports=Array.isArray||function(e){return aS(e)=="Array"}});var id=P(Y6=>{g();var oS=Hc(),sS=l0().concat("length","prototype");Y6.f=Object.getOwnPropertyNames||function(e){return oS(e,sS)}});var J6=P((CY,W6)=>{g();var uS=Ln(),V6=id().f,hS={}.toString,$6=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],cS=function(t){try{return V6(t)}catch{return $6.slice()}};W6.exports.f=function(e){return $6&&hS.call(e)=="[object Window]"?cS(e):V6(uS(e))}});var e3=P(Z6=>{g();var dS=ga(),lS=ba(),pS=Ln(),vS=o0(),bS=Fn(),gS=Lc(),X6=Object.getOwnPropertyDescriptor;Z6.f=kn()?X6:function(e,r){if(e=pS(e),r=vS(r,!0),gS)try{return X6(e,r)}catch{}if(bS(e,r))return lS(!dS.f.call(e,r),e[r])}});var v3=P(()=>{"use strict";g();var C0=sn(),hr=Fn(),ud=kn(),jr=hn(),t3=Qc(),yS=F6().KEY,f3=yf(),vd=c0(),bd=v0(),mS=_o(),Bo=Xr(),xS=A0(),wS=I0(),AS=H6(),_S=G6(),hd=gf(),IS=bf(),B0=Ln(),gd=o0(),cd=ba(),Co=Yc(),a3=J6(),o3=e3(),s3=un(),ES=wf(),u3=o3.f,_f=s3.f,h3=a3.f,Pr=C0.Symbol,S0=C0.JSON,M0=S0&&S0.stringify,Nn="prototype",Dr=Bo("_hidden"),r3=Bo("toPrimitive"),MS={}.propertyIsEnumerable,So=vd("symbol-registry"),cn=vd("symbols"),qo=vd("op-symbols"),Zr=Object[Nn],ya=typeof Pr=="function",nd=C0.QObject,dd=!nd||!nd[Nn]||!nd[Nn].findChild,ld=ud&&f3(function(){return Co(_f({},"a",{get:function(){return _f(this,"a",{value:7}).a}})).a!=7})?function(t,e,r){var i=u3(Zr,e);i&&delete Zr[e],_f(t,e,r),i&&t!==Zr&&_f(Zr,e,i)}:_f,i3=function(t){var e=cn[t]=Co(Pr[Nn]);return e._k=t,e},pd=ya&&typeof Pr.iterator=="symbol"?function(t){return typeof t=="symbol"}:function(t){return t instanceof Pr},q0=function(e,r,i){return e===Zr&&q0(qo,r,i),hd(e),r=gd(r,!0),hd(i),hr(cn,r)?(i.enumerable?(hr(e,Dr)&&e[Dr][r]&&(e[Dr][r]=!1),i=Co(i,{enumerable:cd(0,!1)})):(hr(e,Dr)||_f(e,Dr,cd(1,{})),e[Dr][r]=!0),ld(e,r,i)):_f(e,r,i)},c3=function(e,r){hd(e);for(var i=AS(r=B0(r)),n=0,a=i.length,o;a>n;)q0(e,o=i[n++],r[o]);return e},SS=function(e,r){return r===void 0?Co(e):c3(Co(e),r)},n3=function(e){var r=MS.call(this,e=gd(e,!0));return this===Zr&&hr(cn,e)&&!hr(qo,e)?!1:r||!hr(this,e)||!hr(cn,e)||hr(this,Dr)&&this[Dr][e]?r:!0},d3=function(e,r){if(e=B0(e),r=gd(r,!0),!(e===Zr&&hr(cn,r)&&!hr(qo,r))){var i=u3(e,r);return i&&hr(cn,r)&&!(hr(e,Dr)&&e[Dr][r])&&(i.enumerable=!0),i}},l3=function(e){for(var r=h3(B0(e)),i=[],n=0,a;r.length>n;)!hr(cn,a=r[n++])&&a!=Dr&&a!=yS&&i.push(a);return i},p3=function(e){for(var r=e===Zr,i=h3(r?qo:B0(e)),n=[],a=0,o;i.length>a;)hr(cn,o=i[a++])&&(r?hr(Zr,o):!0)&&n.push(cn[o]);return n};ya||(Pr=function(){if(this instanceof Pr)throw TypeError("Symbol is not a constructor!");var e=mS(arguments.length>0?arguments[0]:void 0),r=function(i){this===Zr&&r.call(qo,i),hr(this,Dr)&&hr(this[Dr],e)&&(this[Dr][e]=!1),ld(this,e,cd(1,i))};return ud&&dd&&ld(Zr,e,{configurable:!0,set:r}),i3(e)},t3(Pr[Nn],"toString",function(){return this._k}),o3.f=d3,s3.f=q0,id().f=a3.f=l3,ga().f=n3,E0().f=p3,ud&&!Ao()&&t3(Zr,"propertyIsEnumerable",n3,!0),xS.f=function(t){return i3(Bo(t))});jr(jr.G+jr.W+jr.F*!ya,{Symbol:Pr});for(fd="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ad=0;fd.length>ad;)Bo(fd[ad++]);var fd,ad;for(od=ES(Bo.store),sd=0;od.length>sd;)wS(od[sd++]);var od,sd;jr(jr.S+jr.F*!ya,"Symbol",{for:function(t){return hr(So,t+="")?So[t]:So[t]=Pr(t)},keyFor:function(e){if(!pd(e))throw TypeError(e+" is not a symbol!");for(var r in So)if(So[r]===e)return r},useSetter:function(){dd=!0},useSimple:function(){dd=!1}});jr(jr.S+jr.F*!ya,"Object",{create:SS,defineProperty:q0,defineProperties:c3,getOwnPropertyDescriptor:d3,getOwnPropertyNames:l3,getOwnPropertySymbols:p3});S0&&jr(jr.S+jr.F*(!ya||f3(function(){var t=Pr();return M0([t])!="[null]"||M0({a:t})!="{}"||M0(Object(t))!="{}"})),"JSON",{stringify:function(e){for(var r=[e],i=1,n,a;arguments.length>i;)r.push(arguments[i++]);if(a=n=r[1],!(!IS(n)&&e===void 0||pd(e)))return _S(n)||(n=function(o,c){if(typeof a=="function"&&(c=a.call(this,o,c)),!pd(c))return c}),r[1]=n,M0.apply(S0,r)}});Pr[Nn][r3]||mf()(Pr[Nn],r3,Pr[Nn].valueOf);bd(Pr,"Symbol");bd(Math,"Math",!0);bd(C0.JSON,"JSON",!0)});var b3=P(()=>{g()});var g3=P(()=>{g();I0()("asyncIterator")});var y3=P(()=>{g();I0()("observable")});var x3=P((HY,m3)=>{g();v3();b3();g3();y3();m3.exports=Rr().Symbol});var yd=P((GY,w3)=>{g();w3.exports={default:x3(),__esModule:!0}});var I3=P(xd=>{"use strict";g();xd.__esModule=!0;var CS=U6(),A3=_3(CS),BS=yd(),Qn=_3(BS),md=typeof Qn.default=="function"&&typeof A3.default=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Qn.default=="function"&&t.constructor===Qn.default&&t!==Qn.default.prototype?"symbol":typeof t};function _3(t){return t&&t.__esModule?t:{default:t}}xd.default=typeof Qn.default=="function"&&md(A3.default)==="symbol"?function(t){return typeof t>"u"?"undefined":md(t)}:function(t){return t&&typeof Qn.default=="function"&&t.constructor===Qn.default&&t!==Qn.default.prototype?"symbol":typeof t>"u"?"undefined":md(t)}});var S3=P((WY,M3)=>{g();var E3=gf();M3.exports=function(t,e,r,i){try{return i?e(E3(r)[0],r[1]):e(r)}catch(a){var n=t.return;throw n!==void 0&&E3(n.call(t)),a}}});var B3=P((XY,C3)=>{g();var qS=xf(),RS=Xr()("iterator"),TS=Array.prototype;C3.exports=function(t){return t!==void 0&&(qS.Array===t||TS[RS]===t)}});var R3=P((eV,q3)=>{"use strict";g();var OS=un(),DS=ba();q3.exports=function(t,e,r){e in t?OS.f(t,e,DS(0,r)):t[e]=r}});var Ad=P((rV,T3)=>{g();var wd=h0(),PS=Xr()("toStringTag"),US=wd(function(){return arguments}())=="Arguments",kS=function(t,e){try{return t[e]}catch{}};T3.exports=function(t){var e,r,i;return t===void 0?"Undefined":t===null?"Null":typeof(r=kS(e=Object(t),PS))=="string"?r:US?wd(e):(i=wd(e))=="Object"&&typeof e.callee=="function"?"Arguments":i}});var _d=P((nV,O3)=>{g();var FS=Ad(),LS=Xr()("iterator"),NS=xf();O3.exports=Rr().getIteratorMethod=function(t){if(t!=null)return t[LS]||t["@@iterator"]||NS[FS(t)]}});var U3=P((aV,P3)=>{g();var Ed=Xr()("iterator"),D3=!1;try{Id=[7][Ed](),Id.return=function(){D3=!0},Array.from(Id,function(){throw 2})}catch{}var Id;P3.exports=function(t,e){if(!e&&!D3)return!1;var r=!1;try{var i=[7],n=i[Ed]();n.next=function(){return{done:r=!0}},i[Ed]=function(){return n},t(i)}catch{}return r}});var F3=P(()=>{"use strict";g();var QS=Uc(),Md=hn(),KS=Io(),jS=S3(),HS=B3(),zS=jc(),k3=R3(),GS=_d();Md(Md.S+Md.F*!U3()(function(t){Array.from(t)}),"Array",{from:function(e){var r=KS(e),i=typeof this=="function"?this:Array,n=arguments.length,a=n>1?arguments[1]:void 0,o=a!==void 0,c=0,m=GS(r),M,B,R,F;if(o&&(a=QS(a,n>2?arguments[2]:void 0,2)),m!=null&&!(i==Array&&HS(m)))for(F=m.call(r),B=new i;!(R=F.next()).done;c++)k3(B,c,o?jS(F,a,[R.value,c],!0):R.value);else for(M=zS(r.length),B=new i(M);M>c;c++)k3(B,c,o?a(r[c],c):r[c]);return B.length=c,B}})});var N3=P((cV,L3)=>{g();Mo();F3();L3.exports=Rr().Array.from});var Sd=P((lV,Q3)=>{g();Q3.exports={default:N3(),__esModule:!0}});var Bd=P(Cd=>{"use strict";g();Cd.__esModule=!0;var YS=Sd(),VS=$S(YS);function $S(t){return t&&t.__esModule?t:{default:t}}Cd.default=function(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e{"use strict";g();Object.defineProperty(Kn,"__esModule",{value:!0});Kn.flip=WS;Kn.constant=JS;Kn.on=XS;Kn.compose=ZS;Kn.pipe=eC;Kn.curry=tC;function WS(t){return function(e,r){return t(r,e)}}function JS(t){return function(){return t}}function XS(t,e){return function(r,i){return t(e(r),e(i))}}function ZS(){for(var t=this,e=arguments.length,r=Array(e),i=0;i-1;c--)o=r[c].call(t,o);return o}}function eC(){for(var t=this,e=arguments.length,r=Array(e),i=0;i=e?t.apply(this,i):K3(t,e,i)}}function tC(t){return K3(t,t.length,[])}});var G3=P((mV,z3)=>{"use strict";g();var H3=wf(),rC=E0(),iC=ga(),nC=Io(),fC=Kc(),R0=Object.assign;z3.exports=!R0||yf()(function(){var t={},e={},r=Symbol(),i="abcdefghijklmnopqrst";return t[r]=7,i.split("").forEach(function(n){e[n]=n}),R0({},t)[r]!=7||Object.keys(R0({},e)).join("")!=i})?function(e,r){for(var i=nC(e),n=arguments.length,a=1,o=rC.f,c=iC.f;n>a;)for(var m=fC(arguments[a++]),M=o?H3(m).concat(o(m)):H3(m),B=M.length,R=0,F;B>R;)c.call(m,F=M[R++])&&(i[F]=m[F]);return i}:R0});var Y3=P(()=>{g();var qd=hn();qd(qd.S+qd.F,"Object",{assign:G3()})});var $3=P((IV,V3)=>{g();Y3();V3.exports=Rr().Object.assign});var J3=P((MV,W3)=>{g();W3.exports={default:$3(),__esModule:!0}});var Td=P(Rd=>{"use strict";g();Rd.__esModule=!0;var aC=J3(),oC=sC(aC);function sC(t){return t&&t.__esModule?t:{default:t}}Rd.default=oC.default||function(t){for(var e=1;e{g();var Od=hn(),uC=Rr(),hC=yf();X3.exports=function(t,e){var r=(uC.Object||{})[t]||Object[t],i={};i[t]=e(r),Od(Od.S+Od.F*hC(function(){r(1)}),"Object",i)}});var eg=P(()=>{g();var cC=Io(),dC=wf();Z3()("keys",function(){return function(e){return dC(cC(e))}})});var rg=P((PV,tg)=>{g();eg();tg.exports=Rr().Object.keys});var Dd=P((kV,ig)=>{g();ig.exports={default:rg(),__esModule:!0}});var fg=P((LV,ng)=>{g();var lC=bf(),pC=Math.floor;ng.exports=function(e){return!lC(e)&&isFinite(e)&&pC(e)===e}});var og=P(()=>{g();var ag=hn();ag(ag.S,"Number",{isInteger:fg()})});var ug=P((HV,sg)=>{g();og();sg.exports=Rr().Number.isInteger});var cg=P((GV,hg)=>{g();hg.exports={default:ug(),__esModule:!0}});var Ud=P(Pd=>{"use strict";g();Pd.__esModule=!0;Pd.default=function(t,e){var r={};for(var i in t)e.indexOf(i)>=0||!Object.prototype.hasOwnProperty.call(t,i)||(r[i]=t[i]);return r}});var kd=P(vr=>{"use strict";g();Object.defineProperty(vr,"__esModule",{value:!0});function If(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var Ur=If(Bd()),ir=If(Pc()),yi=j3(),vC=If(Td()),bC=If(Sd()),vg=If(Dd()),gC=If(cg()),yC=If(Ud()),mC=void 0,xC=function(t,e){return ir(this,mC),[].concat(Ur(e),Ur(t))}.bind(void 0),wC=yi.curry(xC),AC=void 0,_C=function(t){return ir(this,AC),Array.isArray(t)?t:[t]}.bind(void 0),IC=void 0,EC=function(t,e){return ir(this,IC),e===t.length-1}.bind(void 0),bg=yi.curry(EC),MC=void 0,SC=function(t,e){return ir(this,MC),bg(t,e)?0:e+1}.bind(void 0),CC=yi.curry(SC),gg=void 0,BC=function(t){return ir(this,gg),Math.max.apply(Math,Ur(vg(t)))+1}.bind(void 0),qC=function(t){return ir(this,gg),bC("length"in t?t:vC({},t,{length:BC(t)}))}.bind(void 0),RC=void 0,TC=function(t,e,r){return ir(this,RC),[].concat(Ur(r.slice(0,t)),Ur(e),Ur(r.slice(t+1)))}.bind(void 0),OC=yi.curry(TC),yg=void 0,DC=function(t,e){return ir(this,yg),gC(t)&&t>=e}.bind(void 0),mg=function(t){return ir(this,yg),DC(Number(t),0)}.bind(void 0),PC=void 0,UC=function(t){var e=t.length,r=yC(t,["length"]);return ir(this,PC),vg(r).every(mg)}.bind(void 0),kC=void 0,FC=function(t,e){return ir(this,kC),[].concat(Ur(t),Ur(e))}.bind(void 0),LC=yi.curry(FC),dg=void 0,NC=function(t,e,r,i){return ir(this,dg),i.reduce(function(n,a,o){return ir(this,dg),t(a,o,n)?e(n,a,o):n}.bind(this),r)}.bind(void 0),QC=yi.curry(NC),lg=void 0,KC=function(t,e,r,i){ir(this,lg);var n=r;return i.every(function(a,o){ir(this,lg);var c=t(a,o,n);return c&&(n=e(n,a,o)),c}.bind(this)),n}.bind(void 0),jC=yi.curry(KC),HC=void 0,zC=function(t,e,r){return ir(this,HC),[].concat(Ur(r.slice(0,t)),Ur(r.slice(t+e)))}.bind(void 0),GC=yi.curry(zC),pg=void 0,YC=function(t,e){return ir(this,pg),[].concat(Ur(Array(t))).map(function(){return ir(this,pg),e}.bind(this))}.bind(void 0),VC=yi.curry(YC),$C=void 0,WC=function(t,e,r){return ir(this,$C),[].concat(Ur(r.slice(0,t)),Ur(e),Ur(r.slice(t+e.length)))}.bind(void 0),JC=yi.curry(WC),XC=void 0,ZC=function(t,e){return ir(this,XC),e<0?t.length-e:e}.bind(void 0),eB=yi.curry(ZC);vr.append=wC;vr.convertIfNot=_C;vr.cycleNext=CC;vr.fromObject=qC;vr.insert=OC;vr.isKey=mg;vr.isLastIndex=bg;vr.isPossibleFromObject=UC;vr.prepend=LC;vr.reduceIf=QC;vr.reduceWhile=jC;vr.remove=GC;vr.repeat=VC;vr.replace=JC;vr.resolveIndex=eB});var wg=P((XV,xg)=>{"use strict";g();xg.exports=function t(e,r){if(e===r)return!0;var i=Array.isArray(e),n=Array.isArray(r),a;if(i&&n){if(e.length!=r.length)return!1;for(a=0;a{g();var Fd=hn();Fd(Fd.S+Fd.F*!kn(),"Object",{defineProperty:un().f})});var Ig=P((i$,_g)=>{g();Ag();var tB=Rr().Object;_g.exports=function(e,r,i){return tB.defineProperty(e,r,i)}});var Mg=P((f$,Eg)=>{g();Eg.exports={default:Ig(),__esModule:!0}});var Sg=P(Ld=>{"use strict";g();Ld.__esModule=!0;var rB=Mg(),iB=nB(rB);function nB(t){return t&&t.__esModule?t:{default:t}}Ld.default=function(t,e,r){return e in t?(0,iB.default)(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}});var Bg=P((u$,Cg)=>{g();var fB=Ad(),aB=Xr()("iterator"),oB=xf();Cg.exports=Rr().isIterable=function(t){var e=Object(t);return e[aB]!==void 0||"@@iterator"in e||oB.hasOwnProperty(fB(e))}});var Rg=P((c$,qg)=>{g();w0();Mo();qg.exports=Bg()});var Og=P((l$,Tg)=>{g();Tg.exports={default:Rg(),__esModule:!0}});var Pg=P((v$,Dg)=>{g();var sB=gf(),uB=_d();Dg.exports=Rr().getIterator=function(t){var e=uB(t);if(typeof e!="function")throw TypeError(t+" is not iterable!");return sB(e.call(t))}});var kg=P((g$,Ug)=>{g();w0();Mo();Ug.exports=Pg()});var Lg=P((m$,Fg)=>{g();Fg.exports={default:kg(),__esModule:!0}});var Qg=P(Nd=>{"use strict";g();Nd.__esModule=!0;var hB=Og(),cB=Ng(hB),dB=Lg(),lB=Ng(dB);function Ng(t){return t&&t.__esModule?t:{default:t}}Nd.default=function(){function t(e,r){var i=[],n=!0,a=!1,o=void 0;try{for(var c=(0,lB.default)(e),m;!(n=(m=c.next()).done)&&(i.push(m.value),!(r&&i.length===r));n=!0);}catch(M){a=!0,o=M}finally{try{!n&&c.return&&c.return()}finally{if(a)throw o}}return i}return function(e,r){if(Array.isArray(e))return e;if((0,cB.default)(Object(e)))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var jg=P((_$,Kg)=>{g();var pB=wf(),vB=Ln(),bB=ga().f;Kg.exports=function(t){return function(e){for(var r=vB(e),i=pB(r),n=i.length,a=0,o=[],c;n>a;)bB.call(r,c=i[a++])&&o.push(t?[c,r[c]]:r[c]);return o}}});var zg=P(()=>{g();var Hg=hn(),gB=jg()(!0);Hg(Hg.S,"Object",{entries:function(e){return gB(e)}})});var Yg=P((C$,Gg)=>{g();zg();Gg.exports=Rr().Object.entries});var $g=P((q$,Vg)=>{g();Vg.exports={default:Yg(),__esModule:!0}});var dy=P(ar=>{"use strict";g();function xi(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Object.defineProperty(ar,"__esModule",{value:!0});var xt=xi(Pc()),ei=fb(),Xg=xi(I3()),Kd=kd(),yB=xi(Dd()),Zg=xi(Bd()),mB=xi(wg()),xB=xi(Sg()),Ro=xi(Td()),wB=xi(Qg()),AB=xi($g()),_B=xi(Ud()),IB=xi(yd()),EB=void 0,MB=function(t,e){return xt(this,EB),e[t]}.bind(void 0),Ef=ei.curry(MB),ey=void 0,SB=function(t){return xt(this,ey),t!==null&&(t===void 0?"undefined":Xg(t))==="object"}.bind(void 0),ty=function(t){return xt(this,ey),Array.isArray(t)||SB(t)}.bind(void 0),To=void 0,CB=function(t,e,r){return xt(this,To),Kd.isLastIndex(e,t)?r:ry(t+1,e,r)}.bind(void 0),BB=function(t,e,r){return xt(this,To),"Expected to find a composite at ["+String(e.join(", "))+"]["+String(t)+"], but instead got: "+(r===void 0?"undefined":Xg(r))}.bind(void 0),qB=function(t,e,r){if(xt(this,To),ty(r))return r;throw new Error(BB(t,e,r))}.bind(void 0),ry=function(t,e,r){return xt(this,To),r===void 0?void 0:CB(t,e,Ef(e[t],qB(t,e,r)))}.bind(void 0),RB=function(t,e){return xt(this,To),t.length===0?void 0:ry(0,t,e)}.bind(void 0),iy=ei.curry(RB),TB=void 0,T0=function(t){return xt(this,TB),Array.isArray(t)?[].concat(Zg(t.keys())):yB(t)}.bind(void 0),OB=void 0,DB=function(t,e,r){return xt(this,OB),mB(iy(t,r),e)}.bind(void 0),PB=ei.curry(DB),UB=void 0,kB=function(t,e){return xt(this,UB),Object.prototype.hasOwnProperty.call(e,t)}.bind(void 0),jd=ei.curry(kB),Wg=void 0,FB=function(t,e){xt(this,Wg);var r=T0(t);return r.length===T0(e).length&&r.every(function(i){return xt(this,Wg),jd(i,e)&&Ef(i,t)===Ef(i,e)}.bind(this))}.bind(void 0),ny=ei.curry(FB),LB=void 0,fy=function(t){return xt(this,LB),T0(t).length===0}.bind(void 0),Qd=void 0,NB=function(t,e){return xt(this,Qd),AB(e).reduce(function(r,i){var n=wB(i,2),a=n[0],o=n[1];return xt(this,Qd),Ro({},r,xB({},a,t(o,a,e)))}.bind(this),{})}.bind(void 0),QB=function(t,e){return xt(this,Qd),Array.isArray(e)?e.map(t):NB(t,e)}.bind(void 0),KB=ei.curry(QB),ay=void 0,jB=function(t,e){e[t];var r=_B(e,[t]);return xt(this,ay),r}.bind(void 0),HB=function(t,e){return xt(this,ay),Array.isArray(e)?Kd.remove(t,1,e):jB(t,e)}.bind(void 0),oy=ei.curry(HB),zB=void 0,O0=function(t){return xt(this,zB),Array.isArray(t)?[].concat(Zg(t)):Ro({},t)}.bind(void 0),mi=void 0,GB=function(t){xt(this,mi);var e=O0(t);return{origin:e,current:e,previous:void 0}}.bind(void 0),sy=function(t,e,r){return xt(this,mi),r[t]=e,Ef(t,r)}.bind(void 0),YB=function(t,e,r,i){return xt(this,mi),Ro({},i,{current:sy(t[e],r,i.current),previous:i.current})}.bind(void 0),VB=function(t,e,r){xt(this,mi);var i=oy(t[e],r.current);return e===0?Ro({},r,{current:i,origin:i}):Ro({},r,{previous:sy(t[e-1],i,r.previous)})}.bind(void 0),uy=IB("composite.updateIn.removeAction"),$B=function(t,e,r,i){return xt(this,mi),r===uy?VB(t,e,i):YB(t,e,r,i)}.bind(void 0),WB=function(t){return xt(this,mi),typeof t=="number"?[]:{}}.bind(void 0),JB=function(t,e,r){return xt(this,mi),jd(t,r)?O0(Ef(t,r)):WB(e)}.bind(void 0),XB=function(t,e,r,i){return xt(this,mi),Kd.isLastIndex(t,r)?e(Ef(t[r],i)):JB(t[r],t[r+1],i)}.bind(void 0),ZB=function(t,e){return xt(this,mi),function(r,i,n){return xt(this,mi),$B(t,n,XB(t,e,n,r.current),r)}.bind(this)}.bind(void 0),eq=function(t,e,r){return xt(this,mi),t.length===0?r:t.reduce(ZB(t,e),GB(r)).origin}.bind(void 0),Oo=ei.curry(eq);Oo.remove=uy;var hy=void 0,tq=function(){return xt(this,hy),Oo.remove}.bind(void 0),rq=function(t,e){return xt(this,hy),Oo(t,tq,e)}.bind(void 0),iq=ei.curry(rq),nq=void 0,fq=function(t,e,r){xt(this,nq);var i=O0(r);return i[t]=e,i}.bind(void 0),aq=ei.curry(fq),Jg=void 0,oq=function(t,e,r){return xt(this,Jg),Oo(t,function(){return xt(this,Jg),e}.bind(this),r)}.bind(void 0),sq=ei.curry(oq),cy=void 0,uq=function(t,e){return xt(this,cy),Boolean(Number(t)^Number(e))}.bind(void 0),hq=function(t,e){return xt(this,cy),t===e||!uq(Array.isArray(t),Array.isArray(e))&&ny(t,e)}.bind(void 0),cq=ei.curry(hq),dq=void 0,lq=function(t){return xt(this,dq),fy(t)?void 0:t}.bind(void 0);ar.get=Ef,ar.getIn=iy,ar.getKeys=T0,ar.hasIn=PB,ar.hasKey=jd,ar.haveSameProps=ny,ar.is=ty,ar.isEmpty=fy,ar.map=KB,ar.remove=oy,ar.removeIn=iq,ar.set=aq,ar.setIn=sq,ar.shallowCopy=O0,ar.shallowEqual=cq,ar.toUndefinedIfEmpty=lq,ar.updateIn=Oo});var py=P((D$,ly)=>{g();ly.exports=function(t,e){return{value:e,done:!!t}}});var D0=P((U$,vy)=>{g();vy.exports={}});var P0=P((F$,by)=>{g();var pq=Ac(),vq=pa();by.exports=function(t){return pq(vq(t))}});var yy=P((N$,gy)=>{g();var bq=r0(),gq=Math.max,yq=Math.min;gy.exports=function(t,e){return t=bq(t),t<0?gq(t+e,0):yq(t,e)}});var U0=P((K$,my)=>{g();var mq=P0(),xq=i0(),wq=yy();my.exports=function(t){return function(e,r,i){var n=mq(e),a=xq(n.length),o=wq(i,a),c;if(t&&r!=r){for(;a>o;)if(c=n[o++],c!=c)return!0}else for(;a>o;o++)if((t||o in n)&&n[o]===r)return t||o||0;return!t&&-1}}});var k0=P((H$,wy)=>{g();var xy=Ec()("keys"),Aq=Zs();wy.exports=function(t){return xy[t]||(xy[t]=Aq(t))}});var Iy=P((G$,_y)=>{g();var Ay=yo(),_q=P0(),Iq=U0()(!1),Eq=k0()("IE_PROTO");_y.exports=function(t,e){var r=_q(t),i=0,n=[],a;for(a in r)a!=Eq&&Ay(r,a)&&n.push(a);for(;e.length>i;)Ay(r,a=e[i++])&&(~Iq(n,a)||n.push(a));return n}});var Hd=P((V$,Ey)=>{g();Ey.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var zd=P((W$,My)=>{g();var Mq=Iy(),Sq=Hd();My.exports=Object.keys||function(e){return Mq(e,Sq)}});var Cy=P((X$,Sy)=>{g();var Cq=go(),Bq=ca(),qq=zd();Sy.exports=da()?Object.defineProperties:function(e,r){Bq(e);for(var i=qq(r),n=i.length,a=0,o;n>a;)Cq.f(e,o=i[a++],r[o]);return e}});var Ry=P((eW,qy)=>{g();var By=Dn().document;qy.exports=By&&By.documentElement});var Dy=P((rW,Oy)=>{g();var Rq=ca(),Tq=Cy(),Ty=Hd(),Oq=k0()("IE_PROTO"),Gd=function(){},Yd="prototype",F0=function(){var t=pc()("iframe"),e=Ty.length,r="<",i=">",n;for(t.style.display="none",Ry().appendChild(t),t.src="javascript:",n=t.contentWindow.document,n.open(),n.write(r+"script"+i+"document.F=Object"+r+"/script"+i),n.close(),F0=n.F;e--;)delete F0[Yd][Ty[e]];return F0()};Oy.exports=Object.create||function(e,r){var i;return e!==null?(Gd[Yd]=Rq(e),i=new Gd,Gd[Yd]=null,i[Oq]=e):i=F0(),r===void 0?i:Tq(i,r)}});var Vd=P((nW,Uy)=>{g();var Dq=go().f,Pq=yo(),Py=gi()("toStringTag");Uy.exports=function(t,e,r){t&&!Pq(t=r?t:t.prototype,Py)&&Dq(t,Py,{configurable:!0,value:e})}});var Ly=P((aW,Fy)=>{"use strict";g();var Uq=Dy(),kq=vc(),Fq=Vd(),ky={};Pn()(ky,gi()("iterator"),function(){return this});Fy.exports=function(t,e,r){t.prototype=Uq(ky,{next:kq(1,r)}),Fq(t,e+" Iterator")}});var Ky=P((sW,Qy)=>{g();var Lq=yo(),Nq=_c(),Ny=k0()("IE_PROTO"),Qq=Object.prototype;Qy.exports=Object.getPrototypeOf||function(t){return t=Nq(t),Lq(t,Ny)?t[Ny]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?Qq:null}});var $y=P((hW,Vy)=>{"use strict";g();var jy=Ic(),$d=Jr(),Kq=mo(),Hy=Pn(),zy=D0(),jq=Ly(),Hq=Vd(),zq=Ky(),Do=gi()("iterator"),Wd=!([].keys&&"next"in[].keys()),Gq="@@iterator",Gy="keys",L0="values",Yy=function(){return this};Vy.exports=function(t,e,r,i,n,a,o){jq(r,e,i);var c=function(ge){if(!Wd&&ge in R)return R[ge];switch(ge){case Gy:return function(){return new r(this,ge)};case L0:return function(){return new r(this,ge)}}return function(){return new r(this,ge)}},m=e+" Iterator",M=n==L0,B=!1,R=t.prototype,F=R[Do]||R[Gq]||n&&R[n],N=F||c(n),G=n?M?c("entries"):N:void 0,Z=e=="Array"&&R.entries||F,ie,fe,ce;if(Z&&(ce=zq(Z.call(new t)),ce!==Object.prototype&&ce.next&&(Hq(ce,m,!0),!jy&&typeof ce[Do]!="function"&&Hy(ce,Do,Yy))),M&&F&&F.name!==L0&&(B=!0,N=function(){return F.call(this)}),(!jy||o)&&(Wd||B||!R[Do])&&Hy(R,Do,N),zy[e]=N,zy[m]=Yy,n)if(ie={values:M?N:c(L0),keys:a?N:c(Gy),entries:G},o)for(fe in ie)fe in R||Kq(R,fe,ie[fe]);else $d($d.P+$d.F*(Wd||B),e,ie);return ie}});var Xy=P((dW,Jy)=>{"use strict";g();var Jd=wo(),N0=py(),Wy=D0(),Yq=P0();Jy.exports=$y()(Array,"Array",function(t,e){this._t=Yq(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,N0(1)):e=="keys"?N0(0,r):e=="values"?N0(0,t[r]):N0(0,[r,t[r]])},"values");Wy.Arguments=Wy.Array;Jd("keys");Jd("values");Jd("entries")});var s8=P(()=>{g();var Zy=Xy(),Vq=zd(),$q=mo(),Wq=Dn(),e8=Pn(),a8=D0(),o8=gi(),t8=o8("iterator"),r8=o8("toStringTag"),i8=a8.Array,n8={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(Xd=Vq(n8),Q0=0;Q0{"use strict";g();var Jq=bo();u8.exports=function(t,e){return!!t&&Jq(function(){e?t.call(null,function(){},1):t.call(null)})}});var h8=P(()=>{"use strict";g();var el=Jr(),Xq=va()(0),Zq=ko()([].forEach,!0);el(el.P+el.F*!Zq,"Array",{forEach:function(e){return Xq(this,e,arguments[1])}})});var d8=P((AW,c8)=>{g();function eR(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{g();function tR(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}l8.exports=tR});var b8=P((MW,v8)=>{g();function rR(){throw new TypeError("Invalid attempt to spread non-iterable instance")}v8.exports=rR});var y8=P((CW,g8)=>{g();var iR=d8(),nR=p8(),fR=b8();function aR(t){return iR(t)||nR(t)||fR()}g8.exports=aR});var m8=P(()=>{"use strict";g();var tl=Jr(),oR=va()(1);tl(tl.P+tl.F*!ko()([].map,!0),"Array",{map:function(e){return oR(this,e,arguments[1])}})});var w8=P((OW,x8)=>{g();var sR=r0(),uR=pa();x8.exports=function(t){return function(e,r){var i=String(uR(e)),n=sR(r),a=i.length,o,c;return n<0||n>=a?t?"":void 0:(o=i.charCodeAt(n),o<55296||o>56319||n+1===a||(c=i.charCodeAt(n+1))<56320||c>57343?t?i.charAt(n):o:t?i.slice(n,n+2):(o-55296<<10)+(c-56320)+65536)}}});var _8=P((PW,A8)=>{"use strict";g();var hR=w8()(!0);A8.exports=function(t,e,r){return e+(r?hR(t,e).length:1)}});var E8=P((kW,I8)=>{g();var rl=xo(),cR=gi()("toStringTag"),dR=rl(function(){return arguments}())=="Arguments",lR=function(t,e){try{return t[e]}catch{}};I8.exports=function(t){var e,r,i;return t===void 0?"Undefined":t===null?"Null":typeof(r=lR(e=Object(t),cR))=="string"?r:dR?rl(e):(i=rl(e))=="Object"&&typeof e.callee=="function"?"Arguments":i}});var S8=P((LW,M8)=>{"use strict";g();var pR=E8(),vR=RegExp.prototype.exec;M8.exports=function(t,e){var r=t.exec;if(typeof r=="function"){var i=r.call(t,e);if(typeof i!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if(pR(t)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return vR.call(t,e)}});var B8=P((QW,C8)=>{"use strict";g();var bR=ca();C8.exports=function(){var t=bR(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}});var fl=P((jW,R8)=>{"use strict";g();var gR=B8(),K0=RegExp.prototype.exec,yR=String.prototype.replace,q8=K0,j0="lastIndex",il=function(){var t=/a/,e=/b*/g;return K0.call(t,"a"),K0.call(e,"a"),t[j0]!==0||e[j0]!==0}(),nl=/()??/.exec("")[1]!==void 0,mR=il||nl;mR&&(q8=function(e){var r=this,i,n,a,o;return nl&&(n=new RegExp("^"+r.source+"$(?!\\s)",gR.call(r))),il&&(i=r[j0]),a=K0.call(r,e),il&&a&&(r[j0]=r.global?a.index+a[0].length:i),nl&&a&&a.length>1&&yR.call(a[0],n,function(){for(o=1;o{"use strict";g();var T8=fl();Jr()({target:"RegExp",proto:!0,forced:T8!==/./.exec},{exec:T8})});var U8=P((VW,P8)=>{"use strict";g();O8();var xR=mo(),wR=Pn(),al=bo(),AR=pa(),D8=gi(),_R=fl(),IR=D8("species"),ER=!al(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$")!=="7"}),MR=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return r.length===2&&r[0]==="a"&&r[1]==="b"}();P8.exports=function(t,e,r){var i=D8(t),n=!al(function(){var B={};return B[i]=function(){return 7},""[t](B)!=7}),a=n?!al(function(){var B=!1,R=/a/;return R.exec=function(){return B=!0,null},t==="split"&&(R.constructor={},R.constructor[IR]=function(){return R}),R[i](""),!B}):void 0;if(!n||!a||t==="replace"&&!ER||t==="split"&&!MR){var o=/./[i],c=r(AR,i,""[t],function(R,F,N,G,Z){return F.exec===_R?n&&!Z?{done:!0,value:o.call(F,N,G)}:{done:!0,value:R.call(N,F,G)}:{done:!1}}),m=c[0],M=c[1];xR(String.prototype,t,m),wR(RegExp.prototype,i,e==2?function(B,R){return M.call(B,this,R)}:function(B){return M.call(B,this)})}}});var F8=P(()=>{"use strict";g();var SR=ca(),CR=i0(),BR=_8(),k8=S8();U8()("match",1,function(t,e,r,i){return[function(a){var o=t(this),c=a?.[e];return c!==void 0?c.call(a,o):new RegExp(a)[e](String(o))},function(n){var a=i(r,n,this);if(a.done)return a.value;var o=SR(n),c=String(this);if(!o.global)return k8(o,c);var m=o.unicode;o.lastIndex=0;for(var M=[],B=0,R;(R=k8(o,c))!==null;){var F=String(R[0]);M[B]=F,F===""&&(o.lastIndex=BR(c,CR(o.lastIndex),m)),B++}return B===0?null:M}]})});var L8=P(()=>{"use strict";g();var ol=Jr(),qR=va()(3);ol(ol.P+ol.F*!ko()([].some,!0),"Array",{some:function(e){return qR(this,e,arguments[1])}})});var Q8=P((rJ,N8)=>{g();N8.exports=function(t,e,r){var i=r===void 0;switch(e.length){case 0:return i?t():t.call(r);case 1:return i?t(e[0]):t.call(r,e[0]);case 2:return i?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}});var H8=P((nJ,j8)=>{"use strict";g();var RR=mc(),TR=vf(),OR=Q8(),K8=[].slice,sl={},DR=function(t,e,r){if(!(e in sl)){for(var i=[],n=0;n{g();var z8=Jr();z8(z8.P,"Function",{bind:H8()})});var hl=P((uJ,G8)=>{g();function PR(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}G8.exports=PR});var $8=P(Mf=>{"use strict";g();Object.defineProperty(Mf,"__esModule",{value:!0});function UR(t){return t&&typeof t=="object"&&"default"in t?t.default:t}m8();F8();L8();ul();var Qi=UR(hl()),cl=void 0,kR=function(e){var r=this;return Qi(this,cl),e.map(function(i){var n=i.column,a=i.line;return Qi(this,r),"".concat(a,":").concat(n)}.bind(this)).join("; ")}.bind(void 0),FR=function(e){var r=e.message,i=e.locations;return Qi(this,cl),r+(i?" (".concat(kR(i),")"):"")}.bind(void 0),LR=function(e){return Qi(this,cl),e.map(FR).join(` -`)}.bind(void 0),Y8=void 0,NR=/^\s*(query|mutation|subscription|\{)/,QR=function(e){return Qi(this,Y8),e==="{"?"query":e}.bind(void 0),KR=function(e){Qi(this,Y8);var r=e.match(NR);if(!r)throw new TypeError(`Invalid operation: -`.concat(e));return QR(r[1])}.bind(void 0),V8=void 0,jR=function(e){return Qi(this,V8),e.kind==="OperationDefinition"&&e.operation==="subscription"}.bind(void 0),HR=function(e){return Qi(this,V8),e.definitions.some(jR)}.bind(void 0),zR=void 0,GR=function(e){var r=e.query,i=e.variables;return Qi(this,zR),i?{operation:r,variables:i}:{operation:r}}.bind(void 0),YR=void 0,VR=function(e){var r=e.operation,i=e.variables;return Qi(this,YR),i?{query:r,variables:i}:{query:r}}.bind(void 0);Mf.errorsToString=LR;Mf.getOperationType=KR;Mf.hasSubscription=HR;Mf.requestFromCompat=GR;Mf.requestToCompat=VR});var Z8=P(wl=>{"use strict";g();Object.defineProperty(wl,"__esModule",{value:!0});var vl=function(){function t(e,r){for(var i=0;i1,o=!1,c=arguments[1],m=c;return new n(function(M){return i.subscribe({next:function(B){var R=!o;if(o=!0,!R||a)try{m=r(m,B)}catch(F){return M.error(F)}else m=B},error:function(B){M.error(B)},complete:function(){if(!o&&!a)return M.error(new TypeError("Cannot reduce an empty sequence"));M.next(m),M.complete()}})})}},{key:"concat",value:function(){for(var r=this,i=arguments.length,n=Array(i),a=0;a=0&&o.splice(R,1),m()}});o.push(B)},error:function(M){a.error(M)},complete:function(){m()}});function m(){c.closed&&o.length===0&&a.complete()}return function(){o.forEach(function(M){return M.unsubscribe()}),c.unsubscribe()}})}},{key:ll,value:function(){return this}}],[{key:"from",value:function(r){var i=typeof this=="function"?this:t;if(r==null)throw new TypeError(r+" is not an object");var n=z0(r,ll);if(n){var a=n.call(r);if(Object(a)!==a)throw new TypeError(a+" is not an object");return WR(a)&&a.constructor===i?a:new i(function(o){return a.subscribe(o)})}if(yl("iterator")&&(n=z0(r,$R),n))return new i(function(o){H0(function(){if(!o.closed){var c=!0,m=!1,M=void 0;try{for(var B=n.call(r)[Symbol.iterator](),R;!(c=(R=B.next()).done);c=!0){var F=R.value;if(o.next(F),o.closed)return}}catch(N){m=!0,M=N}finally{try{!c&&B.return&&B.return()}finally{if(m)throw M}}o.complete()}})});if(Array.isArray(r))return new i(function(o){H0(function(){if(!o.closed){for(var c=0;c{g();e4.exports=Z8().Observable});var i4=P(()=>{"use strict";g();var r4=Jr(),eT=U0()(!0);r4(r4.P,"Array",{includes:function(e){return eT(this,e,arguments.length>1?arguments[1]:void 0)}});wo()("includes")});var f4=P((xJ,n4)=>{g();var tT=vf(),rT=xo(),iT=gi()("match");n4.exports=function(t){var e;return tT(t)&&((e=t[iT])!==void 0?!!e:rT(t)=="RegExp")}});var o4=P((AJ,a4)=>{g();var nT=f4(),fT=pa();a4.exports=function(t,e,r){if(nT(e))throw TypeError("String#"+r+" doesn't accept regex!");return String(fT(t))}});var u4=P((IJ,s4)=>{g();var aT=gi()("match");s4.exports=function(t){var e=/./;try{"/./"[t](e)}catch{try{return e[aT]=!1,!"/./"[t](e)}catch{}}return!0}});var c4=P(()=>{"use strict";g();var Al=Jr(),oT=o4(),h4="includes";Al(Al.P+Al.F*u4()(h4),"String",{includes:function(e){return!!~oT(this,e,h4).indexOf(e,arguments.length>1?arguments[1]:void 0)}})});var l4=P((BJ,d4)=>{g();function sT(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}d4.exports=sT});var v4=P((RJ,p4)=>{g();var uT=l4();function hT(t){for(var e=1;e{g();function cT(t,e){if(t==null)return{};var r={},i=Object.keys(t),n,a;for(a=0;a=0)&&(r[n]=t[n]);return r}b4.exports=cT});var m4=P((PJ,y4)=>{g();var dT=g4();function lT(t,e){if(t==null)return{};var r=dT(t,e),i,n;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&(!Object.prototype.propertyIsEnumerable.call(t,i)||(r[i]=t[i]))}return r}y4.exports=lT});var w4=P(()=>{"use strict";g();var _l=Jr(),pT=U0()(!1),Il=[].indexOf,x4=!!Il&&1/[1].indexOf(1,-0)<0;_l(_l.P+_l.F*(x4||!ko()(Il)),"Array",{indexOf:function(e){return x4?Il.apply(this,arguments)||0:pT(this,e,arguments[1])}})});var e5=P(vn=>{"use strict";g();Object.defineProperty(vn,"__esModule",{value:!0});function No(t){return t&&typeof t=="object"&&"default"in t?t.default:t}X2();eb();ib();var El=dy();dc();s8();h8();var Lo=No(y8()),Ml=$8(),vT=No(t4());i4();c4();var wi=No(v4()),G0=No(m4());w4();var Y0=kd();ul();var ue=No(hl()),bT=void 0,Sl=function(e){var r=e.activeObservers,i=e.canceledObservers,n=G0(e,["activeObservers","canceledObservers"]);return ue(this,bT),wi({},n,{isActive:!1,activeObservers:[],canceledObservers:Lo(r).concat(Lo(i))})}.bind(void 0),Cl=void 0,gT=function(e,r){var i=this;return ue(this,Cl),function(n){return ue(this,i),n[e]&&n[e](r)}.bind(this)}.bind(void 0),yT=function(e){var r=e.name;return ue(this,Cl),"on".concat(r)}.bind(void 0),Bl=function(e,r){return ue(this,Cl),e.forEach(gT(yT(r),r.payload))}.bind(void 0),mT=void 0,E4=function(e,r){return ue(this,mT),Bl(e.canceledObservers,r),e}.bind(void 0),Qo={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},Ko=void 0,xT=function(e){return ue(this,Ko),{payload:e,name:Qo.start}}.bind(void 0),wT=function(e){return ue(this,Ko),{payload:e,name:Qo.result}}.bind(void 0),V0=function(e){return ue(this,Ko),{payload:e,name:Qo.error}}.bind(void 0),AT=function(){return ue(this,Ko),{name:Qo.cancel,payload:void 0}}.bind(void 0),_T=function(e){return ue(this,Ko),{payload:e,name:Qo.abort}}.bind(void 0),M4=void 0,IT=function(e){return ue(this,M4),wi({},e,{canceledObservers:[]})}.bind(void 0),jo=function(e){return ue(this,M4),e.canceledObservers.length>0?IT(E4(e,AT())):e}.bind(void 0),ET=void 0,S4=function(e,r,i){return ue(this,ET),e.findIndex(El.hasIn([r],i))}.bind(void 0),MT=void 0,ql=function(e){var r=this;return ue(this,MT),function(i){return ue(this,r),Y0.replace(S4(i,"request",e.request),[e],i)}.bind(this)}.bind(void 0),ST=void 0,Ho=function(e){var r=this;return ue(this,ST),function(i){return ue(this,r),Y0.remove(S4(i,"request",e.request),1,i)}.bind(this)}.bind(void 0),CT=void 0,dn=function(e,r){return ue(this,CT),e.notifiers=r(e.notifiers),e}.bind(void 0),BT=void 0,ln=function(e,r){return ue(this,BT),dn(e,ql(r)),r}.bind(void 0),Ai={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},C4=void 0,qT=function(e){var r=e.activeObservers,i=e.canceledObservers;return ue(this,C4),Lo(r).concat(Lo(i))}.bind(void 0),B4=function(e,r){return ue(this,C4),Bl(qT(e),r),e}.bind(void 0),RT=void 0,Rl=function(e,r,i){return ue(this,RT),dn(e,Ho(B4(r,_T(i))))}.bind(void 0),TT=void 0,$0=function(e,r,i){return ue(this,TT),e.find(El.hasIn([r],i))}.bind(void 0),OT=void 0,W0=function(e,r){return ue(this,OT),Bl(e.activeObservers,r),e}.bind(void 0),DT=void 0,q4=function(e,r){return ue(this,DT),W0(e,wT(r))}.bind(void 0),PT=void 0,R4=function(e){return ue(this,PT),W0(e,xT(e))}.bind(void 0),UT=void 0,T4=function(e){return ue(this,UT),jo(wi({},e,{isActive:!0,requestStatus:Ai.pending,subscriptionId:void 0}))}.bind(void 0),kT=void 0,O4=function(e,r){return ue(this,kT),e.receive("ok",r.onSucceed).receive("error",r.onError).receive("timeout",r.onTimeout)}.bind(void 0),Tl=void 0,FT=function(e,r){var i=this;return ue(this,Tl),function(n){var a=this;return ue(this,i),function(){ue(this,a);var o=$0(e.notifiers,"request",r);if(o){for(var c=arguments.length,m=new Array(c),M=0;M0}.bind(void 0),mO=function(e){var r=this;return ue(this,Ki),function(){ue(this,r),yO(e)&&z4(e)}.bind(this)}.bind(void 0),xO="__absinthe__:control",wO=function(e){ue(this,Ki);var r={phoenixSocket:e,channel:e.channel(xO),channelJoinCreated:!1,notifiers:[]};return e.onOpen(mO(r)),e.onClose(gO(r)),e.onMessage(lO(r)),r}.bind(void 0),AO=void 0,_O=function(e,r){var i=e.activeObservers,n=G0(e,["activeObservers"]);return ue(this,AO),wi({},n,{activeObservers:Lo(i).concat([r]),isActive:!0})}.bind(void 0),IO=void 0,V4=function(e,r,i){return ue(this,IO),ln(e,_O(r,i))}.bind(void 0),$4=void 0,EO=function(e,r){return ue(this,$4),{operationType:r,request:e,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:Ai.pending,subscriptionId:void 0}}.bind(void 0),MO=function(e){return ue(this,$4),EO(e,Ml.getOperationType(e.operation))}.bind(void 0),SO=void 0,CO=function(e){return ue(this,SO),e.isActive?e:wi({},e,{isActive:!0})}.bind(void 0),Cf=void 0,BO=function(e){ue(this,Cf),e.phoenixSocket.isConnected()?z4(e):e.phoenixSocket.connect()}.bind(void 0),qO=function(e,r){ue(this,Cf);var i=MO(r);return dn(e,Y0.append([i])),e.channelJoinCreated?H4(e,i):BO(e),i}.bind(void 0),I4=function(e,r){return ue(this,Cf),ln(e,CO(r))}.bind(void 0),RO=function(e,r){return ue(this,Cf),r.requestStatus===Ai.sending?I4(e,jo(r)):I4(e,r)}.bind(void 0),TO=function(e,r){return ue(this,Cf),r.isActive?r:RO(e,r)}.bind(void 0),OO=function(e,r){ue(this,Cf);var i=$0(e.notifiers,"request",r);return i&&TO(e,i)}.bind(void 0),DO=function(e,r){return ue(this,Cf),OO(e,r)||qO(e,r)}.bind(void 0),Z0=void 0,PO=function(e,r,i,n){var a=this,o=r.request;return ue(this,Z0),function(){ue(this,a);var c=$0(e.notifiers,"request",o);n(e,c,c?i:void 0)}.bind(this)}.bind(void 0),UO=function(e,r){var i=this,n=e.operationType;return ue(this,Z0),function(a){ue(this,i),r.next(a),n!=="subscription"&&r.complete()}.bind(this)}.bind(void 0),kO=function(e,r,i){return ue(this,Z0),wi({},r,{onAbort:i.error.bind(i),onResult:UO(e,i)})}.bind(void 0),FO=function(e,r){var i=this,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=n.unsubscribe,o=G0(n,["unsubscribe"]);return ue(this,Z0),new vT(function(c){ue(this,i);var m=kO(r,o,c);return V4(e,r,m),a&&PO(e,r,m,a)}.bind(this))}.bind(void 0),W4=void 0,LO=function(e,r){return ue(this,W4),Y0.remove(e.indexOf(r),1,e)}.bind(void 0),NO=function(e,r){var i=e.activeObservers,n=G0(e,["activeObservers"]);return ue(this,W4),wi({},n,{activeObservers:LO(i,r)})}.bind(void 0),J4=void 0,QO=function(e,r){if(ue(this,J4),e.activeObservers.includes(r))return e;throw new Error("Observer is not attached to notifier")}.bind(void 0),X4=function(e,r,i){return ue(this,J4),dn(e,ql(NO(QO(r,i),i)))}.bind(void 0),Z4=void 0,KO=function(e,r,i){return ue(this,Z4),r.activeObservers.length===1?j4(e,r):X4(e,r,i)}.bind(void 0),jO=function(e,r,i){return ue(this,Z4),r.isActive?KO(e,r,i):e}.bind(void 0);vn.cancel=j4;vn.create=wO;vn.observe=V4;vn.send=DO;vn.toObservable=FO;vn.unobserve=X4;vn.unobserveOrCancel=jO});var Ol=P((KJ,Go)=>{g();var{Socket:HO}=dc(),zO=n2(),zo=e5();Go.exports.absintheCreate=function(t){let e=new HO(t,{transport:zO});return zo.create(e)};Go.exports.absintheSend=function(t,e){return zo.send(t,{operation:e})};Go.exports.absintheObserve=function(t,e,r){return new Promise((i,n)=>{zo.observe(t,e,{onStart:function(){i(e)},onError:function(a){zo.cancel(t,e),n(a)},onResult:function(a){r(a)}})})};Go.exports.absintheCancel=function(t,e){zo.cancel(t,e)}});var vt=P((Ul,l5)=>{g();var tu=fn(),Hi=tu.Buffer;function d5(t,e){for(var r in t)e[r]=t[r]}Hi.from&&Hi.alloc&&Hi.allocUnsafe&&Hi.allocUnsafeSlow?l5.exports=tu:(d5(tu,Ul),Ul.Buffer=Bf);function Bf(t,e,r){return Hi(t,e,r)}Bf.prototype=Object.create(Hi.prototype);d5(Hi,Bf);Bf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return Hi(t,e,r)};Bf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=Hi(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};Bf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Hi(t)};Bf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return tu.SlowBuffer(t)}});var qf=P((VJ,Fl)=>{"use strict";g();var kl=65536,$O=4294967295;function WO(){throw new Error(`Secure random number generation is not supported by this browser. -Use Chrome, Firefox or Internet Explorer 11`)}var JO=vt().Buffer,ru=window.crypto||window.msCrypto;ru&&ru.getRandomValues?Fl.exports=XO:Fl.exports=WO;function XO(t,e){if(t>$O)throw new RangeError("requested too many random bytes");var r=JO.allocUnsafe(t);if(t>0)if(t>kl)for(var i=0;i{g();typeof Object.create=="function"?Ll.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Ll.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var fu=P((XJ,Nl)=>{"use strict";g();var wa=typeof Reflect=="object"?Reflect:null,p5=wa&&typeof wa.apply=="function"?wa.apply:function(e,r,i){return Function.prototype.apply.call(e,r,i)},iu;wa&&typeof wa.ownKeys=="function"?iu=wa.ownKeys:Object.getOwnPropertySymbols?iu=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:iu=function(e){return Object.getOwnPropertyNames(e)};function ZO(t){console&&console.warn&&console.warn(t)}var b5=Number.isNaN||function(e){return e!==e};function Ht(){Ht.init.call(this)}Nl.exports=Ht;Nl.exports.once=iD;Ht.EventEmitter=Ht;Ht.prototype._events=void 0;Ht.prototype._eventsCount=0;Ht.prototype._maxListeners=void 0;var v5=10;function nu(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(Ht,"defaultMaxListeners",{enumerable:!0,get:function(){return v5},set:function(t){if(typeof t!="number"||t<0||b5(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");v5=t}});Ht.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ht.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||b5(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function g5(t){return t._maxListeners===void 0?Ht.defaultMaxListeners:t._maxListeners}Ht.prototype.getMaxListeners=function(){return g5(this)};Ht.prototype.emit=function(e){for(var r=[],i=1;i0&&(o=r[0]),o instanceof Error)throw o;var c=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw c.context=o,c}var m=a[e];if(m===void 0)return!1;if(typeof m=="function")p5(m,this,r);else for(var M=m.length,B=A5(m,M),i=0;i0&&o.length>n&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=o.length,ZO(c)}return t}Ht.prototype.addListener=function(e,r){return y5(this,e,r,!1)};Ht.prototype.on=Ht.prototype.addListener;Ht.prototype.prependListener=function(e,r){return y5(this,e,r,!0)};function eD(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function m5(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=eD.bind(i);return n.listener=r,i.wrapFn=n,n}Ht.prototype.once=function(e,r){return nu(r),this.on(e,m5(this,e,r)),this};Ht.prototype.prependOnceListener=function(e,r){return nu(r),this.prependListener(e,m5(this,e,r)),this};Ht.prototype.removeListener=function(e,r){var i,n,a,o,c;if(nu(r),n=this._events,n===void 0)return this;if(i=n[e],i===void 0)return this;if(i===r||i.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||r));else if(typeof i!="function"){for(a=-1,o=i.length-1;o>=0;o--)if(i[o]===r||i[o].listener===r){c=i[o].listener,a=o;break}if(a<0)return this;a===0?i.shift():tD(i,a),i.length===1&&(n[e]=i[0]),n.removeListener!==void 0&&this.emit("removeListener",e,c||r)}return this};Ht.prototype.off=Ht.prototype.removeListener;Ht.prototype.removeAllListeners=function(e){var r,i,n;if(i=this._events,i===void 0)return this;if(i.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):i[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete i[e]),this;if(arguments.length===0){var a=Object.keys(i),o;for(n=0;n=0;n--)this.removeListener(e,r[n]);return this};function x5(t,e,r){var i=t._events;if(i===void 0)return[];var n=i[e];return n===void 0?[]:typeof n=="function"?r?[n.listener||n]:[n]:r?rD(n):A5(n,n.length)}Ht.prototype.listeners=function(e){return x5(this,e,!0)};Ht.prototype.rawListeners=function(e){return x5(this,e,!1)};Ht.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):w5.call(t,e)};Ht.prototype.listenerCount=w5;function w5(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ht.prototype.eventNames=function(){return this._eventsCount>0?iu(this._events):[]};function A5(t,e){for(var r=new Array(e),i=0;i{g();I5.exports=fu().EventEmitter});var Kl=P(()=>{g()});var C5=P((fX,S5)=>{"use strict";g();function E5(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function fD(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return au.alloc(0);for(var i=au.allocUnsafe(r>>>0),n=this.head,a=0;n;)dD(n.data,i,a),a+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(c===o.length?a+=o:a+=o.slice(0,r),r-=c,r===0){c===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(c));break}++n}return this.length-=n,a}},{key:"_getBuffer",value:function(r){var i=au.allocUnsafe(r),n=this.head,a=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,c=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,c),r-=c,r===0){c===o.length?(++a,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(c));break}++a}return this.length-=a,i}},{key:cD,value:function(r,i){return jl(this,fD({},i,{depth:0,customInspect:!1}))}}]),t}()});var zl=P((oX,q5)=>{"use strict";g();function lD(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(Hl,this,t)):process.nextTick(Hl,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(a){!e&&a?r._writableState?r._writableState.errorEmitted?process.nextTick(ou,r):(r._writableState.errorEmitted=!0,process.nextTick(B5,r,a)):process.nextTick(B5,r,a):e?(process.nextTick(ou,r),e(a)):process.nextTick(ou,r)}),this)}function B5(t,e){Hl(t,e),ou(t)}function ou(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function pD(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Hl(t,e){t.emit("error",e)}function vD(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}q5.exports={destroy:lD,undestroy:pD,errorOrDestroy:vD}});var Rf=P((uX,O5)=>{"use strict";g();function bD(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var T5={};function ti(t,e,r){r||(r=Error);function i(a,o,c){return typeof e=="string"?e:e(a,o,c)}var n=function(a){bD(o,a);function o(c,m,M){return a.call(this,i(c,m,M))||this}return o}(r);n.prototype.name=r.name,n.prototype.code=t,T5[t]=n}function R5(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(i){return String(i)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:r===2?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}else return"of ".concat(e," ").concat(String(t))}function gD(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function yD(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function mD(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}ti("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);ti("ERR_INVALID_ARG_TYPE",function(t,e,r){var i;typeof e=="string"&&gD(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";var n;if(yD(t," argument"))n="The ".concat(t," ").concat(i," ").concat(R5(e,"type"));else{var a=mD(t,".")?"property":"argument";n='The "'.concat(t,'" ').concat(a," ").concat(i," ").concat(R5(e,"type"))}return n+=". Received type ".concat(typeof r),n},TypeError);ti("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");ti("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});ti("ERR_STREAM_PREMATURE_CLOSE","Premature close");ti("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});ti("ERR_MULTIPLE_CALLBACK","Callback called multiple times");ti("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");ti("ERR_STREAM_WRITE_AFTER_END","write after end");ti("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);ti("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);ti("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");O5.exports.codes=T5});var Gl=P((cX,D5)=>{"use strict";g();var xD=Rf().codes.ERR_INVALID_OPT_VALUE;function wD(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function AD(t,e,r,i){var n=wD(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var a=i?r:"highWaterMark";throw new xD(a,n)}return Math.floor(n)}return t.objectMode?16:16*1024}D5.exports={getHighWaterMark:AD}});var U5=P((lX,P5)=>{g();P5.exports=_D;function _D(t,e){if(Yl("noDeprecation"))return t;var r=!1;function i(){if(!r){if(Yl("throwDeprecation"))throw new Error(e);Yl("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}return i}function Yl(t){try{if(!window.localStorage)return!1}catch{return!1}var e=window.localStorage[t];return e==null?!1:String(e).toLowerCase()==="true"}});var hu=P((vX,K5)=>{"use strict";g();K5.exports=er;function F5(t){var e=this;this.next=null,this.entry=null,this.finish=function(){WD(e,t)}}var Aa;er.WritableState=Vo;var ID={deprecate:U5()},L5=Ql(),uu=fn().Buffer,ED=window.Uint8Array||function(){};function MD(t){return uu.from(t)}function SD(t){return uu.isBuffer(t)||t instanceof ED}var $l=zl(),CD=Gl(),BD=CD.getHighWaterMark,Gn=Rf().codes,qD=Gn.ERR_INVALID_ARG_TYPE,RD=Gn.ERR_METHOD_NOT_IMPLEMENTED,TD=Gn.ERR_MULTIPLE_CALLBACK,OD=Gn.ERR_STREAM_CANNOT_PIPE,DD=Gn.ERR_STREAM_DESTROYED,PD=Gn.ERR_STREAM_NULL_VALUES,UD=Gn.ERR_STREAM_WRITE_AFTER_END,kD=Gn.ERR_UNKNOWN_ENCODING,_a=$l.errorOrDestroy;gt()(er,L5);function FD(){}function Vo(t,e,r){Aa=Aa||Yn(),t=t||{},typeof r!="boolean"&&(r=e instanceof Aa),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=BD(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){zD(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new F5(this)}Vo.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(Vo.prototype,"buffer",{get:ID.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var su;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(su=Function.prototype[Symbol.hasInstance],Object.defineProperty(er,Symbol.hasInstance,{value:function(e){return su.call(this,e)?!0:this!==er?!1:e&&e._writableState instanceof Vo}})):su=function(e){return e instanceof this};function er(t){Aa=Aa||Yn();var e=this instanceof Aa;if(!e&&!su.call(er,this))return new er(t);this._writableState=new Vo(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),L5.call(this)}er.prototype.pipe=function(){_a(this,new OD)};function LD(t,e){var r=new UD;_a(t,r),process.nextTick(e,r)}function ND(t,e,r,i){var n;return r===null?n=new PD:typeof r!="string"&&!e.objectMode&&(n=new qD("chunk",["string","Buffer"],r)),n?(_a(t,n),process.nextTick(i,n),!1):!0}er.prototype.write=function(t,e,r){var i=this._writableState,n=!1,a=!i.objectMode&&SD(t);return a&&!uu.isBuffer(t)&&(t=MD(t)),typeof e=="function"&&(r=e,e=null),a?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=FD),i.ending?LD(this,r):(a||ND(this,i,t,r))&&(i.pendingcb++,n=KD(this,i,a,t,e,r)),n};er.prototype.cork=function(){this._writableState.corked++};er.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&N5(this,t))};er.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new kD(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(er.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function QD(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=uu.from(e,r)),e}Object.defineProperty(er.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function KD(t,e,r,i,n,a){if(!r){var o=QD(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var c=e.objectMode?1:i.length;e.length+=c;var m=e.length{"use strict";g();var JD=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};H5.exports=zi;var j5=lu(),Jl=hu();gt()(zi,j5);for(Wl=JD(Jl.prototype),cu=0;cu{"use strict";g();var Zl=vt().Buffer,z5=Zl.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function eP(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function tP(t){var e=eP(t);if(typeof e!="string"&&(Zl.isEncoding===z5||!z5(t)))throw new Error("Unknown encoding: "+t);return e||t}G5.StringDecoder=$o;function $o(t){this.encoding=tP(t);var e;switch(this.encoding){case"utf16le":this.text=oP,this.end=sP,e=4;break;case"utf8":this.fillLast=nP,e=4;break;case"base64":this.text=uP,this.end=hP,e=3;break;default:this.write=cP,this.end=dP;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Zl.allocUnsafe(e)}$o.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function rP(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function iP(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function nP(t){var e=this.lastTotal-this.lastNeed,r=iP(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function fP(t,e){var r=rP(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function aP(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function oP(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function sP(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function uP(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function hP(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function cP(t){return t.toString(this.encoding)}function dP(t){return t&&t.length?this.write(t):""}});var Wo=P((wX,$5)=>{"use strict";g();var Y5=Rf().codes.ERR_STREAM_PREMATURE_CLOSE;function lP(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";g();var vu;function Vn(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var bP=Wo(),$n=Symbol("lastResolve"),Tf=Symbol("lastReject"),Jo=Symbol("error"),bu=Symbol("ended"),Of=Symbol("lastPromise"),e1=Symbol("handlePromise"),Df=Symbol("stream");function Wn(t,e){return{value:t,done:e}}function gP(t){var e=t[$n];if(e!==null){var r=t[Df].read();r!==null&&(t[Of]=null,t[$n]=null,t[Tf]=null,e(Wn(r,!1)))}}function yP(t){process.nextTick(gP,t)}function mP(t,e){return function(r,i){t.then(function(){if(e[bu]){r(Wn(void 0,!0));return}e[e1](r,i)},i)}}var xP=Object.getPrototypeOf(function(){}),wP=Object.setPrototypeOf((vu={get stream(){return this[Df]},next:function(){var e=this,r=this[Jo];if(r!==null)return Promise.reject(r);if(this[bu])return Promise.resolve(Wn(void 0,!0));if(this[Df].destroyed)return new Promise(function(o,c){process.nextTick(function(){e[Jo]?c(e[Jo]):o(Wn(void 0,!0))})});var i=this[Of],n;if(i)n=new Promise(mP(i,this));else{var a=this[Df].read();if(a!==null)return Promise.resolve(Wn(a,!1));n=new Promise(this[e1])}return this[Of]=n,n}},Vn(vu,Symbol.asyncIterator,function(){return this}),Vn(vu,"return",function(){var e=this;return new Promise(function(r,i){e[Df].destroy(null,function(n){if(n){i(n);return}r(Wn(void 0,!0))})})}),vu),xP),AP=function(e){var r,i=Object.create(wP,(r={},Vn(r,Df,{value:e,writable:!0}),Vn(r,$n,{value:null,writable:!0}),Vn(r,Tf,{value:null,writable:!0}),Vn(r,Jo,{value:null,writable:!0}),Vn(r,bu,{value:e._readableState.endEmitted,writable:!0}),Vn(r,e1,{value:function(a,o){var c=i[Df].read();c?(i[Of]=null,i[$n]=null,i[Tf]=null,a(Wn(c,!1))):(i[$n]=a,i[Tf]=o)},writable:!0}),r));return i[Of]=null,bP(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var a=i[Tf];a!==null&&(i[Of]=null,i[$n]=null,i[Tf]=null,a(n)),i[Jo]=n;return}var o=i[$n];o!==null&&(i[Of]=null,i[$n]=null,i[Tf]=null,o(Wn(void 0,!0))),i[bu]=!0}),e.on("readable",yP.bind(null,i)),i};W5.exports=AP});var Z5=P((EX,X5)=>{g();X5.exports=function(){throw new Error("Readable.from is not available in the browser")}});var lu=P((CX,um)=>{"use strict";g();um.exports=Lt;var Ia;Lt.ReadableState=im;var SX=fu().EventEmitter,rm=function(e,r){return e.listeners(r).length},Zo=Ql(),gu=fn().Buffer,_P=window.Uint8Array||function(){};function IP(t){return gu.from(t)}function EP(t){return gu.isBuffer(t)||t instanceof _P}var t1=Kl(),At;t1&&t1.debuglog?At=t1.debuglog("stream"):At=function(){};var MP=C5(),s1=zl(),SP=Gl(),CP=SP.getHighWaterMark,yu=Rf().codes,BP=yu.ERR_INVALID_ARG_TYPE,qP=yu.ERR_STREAM_PUSH_AFTER_EOF,RP=yu.ERR_METHOD_NOT_IMPLEMENTED,TP=yu.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Ea,r1,i1;gt()(Lt,Zo);var Xo=s1.errorOrDestroy,n1=["error","close","destroy","pause","resume"];function OP(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function im(t,e,r){Ia=Ia||Yn(),t=t||{},typeof r!="boolean"&&(r=e instanceof Ia),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=CP(this,t,"readableHighWaterMark",r),this.buffer=new MP,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Ea||(Ea=pu().StringDecoder),this.decoder=new Ea(t.encoding),this.encoding=t.encoding)}function Lt(t){if(Ia=Ia||Yn(),!(this instanceof Lt))return new Lt(t);var e=this instanceof Ia;this._readableState=new im(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),Zo.call(this)}Object.defineProperty(Lt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});Lt.prototype.destroy=s1.destroy;Lt.prototype._undestroy=s1.undestroy;Lt.prototype._destroy=function(t,e){e(t)};Lt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=gu.from(t,e),e=""),i=!0),nm(this,t,e,!1,i)};Lt.prototype.unshift=function(t){return nm(this,t,null,!0,!1)};function nm(t,e,r,i,n){At("readableAddChunk",e);var a=t._readableState;if(e===null)a.reading=!1,UP(t,a);else{var o;if(n||(o=DP(a,e)),o)Xo(t,o);else if(a.objectMode||e&&e.length>0)if(typeof e!="string"&&!a.objectMode&&Object.getPrototypeOf(e)!==gu.prototype&&(e=IP(e)),i)a.endEmitted?Xo(t,new TP):f1(t,a,e,!0);else if(a.ended)Xo(t,new qP);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||e.length!==0?f1(t,a,e,!1):o1(t,a)):f1(t,a,e,!1)}else i||(a.reading=!1,o1(t,a))}return!a.ended&&(a.length=em?t=em:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function tm(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=PP(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Lt.prototype.read=function(t){At("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return At("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?a1(this):mu(this),null;if(t=tm(t,e),t===0&&e.ended)return e.length===0&&a1(this),null;var i=e.needReadable;At("need readable",i),(e.length===0||e.length-t0?n=om(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&a1(this)),n!==null&&this.emit("data",n),n};function UP(t,e){if(At("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?mu(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,fm(t)))}}function mu(t){var e=t._readableState;At("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(At("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(fm,t))}function fm(t){var e=t._readableState;At("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,u1(t)}function o1(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(kP,t,e))}function kP(t,e){for(;!e.reading&&!e.ended&&(e.length1&&sm(i.pipes,t)!==-1)&&!M&&(At("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function F(ie){At("onerror",ie),Z(),t.removeListener("error",F),rm(t,"error")===0&&Xo(t,ie)}OP(t,"error",F);function N(){t.removeListener("finish",G),Z()}t.once("close",N);function G(){At("onfinish"),t.removeListener("close",N),Z()}t.once("finish",G);function Z(){At("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(At("pipe resume"),r.resume()),t};function FP(t){return function(){var r=t._readableState;At("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&rm(t,"data")&&(r.flowing=!0,u1(t))}}Lt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,At("on readable",i.length,i.reading),i.length?mu(this):i.reading||process.nextTick(LP,this)),r};Lt.prototype.addListener=Lt.prototype.on;Lt.prototype.removeListener=function(t,e){var r=Zo.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(am,this),r};Lt.prototype.removeAllListeners=function(t){var e=Zo.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(am,this),e};function am(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function LP(t){At("readable nexttick read 0"),t.read(0)}Lt.prototype.resume=function(){var t=this._readableState;return t.flowing||(At("resume"),t.flowing=!t.readableListening,NP(this,t)),t.paused=!1,this};function NP(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(QP,t,e))}function QP(t,e){At("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),u1(t),e.flowing&&!e.reading&&t.read(0)}Lt.prototype.pause=function(){return At("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(At("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function u1(t){var e=t._readableState;for(At("flow",e.flowing);e.flowing&&t.read()!==null;);}Lt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(At("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(At("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var c=e.push(o);c||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(c){return function(){return t[c].apply(t,arguments)}}(n));for(var a=0;a=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function a1(t){var e=t._readableState;At("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(KP,e,t))}function KP(t,e){if(At("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(Lt.from=function(t,e){return i1===void 0&&(i1=Z5()),i1(Lt,t,e)});function sm(t,e){for(var r=0,i=t.length;r{"use strict";g();cm.exports=gn;var xu=Rf().codes,jP=xu.ERR_METHOD_NOT_IMPLEMENTED,HP=xu.ERR_MULTIPLE_CALLBACK,zP=xu.ERR_TRANSFORM_ALREADY_TRANSFORMING,GP=xu.ERR_TRANSFORM_WITH_LENGTH_0,wu=Yn();gt()(gn,wu);function YP(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new HP);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";g();lm.exports=es;var dm=Au();gt()(es,dm);function es(t){if(!(this instanceof es))return new es(t);dm.call(this,t)}es.prototype._transform=function(t,e,r){r(null,t)}});var d1=P((DX,gm)=>{"use strict";g();var c1;function $P(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var bm=Rf().codes,WP=bm.ERR_MISSING_ARGS,JP=bm.ERR_STREAM_DESTROYED;function pm(t){if(t)throw t}function XP(t){return t.setHeader&&typeof t.abort=="function"}function ZP(t,e,r,i){i=$P(i);var n=!1;t.on("close",function(){n=!0}),c1===void 0&&(c1=Wo()),c1(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var a=!1;return function(o){if(!n&&!a){if(a=!0,XP(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new JP("pipe"))}}}function vm(t){t()}function eU(t,e){return t.pipe(e)}function tU(t){return!t.length||typeof t[t.length-1]!="function"?pm:t.pop()}function rU(){for(var t=arguments.length,e=new Array(t),r=0;r0;return ZP(o,m,M,function(B){n||(n=B),B&&a.forEach(vm),!m&&(a.forEach(vm),i(n))})});return e.reduce(eU)}gm.exports=rU});var l1=P((ri,ym)=>{g();ri=ym.exports=lu();ri.Stream=ri;ri.Readable=ri;ri.Writable=hu();ri.Duplex=Yn();ri.Transform=Au();ri.PassThrough=h1();ri.finished=Wo();ri.pipeline=d1()});var p1=P((kX,xm)=>{"use strict";g();var _u=vt().Buffer,mm=l1().Transform,iU=gt();function nU(t,e){if(!_u.isBuffer(t)&&typeof t!="string")throw new TypeError(e+" must be a string or a buffer")}function Jn(t){mm.call(this),this._block=_u.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}iU(Jn,mm);Jn.prototype._transform=function(t,e,r){var i=null;try{this.update(t,e)}catch(n){i=n}r(i)};Jn.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(r){e=r}t(e)};Jn.prototype.update=function(t,e){if(nU(t,"Data"),this._finalized)throw new Error("Digest already called");_u.isBuffer(t)||(t=_u.from(t,e));for(var r=this._block,i=0;this._blockOffset+t.length-i>=this._blockSize;){for(var n=this._blockOffset;n0;++a)this._length[a]+=o,o=this._length[a]/4294967296|0,o>0&&(this._length[a]-=4294967296*o);return this};Jn.prototype._update=function(){throw new Error("_update is not implemented")};Jn.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();t!==void 0&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e};Jn.prototype._digest=function(){throw new Error("_digest is not implemented")};xm.exports=Jn});var Mu=P((LX,Am)=>{"use strict";g();var fU=gt(),wm=p1(),aU=vt().Buffer,oU=new Array(16);function Iu(){wm.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}fU(Iu,wm);Iu.prototype._update=function(){for(var t=oU,e=0;e<16;++e)t[e]=this._block.readInt32LE(e*4);var r=this._a,i=this._b,n=this._c,a=this._d;r=_r(r,i,n,a,t[0],3614090360,7),a=_r(a,r,i,n,t[1],3905402710,12),n=_r(n,a,r,i,t[2],606105819,17),i=_r(i,n,a,r,t[3],3250441966,22),r=_r(r,i,n,a,t[4],4118548399,7),a=_r(a,r,i,n,t[5],1200080426,12),n=_r(n,a,r,i,t[6],2821735955,17),i=_r(i,n,a,r,t[7],4249261313,22),r=_r(r,i,n,a,t[8],1770035416,7),a=_r(a,r,i,n,t[9],2336552879,12),n=_r(n,a,r,i,t[10],4294925233,17),i=_r(i,n,a,r,t[11],2304563134,22),r=_r(r,i,n,a,t[12],1804603682,7),a=_r(a,r,i,n,t[13],4254626195,12),n=_r(n,a,r,i,t[14],2792965006,17),i=_r(i,n,a,r,t[15],1236535329,22),r=Ir(r,i,n,a,t[1],4129170786,5),a=Ir(a,r,i,n,t[6],3225465664,9),n=Ir(n,a,r,i,t[11],643717713,14),i=Ir(i,n,a,r,t[0],3921069994,20),r=Ir(r,i,n,a,t[5],3593408605,5),a=Ir(a,r,i,n,t[10],38016083,9),n=Ir(n,a,r,i,t[15],3634488961,14),i=Ir(i,n,a,r,t[4],3889429448,20),r=Ir(r,i,n,a,t[9],568446438,5),a=Ir(a,r,i,n,t[14],3275163606,9),n=Ir(n,a,r,i,t[3],4107603335,14),i=Ir(i,n,a,r,t[8],1163531501,20),r=Ir(r,i,n,a,t[13],2850285829,5),a=Ir(a,r,i,n,t[2],4243563512,9),n=Ir(n,a,r,i,t[7],1735328473,14),i=Ir(i,n,a,r,t[12],2368359562,20),r=Er(r,i,n,a,t[5],4294588738,4),a=Er(a,r,i,n,t[8],2272392833,11),n=Er(n,a,r,i,t[11],1839030562,16),i=Er(i,n,a,r,t[14],4259657740,23),r=Er(r,i,n,a,t[1],2763975236,4),a=Er(a,r,i,n,t[4],1272893353,11),n=Er(n,a,r,i,t[7],4139469664,16),i=Er(i,n,a,r,t[10],3200236656,23),r=Er(r,i,n,a,t[13],681279174,4),a=Er(a,r,i,n,t[0],3936430074,11),n=Er(n,a,r,i,t[3],3572445317,16),i=Er(i,n,a,r,t[6],76029189,23),r=Er(r,i,n,a,t[9],3654602809,4),a=Er(a,r,i,n,t[12],3873151461,11),n=Er(n,a,r,i,t[15],530742520,16),i=Er(i,n,a,r,t[2],3299628645,23),r=Mr(r,i,n,a,t[0],4096336452,6),a=Mr(a,r,i,n,t[7],1126891415,10),n=Mr(n,a,r,i,t[14],2878612391,15),i=Mr(i,n,a,r,t[5],4237533241,21),r=Mr(r,i,n,a,t[12],1700485571,6),a=Mr(a,r,i,n,t[3],2399980690,10),n=Mr(n,a,r,i,t[10],4293915773,15),i=Mr(i,n,a,r,t[1],2240044497,21),r=Mr(r,i,n,a,t[8],1873313359,6),a=Mr(a,r,i,n,t[15],4264355552,10),n=Mr(n,a,r,i,t[6],2734768916,15),i=Mr(i,n,a,r,t[13],1309151649,21),r=Mr(r,i,n,a,t[4],4149444226,6),a=Mr(a,r,i,n,t[11],3174756917,10),n=Mr(n,a,r,i,t[2],718787259,15),i=Mr(i,n,a,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+a|0};Iu.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=aU.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t};function Eu(t,e){return t<>>32-e}function _r(t,e,r,i,n,a,o){return Eu(t+(e&r|~e&i)+n+a|0,o)+e|0}function Ir(t,e,r,i,n,a,o){return Eu(t+(e&i|r&~i)+n+a|0,o)+e|0}function Er(t,e,r,i,n,a,o){return Eu(t+(e^r^i)+n+a|0,o)+e|0}function Mr(t,e,r,i,n,a,o){return Eu(t+(r^(e|~i))+n+a|0,o)+e|0}Am.exports=Iu});var Cu=P((QX,Bm)=>{"use strict";g();var v1=fn().Buffer,sU=gt(),Cm=p1(),uU=new Array(16),ts=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],rs=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],is=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],ns=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],fs=[0,1518500249,1859775393,2400959708,2840853838],as=[1352829926,1548603684,1836072691,2053994217,0];function Su(){Cm.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}sU(Su,Cm);Su.prototype._update=function(){for(var t=uU,e=0;e<16;++e)t[e]=this._block.readInt32LE(e*4);for(var r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=this._a|0,m=this._b|0,M=this._c|0,B=this._d|0,R=this._e|0,F=0;F<80;F+=1){var N,G;F<16?(N=_m(r,i,n,a,o,t[ts[F]],fs[0],is[F]),G=Sm(c,m,M,B,R,t[rs[F]],as[0],ns[F])):F<32?(N=Im(r,i,n,a,o,t[ts[F]],fs[1],is[F]),G=Mm(c,m,M,B,R,t[rs[F]],as[1],ns[F])):F<48?(N=Em(r,i,n,a,o,t[ts[F]],fs[2],is[F]),G=Em(c,m,M,B,R,t[rs[F]],as[2],ns[F])):F<64?(N=Mm(r,i,n,a,o,t[ts[F]],fs[3],is[F]),G=Im(c,m,M,B,R,t[rs[F]],as[3],ns[F])):(N=Sm(r,i,n,a,o,t[ts[F]],fs[4],is[F]),G=_m(c,m,M,B,R,t[rs[F]],as[4],ns[F])),r=o,o=a,a=Pf(n,10),n=i,i=N,c=R,R=B,B=Pf(M,10),M=m,m=G}var Z=this._b+n+B|0;this._b=this._c+a+R|0,this._c=this._d+o+c|0,this._d=this._e+r+m|0,this._e=this._a+i+M|0,this._a=Z};Su.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=v1.alloc?v1.alloc(20):new v1(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t};function Pf(t,e){return t<>>32-e}function _m(t,e,r,i,n,a,o,c){return Pf(t+(e^r^i)+a+o|0,c)+n|0}function Im(t,e,r,i,n,a,o,c){return Pf(t+(e&r|~e&i)+a+o|0,c)+n|0}function Em(t,e,r,i,n,a,o,c){return Pf(t+((e|~r)^i)+a+o|0,c)+n|0}function Mm(t,e,r,i,n,a,o,c){return Pf(t+(e&i|r&~i)+a+o|0,c)+n|0}function Sm(t,e,r,i,n,a,o,c){return Pf(t+(e^(r|~i))+a+o|0,c)+n|0}Bm.exports=Su});var Uf=P((jX,Rm)=>{g();var qm=vt().Buffer;function Bu(t,e){this._block=qm.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}Bu.prototype.update=function(t,e){typeof t=="string"&&(e=e||"utf8",t=qm.from(t,e));for(var r=this._block,i=this._blockSize,n=t.length,a=this._len,o=0;o=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(r&4294967295)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return t?a.toString(t):a};Bu.prototype._update=function(){throw new Error("_update must be implemented by subclass")};Rm.exports=Bu});var Dm=P((zX,Om)=>{g();var hU=gt(),Tm=Uf(),cU=vt().Buffer,dU=[1518500249,1859775393,-1894007588,-899497514],lU=new Array(80);function os(){this.init(),this._w=lU,Tm.call(this,64,56)}hU(os,Tm);os.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function pU(t){return t<<5|t>>>27}function vU(t){return t<<30|t>>>2}function bU(t,e,r,i){return t===0?e&r|~e&i:t===2?e&r|e&i|r&i:e^r^i}os.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=0;c<16;++c)e[c]=t.readInt32BE(c*4);for(;c<80;++c)e[c]=e[c-3]^e[c-8]^e[c-14]^e[c-16];for(var m=0;m<80;++m){var M=~~(m/20),B=pU(r)+bU(M,i,n,a)+o+e[m]+dU[M]|0;o=a,a=n,n=vU(i),i=r,r=B}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0};os.prototype._hash=function(){var t=cU.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};Om.exports=os});var km=P((YX,Um)=>{g();var gU=gt(),Pm=Uf(),yU=vt().Buffer,mU=[1518500249,1859775393,-1894007588,-899497514],xU=new Array(80);function ss(){this.init(),this._w=xU,Pm.call(this,64,56)}gU(ss,Pm);ss.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function wU(t){return t<<1|t>>>31}function AU(t){return t<<5|t>>>27}function _U(t){return t<<30|t>>>2}function IU(t,e,r,i){return t===0?e&r|~e&i:t===2?e&r|e&i|r&i:e^r^i}ss.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=0;c<16;++c)e[c]=t.readInt32BE(c*4);for(;c<80;++c)e[c]=wU(e[c-3]^e[c-8]^e[c-14]^e[c-16]);for(var m=0;m<80;++m){var M=~~(m/20),B=AU(r)+IU(M,i,n,a)+o+e[m]+mU[M]|0;o=a,a=n,n=_U(i),i=r,r=B}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0};ss.prototype._hash=function(){var t=yU.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};Um.exports=ss});var b1=P(($X,Lm)=>{g();var EU=gt(),Fm=Uf(),MU=vt().Buffer,SU=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],CU=new Array(64);function us(){this.init(),this._w=CU,Fm.call(this,64,56)}EU(us,Fm);us.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function BU(t,e,r){return r^t&(e^r)}function qU(t,e,r){return t&e|r&(t|e)}function RU(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function TU(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function OU(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function DU(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}us.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=this._f|0,m=this._g|0,M=this._h|0,B=0;B<16;++B)e[B]=t.readInt32BE(B*4);for(;B<64;++B)e[B]=DU(e[B-2])+e[B-7]+OU(e[B-15])+e[B-16]|0;for(var R=0;R<64;++R){var F=M+TU(o)+BU(o,c,m)+SU[R]+e[R]|0,N=RU(r)+qU(r,i,n)|0;M=m,m=c,c=o,o=a+F|0,a=n,n=i,i=r,r=F+N|0}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0,this._f=c+this._f|0,this._g=m+this._g|0,this._h=M+this._h|0};us.prototype._hash=function(){var t=MU.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t};Lm.exports=us});var Qm=P((JX,Nm)=>{g();var PU=gt(),UU=b1(),kU=Uf(),FU=vt().Buffer,LU=new Array(64);function qu(){this.init(),this._w=LU,kU.call(this,64,56)}PU(qu,UU);qu.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this};qu.prototype._hash=function(){var t=FU.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t};Nm.exports=qu});var g1=P((ZX,Vm)=>{g();var NU=gt(),Ym=Uf(),QU=vt().Buffer,Km=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],KU=new Array(160);function hs(){this.init(),this._w=KU,Ym.call(this,128,112)}NU(hs,Ym);hs.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function jm(t,e,r){return r^t&(e^r)}function Hm(t,e,r){return t&e|r&(t|e)}function zm(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function Gm(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function jU(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function HU(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function zU(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function GU(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function cr(t,e){return t>>>0>>0?1:0}hs.prototype._update=function(t){for(var e=this._w,r=this._ah|0,i=this._bh|0,n=this._ch|0,a=this._dh|0,o=this._eh|0,c=this._fh|0,m=this._gh|0,M=this._hh|0,B=this._al|0,R=this._bl|0,F=this._cl|0,N=this._dl|0,G=this._el|0,Z=this._fl|0,ie=this._gl|0,fe=this._hl|0,ce=0;ce<32;ce+=2)e[ce]=t.readInt32BE(ce*4),e[ce+1]=t.readInt32BE(ce*4+4);for(;ce<160;ce+=2){var ge=e[ce-30],ve=e[ce-15*2+1],Ke=jU(ge,ve),be=HU(ve,ge);ge=e[ce-2*2],ve=e[ce-2*2+1];var pe=zU(ge,ve),Ne=GU(ve,ge),k=e[ce-7*2],d=e[ce-7*2+1],b=e[ce-16*2],E=e[ce-16*2+1],p=be+d|0,f=Ke+k+cr(p,be)|0;p=p+Ne|0,f=f+pe+cr(p,Ne)|0,p=p+E|0,f=f+b+cr(p,E)|0,e[ce]=f,e[ce+1]=p}for(var s=0;s<160;s+=2){f=e[s],p=e[s+1];var v=Hm(r,i,n),l=Hm(B,R,F),h=zm(r,B),A=zm(B,r),q=Gm(o,G),_=Gm(G,o),u=Km[s],I=Km[s+1],j=jm(o,c,m),S=jm(G,Z,ie),L=fe+_|0,Q=M+q+cr(L,fe)|0;L=L+S|0,Q=Q+j+cr(L,S)|0,L=L+I|0,Q=Q+u+cr(L,I)|0,L=L+p|0,Q=Q+f+cr(L,p)|0;var z=A+l|0,J=h+v+cr(z,A)|0;M=m,fe=ie,m=c,ie=Z,c=o,Z=G,G=N+L|0,o=a+Q+cr(G,N)|0,a=n,N=F,n=i,F=R,i=r,R=B,B=L+z|0,r=Q+J+cr(B,L)|0}this._al=this._al+B|0,this._bl=this._bl+R|0,this._cl=this._cl+F|0,this._dl=this._dl+N|0,this._el=this._el+G|0,this._fl=this._fl+Z|0,this._gl=this._gl+ie|0,this._hl=this._hl+fe|0,this._ah=this._ah+r+cr(this._al,B)|0,this._bh=this._bh+i+cr(this._bl,R)|0,this._ch=this._ch+n+cr(this._cl,F)|0,this._dh=this._dh+a+cr(this._dl,N)|0,this._eh=this._eh+o+cr(this._el,G)|0,this._fh=this._fh+c+cr(this._fl,Z)|0,this._gh=this._gh+m+cr(this._gl,ie)|0,this._hh=this._hh+M+cr(this._hl,fe)|0};hs.prototype._hash=function(){var t=QU.allocUnsafe(64);function e(r,i,n){t.writeInt32BE(r,n),t.writeInt32BE(i,n+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t};Vm.exports=hs});var Wm=P((tZ,$m)=>{g();var YU=gt(),VU=g1(),$U=Uf(),WU=vt().Buffer,JU=new Array(160);function Ru(){this.init(),this._w=JU,$U.call(this,128,112)}YU(Ru,VU);Ru.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this};Ru.prototype._hash=function(){var t=WU.allocUnsafe(48);function e(r,i,n){t.writeInt32BE(r,n),t.writeInt32BE(i,n+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t};$m.exports=Ru});var Tu=P((yn,Jm)=>{g();var yn=Jm.exports=function(e){e=e.toLowerCase();var r=yn[e];if(!r)throw new Error(e+" is not supported (we accept pull requests)");return new r};yn.sha=Dm();yn.sha1=km();yn.sha224=Qm();yn.sha256=b1();yn.sha384=Wm();yn.sha512=g1()});var Zm=P((nZ,Xm)=>{g();Xm.exports=ii;var y1=fu().EventEmitter,XU=gt();XU(ii,y1);ii.Readable=lu();ii.Writable=hu();ii.Duplex=Yn();ii.Transform=Au();ii.PassThrough=h1();ii.finished=Wo();ii.pipeline=d1();ii.Stream=ii;function ii(){y1.call(this)}ii.prototype.pipe=function(t,e){var r=this;function i(B){t.writable&&t.write(B)===!1&&r.pause&&r.pause()}r.on("data",i);function n(){r.readable&&r.resume&&r.resume()}t.on("drain",n),!t._isStdio&&(!e||e.end!==!1)&&(r.on("end",o),r.on("close",c));var a=!1;function o(){a||(a=!0,t.end())}function c(){a||(a=!0,typeof t.destroy=="function"&&t.destroy())}function m(B){if(M(),y1.listenerCount(this,"error")===0)throw B}r.on("error",m),t.on("error",m);function M(){r.removeListener("data",i),t.removeListener("drain",n),r.removeListener("end",o),r.removeListener("close",c),r.removeListener("error",m),t.removeListener("error",m),r.removeListener("end",M),r.removeListener("close",M),t.removeListener("close",M)}return r.on("end",M),r.on("close",M),t.on("close",M),t.emit("pipe",r),t}});var mn=P((aZ,rx)=>{g();var ex=vt().Buffer,tx=Zm().Transform,ZU=pu().StringDecoder,ek=gt();function _i(t){tx.call(this),this.hashMode=typeof t=="string",this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}ek(_i,tx);_i.prototype.update=function(t,e,r){typeof t=="string"&&(t=ex.from(t,e));var i=this._update(t);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)};_i.prototype.setAutoPadding=function(){};_i.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")};_i.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")};_i.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")};_i.prototype._transform=function(t,e,r){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(n){i=n}finally{r(i)}};_i.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(r){e=r}t(e)};_i.prototype._finalOrDigest=function(t){var e=this.__final()||ex.alloc(0);return t&&(e=this._toString(e,t,!0)),e};_i.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new ZU(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var i=this._decoder.write(t);return r&&(i+=this._decoder.end()),i};rx.exports=_i});var Ma=P((sZ,nx)=>{"use strict";g();var tk=gt(),rk=Mu(),ik=Cu(),nk=Tu(),ix=mn();function Ou(t){ix.call(this,"digest"),this._hash=t}tk(Ou,ix);Ou.prototype._update=function(t){this._hash.update(t)};Ou.prototype._final=function(){return this._hash.digest()};nx.exports=function(e){return e=e.toLowerCase(),e==="md5"?new rk:e==="rmd160"||e==="ripemd160"?new ik:new Ou(nk(e))}});var ox=P((hZ,ax)=>{"use strict";g();var fk=gt(),kf=vt().Buffer,fx=mn(),ak=kf.alloc(128),Sa=64;function Du(t,e){fx.call(this,"digest"),typeof e=="string"&&(e=kf.from(e)),this._alg=t,this._key=e,e.length>Sa?e=t(e):e.length{g();var ok=Mu();sx.exports=function(t){return new ok().update(t).digest()}});var A1=P((pZ,hx)=>{"use strict";g();var sk=gt(),uk=ox(),ux=mn(),cs=vt().Buffer,hk=m1(),x1=Cu(),w1=Tu(),ck=cs.alloc(128);function ds(t,e){ux.call(this,"digest"),typeof e=="string"&&(e=cs.from(e));var r=t==="sha512"||t==="sha384"?128:64;if(this._alg=t,this._key=e,e.length>r){var i=t==="rmd160"?new x1:w1(t);e=i.update(e).digest()}else e.length{dk.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}});var dx=P((gZ,cx)=>{g();cx.exports=_1()});var I1=P((mZ,lx)=>{g();var lk=Math.pow(2,30)-1;lx.exports=function(t,e){if(typeof t!="number")throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if(typeof e!="number")throw new TypeError("Key length not a number");if(e<0||e>lk||e!==e)throw new TypeError("Bad key length")}});var E1=P((wZ,vx)=>{g();var Pu;window.process&&window.process.browser?Pu="utf-8":window.process&&window.process.version?(px=parseInt(process.version.split(".")[0].slice(1),10),Pu=px>=6?"utf-8":"binary"):Pu="utf-8";var px;vx.exports=Pu});var S1=P((_Z,bx)=>{g();var M1=vt().Buffer;bx.exports=function(t,e,r){if(M1.isBuffer(t))return t;if(typeof t=="string")return M1.from(t,e);if(ArrayBuffer.isView(t))return M1.from(t.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}});var C1=P((EZ,xx)=>{g();var pk=m1(),vk=Cu(),bk=Tu(),Ff=vt().Buffer,gk=I1(),gx=E1(),yx=S1(),yk=Ff.alloc(128),Uu={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function mx(t,e,r){var i=mk(t),n=t==="sha512"||t==="sha384"?128:64;e.length>n?e=i(e):e.length{g();var Ix=vt().Buffer,wk=I1(),wx=E1(),Ax=C1(),_x=S1(),ku,ls=window.crypto&&window.crypto.subtle,Ak={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},B1=[];function _k(t){if(window.process&&!window.process.browser||!ls||!ls.importKey||!ls.deriveBits)return Promise.resolve(!1);if(B1[t]!==void 0)return B1[t];ku=ku||Ix.alloc(8);var e=Ex(ku,ku,10,128,t).then(function(){return!0}).catch(function(){return!1});return B1[t]=e,e}var Lf;function q1(){return Lf||(window.process&&window.process.nextTick?Lf=window.process.nextTick:window.queueMicrotask?Lf=window.queueMicrotask:window.setImmediate?Lf=window.setImmediate:Lf=window.setTimeout,Lf)}function Ex(t,e,r,i,n){return ls.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then(function(a){return ls.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},a,i<<3)}).then(function(a){return Ix.from(a)})}function Ik(t,e){t.then(function(r){q1()(function(){e(null,r)})},function(r){q1()(function(){e(r)})})}Mx.exports=function(t,e,r,i,n,a){typeof n=="function"&&(a=n,n=void 0),n=n||"sha1";var o=Ak[n.toLowerCase()];if(!o||typeof window.Promise!="function"){q1()(function(){var c;try{c=Ax(t,e,r,i,n)}catch(m){return a(m)}a(null,c)});return}if(wk(r,i),t=_x(t,wx,"Password"),e=_x(e,wx,"Salt"),typeof a!="function")throw new Error("No callback provided to pbkdf2");Ik(_k(o).then(function(c){return c?Ex(t,e,r,i,o):Ax(t,e,r,i,n)}),a)}});var T1=P(R1=>{g();R1.pbkdf2=Sx();R1.pbkdf2Sync=C1()});var O1=P(ni=>{"use strict";g();ni.readUInt32BE=function(e,r){var i=e[0+r]<<24|e[1+r]<<16|e[2+r]<<8|e[3+r];return i>>>0};ni.writeUInt32BE=function(e,r,i){e[0+i]=r>>>24,e[1+i]=r>>>16&255,e[2+i]=r>>>8&255,e[3+i]=r&255};ni.ip=function(e,r,i,n){for(var a=0,o=0,c=6;c>=0;c-=2){for(var m=0;m<=24;m+=8)a<<=1,a|=r>>>m+c&1;for(var m=0;m<=24;m+=8)a<<=1,a|=e>>>m+c&1}for(var c=6;c>=0;c-=2){for(var m=1;m<=25;m+=8)o<<=1,o|=r>>>m+c&1;for(var m=1;m<=25;m+=8)o<<=1,o|=e>>>m+c&1}i[n+0]=a>>>0,i[n+1]=o>>>0};ni.rip=function(e,r,i,n){for(var a=0,o=0,c=0;c<4;c++)for(var m=24;m>=0;m-=8)a<<=1,a|=r>>>m+c&1,a<<=1,a|=e>>>m+c&1;for(var c=4;c<8;c++)for(var m=24;m>=0;m-=8)o<<=1,o|=r>>>m+c&1,o<<=1,o|=e>>>m+c&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.pc1=function(e,r,i,n){for(var a=0,o=0,c=7;c>=5;c--){for(var m=0;m<=24;m+=8)a<<=1,a|=r>>m+c&1;for(var m=0;m<=24;m+=8)a<<=1,a|=e>>m+c&1}for(var m=0;m<=24;m+=8)a<<=1,a|=r>>m+c&1;for(var c=1;c<=3;c++){for(var m=0;m<=24;m+=8)o<<=1,o|=r>>m+c&1;for(var m=0;m<=24;m+=8)o<<=1,o|=e>>m+c&1}for(var m=0;m<=24;m+=8)o<<=1,o|=e>>m+c&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.r28shl=function(e,r){return e<>>28-r};var Fu=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];ni.pc2=function(e,r,i,n){for(var a=0,o=0,c=Fu.length>>>1,m=0;m>>Fu[m]&1;for(var m=c;m>>Fu[m]&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.expand=function(e,r,i){var n=0,a=0;n=(e&1)<<5|e>>>27;for(var o=23;o>=15;o-=4)n<<=6,n|=e>>>o&63;for(var o=11;o>=3;o-=4)a|=e>>>o&63,a<<=6;a|=(e&31)<<1|e>>>31,r[i+0]=n>>>0,r[i+1]=a>>>0};var Cx=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];ni.substitute=function(e,r){for(var i=0,n=0;n<4;n++){var a=e>>>18-n*6&63,o=Cx[n*64+a];i<<=4,i|=o}for(var n=0;n<4;n++){var a=r>>>18-n*6&63,o=Cx[4*64+n*64+a];i<<=4,i|=o}return i>>>0};var Bx=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];ni.permute=function(e){for(var r=0,i=0;i>>Bx[i]&1;return r>>>0};ni.padSplit=function(e,r,i){for(var n=e.toString(2);n.length{g();Rx.exports=qx;function qx(t,e){if(!t)throw new Error(e||"Assertion failed")}qx.equal=function(e,r,i){if(e!=r)throw new Error(i||"Assertion failed: "+e+" != "+r)}});var Lu=P((PZ,Tx)=>{"use strict";g();var Ek=zr();function fi(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}Tx.exports=fi;fi.prototype._init=function(){};fi.prototype.update=function(e){return e.length===0?[]:this.type==="decrypt"?this._updateDecrypt(e):this._updateEncrypt(e)};fi.prototype._buffer=function(e,r){for(var i=Math.min(this.buffer.length-this.bufferOff,e.length-r),n=0;n0;n--)r+=this._buffer(e,r),i+=this._flushBuffer(a,i);return r+=this._buffer(e,r),a};fi.prototype.final=function(e){var r;e&&(r=this.update(e));var i;return this.type==="encrypt"?i=this._finalEncrypt():i=this._finalDecrypt(),r?r.concat(i):i};fi.prototype._pad=function(e,r){if(r===0)return!1;for(;r{"use strict";g();var Ox=zr(),Mk=gt(),or=O1(),Dx=Lu();function Sk(){this.tmp=new Array(2),this.keys=null}function Gi(t){Dx.call(this,t);var e=new Sk;this._desState=e,this.deriveKeys(e,t.key)}Mk(Gi,Dx);Px.exports=Gi;Gi.create=function(e){return new Gi(e)};var Ck=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];Gi.prototype.deriveKeys=function(e,r){e.keys=new Array(16*2),Ox.equal(r.length,this.blockSize,"Invalid key length");var i=or.readUInt32BE(r,0),n=or.readUInt32BE(r,4);or.pc1(i,n,e.tmp,0),i=e.tmp[0],n=e.tmp[1];for(var a=0;a>>1];i=or.r28shl(i,o),n=or.r28shl(n,o),or.pc2(i,n,e.keys,a)}};Gi.prototype._update=function(e,r,i,n){var a=this._desState,o=or.readUInt32BE(e,r),c=or.readUInt32BE(e,r+4);or.ip(o,c,a.tmp,0),o=a.tmp[0],c=a.tmp[1],this.type==="encrypt"?this._encrypt(a,o,c,a.tmp,0):this._decrypt(a,o,c,a.tmp,0),o=a.tmp[0],c=a.tmp[1],or.writeUInt32BE(i,o,n),or.writeUInt32BE(i,c,n+4)};Gi.prototype._pad=function(e,r){for(var i=e.length-r,n=r;n>>0,o=N}or.rip(c,o,n,a)};Gi.prototype._decrypt=function(e,r,i,n,a){for(var o=i,c=r,m=e.keys.length-2;m>=0;m-=2){var M=e.keys[m],B=e.keys[m+1];or.expand(o,e.tmp,0),M^=e.tmp[0],B^=e.tmp[1];var R=or.substitute(M,B),F=or.permute(R),N=o;o=(c^F)>>>0,c=N}or.rip(o,c,n,a)}});var kx=P(Ux=>{"use strict";g();var Bk=zr(),qk=gt(),Nu={};function Rk(t){Bk.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e{"use strict";g();var Ok=zr(),Dk=gt(),Fx=Lu(),Xn=D1();function Pk(t,e){Ok.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),i=e.slice(8,16),n=e.slice(16,24);t==="encrypt"?this.ciphers=[Xn.create({type:"encrypt",key:r}),Xn.create({type:"decrypt",key:i}),Xn.create({type:"encrypt",key:n})]:this.ciphers=[Xn.create({type:"decrypt",key:n}),Xn.create({type:"encrypt",key:i}),Xn.create({type:"decrypt",key:r})]}function Nf(t){Fx.call(this,t);var e=new Pk(this.type,this.options.key);this._edeState=e}Dk(Nf,Fx);Lx.exports=Nf;Nf.create=function(e){return new Nf(e)};Nf.prototype._update=function(e,r,i,n){var a=this._edeState;a.ciphers[0]._update(e,r,i,n),a.ciphers[1]._update(i,n,i,n),a.ciphers[2]._update(i,n,i,n)};Nf.prototype._pad=Xn.prototype._pad;Nf.prototype._unpad=Xn.prototype._unpad});var Qx=P(Ca=>{"use strict";g();Ca.utils=O1();Ca.Cipher=Lu();Ca.DES=D1();Ca.CBC=kx();Ca.EDE=Nx()});var Hx=P((zZ,jx)=>{g();var Kx=mn(),xn=Qx(),Uk=gt(),Qf=vt().Buffer,ps={"des-ede3-cbc":xn.CBC.instantiate(xn.EDE),"des-ede3":xn.EDE,"des-ede-cbc":xn.CBC.instantiate(xn.EDE),"des-ede":xn.EDE,"des-cbc":xn.CBC.instantiate(xn.DES),"des-ecb":xn.DES};ps.des=ps["des-cbc"];ps.des3=ps["des-ede3-cbc"];jx.exports=Qu;Uk(Qu,Kx);function Qu(t){Kx.call(this);var e=t.mode.toLowerCase(),r=ps[e],i;t.decrypt?i="decrypt":i="encrypt";var n=t.key;Qf.isBuffer(n)||(n=Qf.from(n)),(e==="des-ede"||e==="des-ede-cbc")&&(n=Qf.concat([n,n.slice(0,8)]));var a=t.iv;Qf.isBuffer(a)||(a=Qf.from(a)),this._des=r.create({key:n,iv:a,type:i})}Qu.prototype._update=function(t){return Qf.from(this._des.update(t))};Qu.prototype._final=function(){return Qf.from(this._des.final())}});var zx=P(P1=>{g();P1.encrypt=function(t,e){return t._cipher.encryptBlock(e)};P1.decrypt=function(t,e){return t._cipher.decryptBlock(e)}});var Ba=P(($Z,Gx)=>{g();var kk=vt().Buffer;Gx.exports=function(e,r){for(var i=Math.max(e.length,r.length),n=kk.allocUnsafe(i),a=0;a{g();var Yx=Ba();U1.encrypt=function(t,e){var r=Yx(e,t._prev);return t._prev=t._cipher.encryptBlock(r),t._prev};U1.decrypt=function(t,e){var r=t._prev;t._prev=e;var i=t._cipher.decryptBlock(e);return Yx(i,r)}});var Jx=P(Wx=>{g();var vs=vt().Buffer,Fk=Ba();function $x(t,e,r){var i=e.length,n=Fk(e,t._cache);return t._cache=t._cache.slice(i),t._prev=vs.concat([t._prev,r?e:n]),n}Wx.encrypt=function(t,e,r){for(var i=vs.allocUnsafe(0),n;e.length;)if(t._cache.length===0&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=vs.allocUnsafe(0)),t._cache.length<=e.length)n=t._cache.length,i=vs.concat([i,$x(t,e.slice(0,n),r)]),e=e.slice(n);else{i=vs.concat([i,$x(t,e,r)]);break}return i}});var Zx=P(Xx=>{g();var k1=vt().Buffer;function Lk(t,e,r){var i=t._cipher.encryptBlock(t._prev),n=i[0]^e;return t._prev=k1.concat([t._prev.slice(1),k1.from([r?e:n])]),n}Xx.encrypt=function(t,e,r){for(var i=e.length,n=k1.allocUnsafe(i),a=-1;++a{g();var Ku=vt().Buffer;function Nk(t,e,r){for(var i,n=-1,a=8,o=0,c,m;++n>n%8,t._prev=Qk(t._prev,r?c:m);return o}function Qk(t,e){var r=t.length,i=-1,n=Ku.allocUnsafe(t.length);for(t=Ku.concat([t,Ku.from([e])]);++i>7;return n}ew.encrypt=function(t,e,r){for(var i=e.length,n=Ku.allocUnsafe(i),a=-1;++a{g();var Kk=Ba();function jk(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}rw.encrypt=function(t,e){for(;t._cache.length{g();function Hk(t){for(var e=t.length,r;e--;)if(r=t.readUInt8(e),r===255)t.writeUInt8(0,e);else{r++,t.writeUInt8(r,e);break}}nw.exports=Hk});var N1=P(aw=>{g();var zk=Ba(),fw=vt().Buffer,Gk=F1();function Yk(t){var e=t._cipher.encryptBlockRaw(t._prev);return Gk(t._prev),e}var L1=16;aw.encrypt=function(t,e){var r=Math.ceil(e.length/L1),i=t._cache.length;t._cache=fw.concat([t._cache,fw.allocUnsafe(r*L1)]);for(var n=0;n{Vk.exports={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},aes192:{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},aes256:{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}}});var Hu=P((dee,ow)=>{g();var $k={ECB:zx(),CBC:Vx(),CFB:Jx(),CFB8:Zx(),CFB1:tw(),OFB:iw(),CTR:N1(),GCM:N1()},ju=Q1();for(K1 in ju)ju[K1].module=$k[ju[K1].mode];var K1;ow.exports=ju});var bs=P((pee,uw)=>{g();var zu=vt().Buffer;function H1(t){zu.isBuffer(t)||(t=zu.from(t));for(var e=t.length/4|0,r=new Array(e),i=0;i>>24]^o[B>>>16&255]^c[R>>>8&255]^m[F&255]^e[fe++],G=a[B>>>24]^o[R>>>16&255]^c[F>>>8&255]^m[M&255]^e[fe++],Z=a[R>>>24]^o[F>>>16&255]^c[M>>>8&255]^m[B&255]^e[fe++],ie=a[F>>>24]^o[M>>>16&255]^c[B>>>8&255]^m[R&255]^e[fe++],M=N,B=G,R=Z,F=ie;return N=(i[M>>>24]<<24|i[B>>>16&255]<<16|i[R>>>8&255]<<8|i[F&255])^e[fe++],G=(i[B>>>24]<<24|i[R>>>16&255]<<16|i[F>>>8&255]<<8|i[M&255])^e[fe++],Z=(i[R>>>24]<<24|i[F>>>16&255]<<16|i[M>>>8&255]<<8|i[B&255])^e[fe++],ie=(i[F>>>24]<<24|i[M>>>16&255]<<16|i[B>>>8&255]<<8|i[R&255])^e[fe++],N=N>>>0,G=G>>>0,Z=Z>>>0,ie=ie>>>0,[N,G,Z,ie]}var Wk=[0,1,2,4,8,16,32,64,128,27,54],nr=function(){for(var t=new Array(256),e=0;e<256;e++)e<128?t[e]=e<<1:t[e]=e<<1^283;for(var r=[],i=[],n=[[],[],[],[]],a=[[],[],[],[]],o=0,c=0,m=0;m<256;++m){var M=c^c<<1^c<<2^c<<3^c<<4;M=M>>>8^M&255^99,r[o]=M,i[M]=o;var B=t[o],R=t[B],F=t[R],N=t[M]*257^M*16843008;n[0][o]=N<<24|N>>>8,n[1][o]=N<<16|N>>>16,n[2][o]=N<<8|N>>>24,n[3][o]=N,N=F*16843009^R*65537^B*257^o*16843008,a[0][M]=N<<24|N>>>8,a[1][M]=N<<16|N>>>16,a[2][M]=N<<8|N>>>24,a[3][M]=N,o===0?o=c=1:(o=B^t[t[t[F^B]]],c^=t[t[c]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function ai(t){this._key=H1(t),this._reset()}ai.blockSize=4*4;ai.keySize=256/8;ai.prototype.blockSize=ai.blockSize;ai.prototype.keySize=ai.keySize;ai.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,i=(r+1)*4,n=[],a=0;a>>24,o=nr.SBOX[o>>>24]<<24|nr.SBOX[o>>>16&255]<<16|nr.SBOX[o>>>8&255]<<8|nr.SBOX[o&255],o^=Wk[a/e|0]<<24):e>6&&a%e===4&&(o=nr.SBOX[o>>>24]<<24|nr.SBOX[o>>>16&255]<<16|nr.SBOX[o>>>8&255]<<8|nr.SBOX[o&255]),n[a]=n[a-e]^o}for(var c=[],m=0;m>>24]]^nr.INV_SUB_MIX[1][nr.SBOX[B>>>16&255]]^nr.INV_SUB_MIX[2][nr.SBOX[B>>>8&255]]^nr.INV_SUB_MIX[3][nr.SBOX[B&255]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=c};ai.prototype.encryptBlockRaw=function(t){return t=H1(t),sw(t,this._keySchedule,nr.SUB_MIX,nr.SBOX,this._nRounds)};ai.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=zu.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r};ai.prototype.decryptBlock=function(t){t=H1(t);var e=t[1];t[1]=t[3],t[3]=e;var r=sw(t,this._invKeySchedule,nr.INV_SUB_MIX,nr.INV_SBOX,this._nRounds),i=zu.allocUnsafe(16);return i.writeUInt32BE(r[0],0),i.writeUInt32BE(r[3],4),i.writeUInt32BE(r[2],8),i.writeUInt32BE(r[1],12),i};ai.prototype.scrub=function(){j1(this._keySchedule),j1(this._invKeySchedule),j1(this._key)};uw.exports.AES=ai});var dw=P((bee,cw)=>{g();var qa=vt().Buffer,Jk=qa.alloc(16,0);function Xk(t){return[t.readUInt32BE(0),t.readUInt32BE(4),t.readUInt32BE(8),t.readUInt32BE(12)]}function hw(t){var e=qa.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function gs(t){this.h=t,this.state=qa.alloc(16,0),this.cache=qa.allocUnsafe(0)}gs.prototype.ghash=function(t){for(var e=-1;++e0;r--)t[r]=t[r]>>>1|(t[r-1]&1)<<31;t[0]=t[0]>>>1,n&&(t[0]=t[0]^225<<24)}this.state=hw(e)};gs.prototype.update=function(t){this.cache=qa.concat([this.cache,t]);for(var e;this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)};gs.prototype.final=function(t,e){return this.cache.length&&this.ghash(qa.concat([this.cache,Jk],16)),this.ghash(hw([0,t,0,e])),this.state};cw.exports=gs});var z1=P((yee,vw)=>{g();var Zk=bs(),kr=vt().Buffer,lw=mn(),eF=gt(),pw=dw(),tF=Ba(),rF=F1();function iF(t,e){var r=0;t.length!==e.length&&r++;for(var i=Math.min(t.length,e.length),n=0;n{g();var fF=bs(),G1=vt().Buffer,bw=mn(),aF=gt();function Gu(t,e,r,i){bw.call(this),this._cipher=new fF.AES(e),this._prev=G1.from(r),this._cache=G1.allocUnsafe(0),this._secCache=G1.allocUnsafe(0),this._decrypt=i,this._mode=t}aF(Gu,bw);Gu.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)};Gu.prototype._final=function(){this._cipher.scrub()};gw.exports=Gu});var ys=P((Aee,yw)=>{g();var jf=vt().Buffer,oF=Mu();function sF(t,e,r,i){if(jf.isBuffer(t)||(t=jf.from(t,"binary")),e&&(jf.isBuffer(e)||(e=jf.from(e,"binary")),e.length!==8))throw new RangeError("salt should be Buffer with 8 byte length");for(var n=r/8,a=jf.alloc(n),o=jf.alloc(i||0),c=jf.alloc(0);n>0||i>0;){var m=new oF;m.update(c),m.update(t),e&&m.update(e),c=m.digest();var M=0;if(n>0){var B=a.length-n;M=Math.min(n,c.length),c.copy(a,B,0,M),n-=M}if(M0){var R=o.length-i,F=Math.min(i,c.length-M);c.copy(o,R,M,M+F),i-=F}}return c.fill(0),{key:a,iv:o}}yw.exports=sF});var Aw=P(V1=>{g();var mw=Hu(),uF=z1(),wn=vt().Buffer,hF=Y1(),xw=mn(),cF=bs(),dF=ys(),lF=gt();function ms(t,e,r){xw.call(this),this._cache=new Yu,this._cipher=new cF.AES(e),this._prev=wn.from(r),this._mode=t,this._autopadding=!0}lF(ms,xw);ms.prototype._update=function(t){this._cache.add(t);for(var e,r,i=[];e=this._cache.get();)r=this._mode.encrypt(this,e),i.push(r);return wn.concat(i)};var pF=wn.alloc(16,16);ms.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(pF))throw this._cipher.scrub(),new Error("data not multiple of block length")};ms.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this};function Yu(){this.cache=wn.allocUnsafe(0)}Yu.prototype.add=function(t){this.cache=wn.concat([this.cache,t])};Yu.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null};Yu.prototype.flush=function(){for(var t=16-this.cache.length,e=wn.allocUnsafe(t),r=-1;++r{g();var bF=z1(),Ra=vt().Buffer,_w=Hu(),gF=Y1(),Iw=mn(),yF=bs(),mF=ys(),xF=gt();function xs(t,e,r){Iw.call(this),this._cache=new Vu,this._last=void 0,this._cipher=new yF.AES(e),this._prev=Ra.from(r),this._mode=t,this._autopadding=!0}xF(xs,Iw);xs.prototype._update=function(t){this._cache.add(t);for(var e,r,i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return Ra.concat(i)};xs.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return wF(this._mode.decrypt(this,t));if(t)throw new Error("data not multiple of block length")};xs.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this};function Vu(){this.cache=Ra.allocUnsafe(0)}Vu.prototype.add=function(t){this.cache=Ra.concat([this.cache,t])};Vu.prototype.get=function(t){var e;if(t){if(this.cache.length>16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null};Vu.prototype.flush=function(){if(this.cache.length)return this.cache};function wF(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");for(var r=-1;++r{g();var Sw=Aw(),Cw=Mw(),_F=Q1();function IF(){return Object.keys(_F)}Ii.createCipher=Ii.Cipher=Sw.createCipher;Ii.createCipheriv=Ii.Cipheriv=Sw.createCipheriv;Ii.createDecipher=Ii.Decipher=Cw.createDecipher;Ii.createDecipheriv=Ii.Decipheriv=Cw.createDecipheriv;Ii.listCiphers=Ii.getCiphers=IF});var Bw=P(An=>{g();An["des-ecb"]={key:8,iv:0};An["des-cbc"]=An.des={key:8,iv:8};An["des-ede3-cbc"]=An.des3={key:24,iv:8};An["des-ede3"]={key:24,iv:0};An["des-ede-cbc"]={key:16,iv:8};An["des-ede"]={key:16,iv:0}});var Dw=P(Ei=>{g();var qw=Hx(),W1=$u(),Zn=Hu(),_n=Bw(),Rw=ys();function EF(t,e){t=t.toLowerCase();var r,i;if(Zn[t])r=Zn[t].key,i=Zn[t].iv;else if(_n[t])r=_n[t].key*8,i=_n[t].iv;else throw new TypeError("invalid suite type");var n=Rw(e,!1,r,i);return Tw(t,n.key,n.iv)}function MF(t,e){t=t.toLowerCase();var r,i;if(Zn[t])r=Zn[t].key,i=Zn[t].iv;else if(_n[t])r=_n[t].key*8,i=_n[t].iv;else throw new TypeError("invalid suite type");var n=Rw(e,!1,r,i);return Ow(t,n.key,n.iv)}function Tw(t,e,r){if(t=t.toLowerCase(),Zn[t])return W1.createCipheriv(t,e,r);if(_n[t])return new qw({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function Ow(t,e,r){if(t=t.toLowerCase(),Zn[t])return W1.createDecipheriv(t,e,r);if(_n[t])return new qw({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}function SF(){return Object.keys(_n).concat(W1.getCiphers())}Ei.createCipher=Ei.Cipher=EF;Ei.createCipheriv=Ei.Cipheriv=Tw;Ei.createDecipher=Ei.Decipher=MF;Ei.createDecipheriv=Ei.Decipheriv=Ow;Ei.listCiphers=Ei.getCiphers=SF});var Wu=P(()=>{g()});var sr=P((Pw,J1)=>{g();(function(t,e){"use strict";function r(k,d){if(!k)throw new Error(d||"Assertion failed")}function i(k,d){k.super_=d;var b=function(){};b.prototype=d.prototype,k.prototype=new b,k.prototype.constructor=k}function n(k,d,b){if(n.isBN(k))return k;this.negative=0,this.words=null,this.length=0,this.red=null,k!==null&&((d==="le"||d==="be")&&(b=d,d=10),this._init(k||0,d||10,b||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{a=Wu().Buffer}catch{}n.isBN=function(d){return d instanceof n?!0:d!==null&&typeof d=="object"&&d.constructor.wordSize===n.wordSize&&Array.isArray(d.words)},n.max=function(d,b){return d.cmp(b)>0?d:b},n.min=function(d,b){return d.cmp(b)<0?d:b},n.prototype._init=function(d,b,E){if(typeof d=="number")return this._initNumber(d,b,E);if(typeof d=="object")return this._initArray(d,b,E);b==="hex"&&(b=16),r(b===(b|0)&&b>=2&&b<=36),d=d.toString().replace(/\s+/g,"");var p=0;d[0]==="-"&&p++,b===16?this._parseHex(d,p):this._parseBase(d,b,p),d[0]==="-"&&(this.negative=1),this.strip(),E==="le"&&this._initArray(this.toArray(),b,E)},n.prototype._initNumber=function(d,b,E){d<0&&(this.negative=1,d=-d),d<67108864?(this.words=[d&67108863],this.length=1):d<4503599627370496?(this.words=[d&67108863,d/67108864&67108863],this.length=2):(r(d<9007199254740992),this.words=[d&67108863,d/67108864&67108863,1],this.length=3),E==="le"&&this._initArray(this.toArray(),b,E)},n.prototype._initArray=function(d,b,E){if(r(typeof d.length=="number"),d.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(d.length/3),this.words=new Array(this.length);for(var p=0;p=0;p-=3)s=d[p]|d[p-1]<<8|d[p-2]<<16,this.words[f]|=s<>>26-v&67108863,v+=24,v>=26&&(v-=26,f++);else if(E==="le")for(p=0,f=0;p>>26-v&67108863,v+=24,v>=26&&(v-=26,f++);return this.strip()};function o(k,d,b){for(var E=0,p=Math.min(k.length,b),f=d;f=49&&s<=54?E|=s-49+10:s>=17&&s<=22?E|=s-17+10:E|=s&15}return E}n.prototype._parseHex=function(d,b){this.length=Math.ceil((d.length-b)/6),this.words=new Array(this.length);for(var E=0;E=b;E-=6)f=o(d,E,E+6),this.words[p]|=f<>>26-s&4194303,s+=24,s>=26&&(s-=26,p++);E+6!==b&&(f=o(d,b,E+6),this.words[p]|=f<>>26-s&4194303),this.strip()};function c(k,d,b,E){for(var p=0,f=Math.min(k.length,b),s=d;s=49?p+=v-49+10:v>=17?p+=v-17+10:p+=v}return p}n.prototype._parseBase=function(d,b,E){this.words=[0],this.length=1;for(var p=0,f=1;f<=67108863;f*=b)p++;p--,f=f/b|0;for(var s=d.length-E,v=s%p,l=Math.min(s,s-v)+E,h=0,A=E;A1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var m=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],B=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(d,b){d=d||10,b=b|0||1;var E;if(d===16||d==="hex"){E="";for(var p=0,f=0,s=0;s>>24-p&16777215,f!==0||s!==this.length-1?E=m[6-l.length]+l+E:E=l+E,p+=2,p>=26&&(p-=26,s--)}for(f!==0&&(E=f.toString(16)+E);E.length%b!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}if(d===(d|0)&&d>=2&&d<=36){var h=M[d],A=B[d];E="";var q=this.clone();for(q.negative=0;!q.isZero();){var _=q.modn(A).toString(d);q=q.idivn(A),q.isZero()?E=_+E:E=m[h-_.length]+_+E}for(this.isZero()&&(E="0"+E);E.length%b!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var d=this.words[0];return this.length===2?d+=this.words[1]*67108864:this.length===3&&this.words[2]===1?d+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-d:d},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(d,b){return r(typeof a<"u"),this.toArrayLike(a,d,b)},n.prototype.toArray=function(d,b){return this.toArrayLike(Array,d,b)},n.prototype.toArrayLike=function(d,b,E){var p=this.byteLength(),f=E||Math.max(1,p);r(p<=f,"byte array longer than desired length"),r(f>0,"Requested array length <= 0"),this.strip();var s=b==="le",v=new d(f),l,h,A=this.clone();if(s){for(h=0;!A.isZero();h++)l=A.andln(255),A.iushrn(8),v[h]=l;for(;h=4096&&(E+=13,b>>>=13),b>=64&&(E+=7,b>>>=7),b>=8&&(E+=4,b>>>=4),b>=2&&(E+=2,b>>>=2),E+b},n.prototype._zeroBits=function(d){if(d===0)return 26;var b=d,E=0;return(b&8191)===0&&(E+=13,b>>>=13),(b&127)===0&&(E+=7,b>>>=7),(b&15)===0&&(E+=4,b>>>=4),(b&3)===0&&(E+=2,b>>>=2),(b&1)===0&&E++,E},n.prototype.bitLength=function(){var d=this.words[this.length-1],b=this._countBits(d);return(this.length-1)*26+b};function R(k){for(var d=new Array(k.bitLength()),b=0;b>>p}return d}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var d=0,b=0;bd.length?this.clone().ior(d):d.clone().ior(this)},n.prototype.uor=function(d){return this.length>d.length?this.clone().iuor(d):d.clone().iuor(this)},n.prototype.iuand=function(d){var b;this.length>d.length?b=d:b=this;for(var E=0;Ed.length?this.clone().iand(d):d.clone().iand(this)},n.prototype.uand=function(d){return this.length>d.length?this.clone().iuand(d):d.clone().iuand(this)},n.prototype.iuxor=function(d){var b,E;this.length>d.length?(b=this,E=d):(b=d,E=this);for(var p=0;pd.length?this.clone().ixor(d):d.clone().ixor(this)},n.prototype.uxor=function(d){return this.length>d.length?this.clone().iuxor(d):d.clone().iuxor(this)},n.prototype.inotn=function(d){r(typeof d=="number"&&d>=0);var b=Math.ceil(d/26)|0,E=d%26;this._expand(b),E>0&&b--;for(var p=0;p0&&(this.words[p]=~this.words[p]&67108863>>26-E),this.strip()},n.prototype.notn=function(d){return this.clone().inotn(d)},n.prototype.setn=function(d,b){r(typeof d=="number"&&d>=0);var E=d/26|0,p=d%26;return this._expand(E+1),b?this.words[E]=this.words[E]|1<d.length?(E=this,p=d):(E=d,p=this);for(var f=0,s=0;s>>26;for(;f!==0&&s>>26;if(this.length=E.length,f!==0)this.words[this.length]=f,this.length++;else if(E!==this)for(;sd.length?this.clone().iadd(d):d.clone().iadd(this)},n.prototype.isub=function(d){if(d.negative!==0){d.negative=0;var b=this.iadd(d);return d.negative=1,b._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(d),this.negative=1,this._normSign();var E=this.cmp(d);if(E===0)return this.negative=0,this.length=1,this.words[0]=0,this;var p,f;E>0?(p=this,f=d):(p=d,f=this);for(var s=0,v=0;v>26,this.words[v]=b&67108863;for(;s!==0&&v>26,this.words[v]=b&67108863;if(s===0&&v>>26,q=l&67108863,_=Math.min(h,d.length-1),u=Math.max(0,h-k.length+1);u<=_;u++){var I=h-u|0;p=k.words[I]|0,f=d.words[u]|0,s=p*f+q,A+=s/67108864|0,q=s&67108863}b.words[h]=q|0,l=A|0}return l!==0?b.words[h]=l|0:b.length--,b.strip()}var N=function(d,b,E){var p=d.words,f=b.words,s=E.words,v=0,l,h,A,q=p[0]|0,_=q&8191,u=q>>>13,I=p[1]|0,j=I&8191,S=I>>>13,L=p[2]|0,Q=L&8191,z=L>>>13,J=p[3]|0,he=J&8191,W=J>>>13,te=p[4]|0,Qe=te&8191,ne=te>>>13,ye=p[5]|0,Rt=ye&8191,Pe=ye>>>13,We=p[6]|0,It=We&8191,Ue=We>>>13,tt=p[7]|0,St=tt&8191,Re=tt>>>13,rt=p[8]|0,Et=rt&8191,Oe=rt>>>13,it=p[9]|0,Tt=it&8191,ke=it>>>13,nt=f[0]|0,Ct=nt&8191,Te=nt>>>13,Ze=f[1]|0,wt=Ze&8191,Be=Ze>>>13,et=f[2]|0,_t=et&8191,qe=et>>>13,ft=f[3]|0,Ot=ft&8191,Fe=ft>>>13,ut=f[4]|0,lt=ut&8191,Se=ut>>>13,Xe=f[5]|0,Bt=Xe&8191,De=Xe>>>13,at=f[6]|0,Ut=at&8191,_e=at>>>13,ot=f[7]|0,C=ot&8191,T=ot>>>13,O=f[8]|0,w=O&8191,D=O>>>13,H=f[9]|0,Y=H&8191,V=H>>>13;E.negative=d.negative^b.negative,E.length=19,l=Math.imul(_,Ct),h=Math.imul(_,Te),h=h+Math.imul(u,Ct)|0,A=Math.imul(u,Te);var ee=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ee>>>26)|0,ee&=67108863,l=Math.imul(j,Ct),h=Math.imul(j,Te),h=h+Math.imul(S,Ct)|0,A=Math.imul(S,Te),l=l+Math.imul(_,wt)|0,h=h+Math.imul(_,Be)|0,h=h+Math.imul(u,wt)|0,A=A+Math.imul(u,Be)|0;var Ee=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(Q,Ct),h=Math.imul(Q,Te),h=h+Math.imul(z,Ct)|0,A=Math.imul(z,Te),l=l+Math.imul(j,wt)|0,h=h+Math.imul(j,Be)|0,h=h+Math.imul(S,wt)|0,A=A+Math.imul(S,Be)|0,l=l+Math.imul(_,_t)|0,h=h+Math.imul(_,qe)|0,h=h+Math.imul(u,_t)|0,A=A+Math.imul(u,qe)|0;var ae=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(he,Ct),h=Math.imul(he,Te),h=h+Math.imul(W,Ct)|0,A=Math.imul(W,Te),l=l+Math.imul(Q,wt)|0,h=h+Math.imul(Q,Be)|0,h=h+Math.imul(z,wt)|0,A=A+Math.imul(z,Be)|0,l=l+Math.imul(j,_t)|0,h=h+Math.imul(j,qe)|0,h=h+Math.imul(S,_t)|0,A=A+Math.imul(S,qe)|0,l=l+Math.imul(_,Ot)|0,h=h+Math.imul(_,Fe)|0,h=h+Math.imul(u,Ot)|0,A=A+Math.imul(u,Fe)|0;var xe=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(xe>>>26)|0,xe&=67108863,l=Math.imul(Qe,Ct),h=Math.imul(Qe,Te),h=h+Math.imul(ne,Ct)|0,A=Math.imul(ne,Te),l=l+Math.imul(he,wt)|0,h=h+Math.imul(he,Be)|0,h=h+Math.imul(W,wt)|0,A=A+Math.imul(W,Be)|0,l=l+Math.imul(Q,_t)|0,h=h+Math.imul(Q,qe)|0,h=h+Math.imul(z,_t)|0,A=A+Math.imul(z,qe)|0,l=l+Math.imul(j,Ot)|0,h=h+Math.imul(j,Fe)|0,h=h+Math.imul(S,Ot)|0,A=A+Math.imul(S,Fe)|0,l=l+Math.imul(_,lt)|0,h=h+Math.imul(_,Se)|0,h=h+Math.imul(u,lt)|0,A=A+Math.imul(u,Se)|0;var we=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(we>>>26)|0,we&=67108863,l=Math.imul(Rt,Ct),h=Math.imul(Rt,Te),h=h+Math.imul(Pe,Ct)|0,A=Math.imul(Pe,Te),l=l+Math.imul(Qe,wt)|0,h=h+Math.imul(Qe,Be)|0,h=h+Math.imul(ne,wt)|0,A=A+Math.imul(ne,Be)|0,l=l+Math.imul(he,_t)|0,h=h+Math.imul(he,qe)|0,h=h+Math.imul(W,_t)|0,A=A+Math.imul(W,qe)|0,l=l+Math.imul(Q,Ot)|0,h=h+Math.imul(Q,Fe)|0,h=h+Math.imul(z,Ot)|0,A=A+Math.imul(z,Fe)|0,l=l+Math.imul(j,lt)|0,h=h+Math.imul(j,Se)|0,h=h+Math.imul(S,lt)|0,A=A+Math.imul(S,Se)|0,l=l+Math.imul(_,Bt)|0,h=h+Math.imul(_,De)|0,h=h+Math.imul(u,Bt)|0,A=A+Math.imul(u,De)|0;var je=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(je>>>26)|0,je&=67108863,l=Math.imul(It,Ct),h=Math.imul(It,Te),h=h+Math.imul(Ue,Ct)|0,A=Math.imul(Ue,Te),l=l+Math.imul(Rt,wt)|0,h=h+Math.imul(Rt,Be)|0,h=h+Math.imul(Pe,wt)|0,A=A+Math.imul(Pe,Be)|0,l=l+Math.imul(Qe,_t)|0,h=h+Math.imul(Qe,qe)|0,h=h+Math.imul(ne,_t)|0,A=A+Math.imul(ne,qe)|0,l=l+Math.imul(he,Ot)|0,h=h+Math.imul(he,Fe)|0,h=h+Math.imul(W,Ot)|0,A=A+Math.imul(W,Fe)|0,l=l+Math.imul(Q,lt)|0,h=h+Math.imul(Q,Se)|0,h=h+Math.imul(z,lt)|0,A=A+Math.imul(z,Se)|0,l=l+Math.imul(j,Bt)|0,h=h+Math.imul(j,De)|0,h=h+Math.imul(S,Bt)|0,A=A+Math.imul(S,De)|0,l=l+Math.imul(_,Ut)|0,h=h+Math.imul(_,_e)|0,h=h+Math.imul(u,Ut)|0,A=A+Math.imul(u,_e)|0;var ze=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ze>>>26)|0,ze&=67108863,l=Math.imul(St,Ct),h=Math.imul(St,Te),h=h+Math.imul(Re,Ct)|0,A=Math.imul(Re,Te),l=l+Math.imul(It,wt)|0,h=h+Math.imul(It,Be)|0,h=h+Math.imul(Ue,wt)|0,A=A+Math.imul(Ue,Be)|0,l=l+Math.imul(Rt,_t)|0,h=h+Math.imul(Rt,qe)|0,h=h+Math.imul(Pe,_t)|0,A=A+Math.imul(Pe,qe)|0,l=l+Math.imul(Qe,Ot)|0,h=h+Math.imul(Qe,Fe)|0,h=h+Math.imul(ne,Ot)|0,A=A+Math.imul(ne,Fe)|0,l=l+Math.imul(he,lt)|0,h=h+Math.imul(he,Se)|0,h=h+Math.imul(W,lt)|0,A=A+Math.imul(W,Se)|0,l=l+Math.imul(Q,Bt)|0,h=h+Math.imul(Q,De)|0,h=h+Math.imul(z,Bt)|0,A=A+Math.imul(z,De)|0,l=l+Math.imul(j,Ut)|0,h=h+Math.imul(j,_e)|0,h=h+Math.imul(S,Ut)|0,A=A+Math.imul(S,_e)|0,l=l+Math.imul(_,C)|0,h=h+Math.imul(_,T)|0,h=h+Math.imul(u,C)|0,A=A+Math.imul(u,T)|0;var Ye=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,l=Math.imul(Et,Ct),h=Math.imul(Et,Te),h=h+Math.imul(Oe,Ct)|0,A=Math.imul(Oe,Te),l=l+Math.imul(St,wt)|0,h=h+Math.imul(St,Be)|0,h=h+Math.imul(Re,wt)|0,A=A+Math.imul(Re,Be)|0,l=l+Math.imul(It,_t)|0,h=h+Math.imul(It,qe)|0,h=h+Math.imul(Ue,_t)|0,A=A+Math.imul(Ue,qe)|0,l=l+Math.imul(Rt,Ot)|0,h=h+Math.imul(Rt,Fe)|0,h=h+Math.imul(Pe,Ot)|0,A=A+Math.imul(Pe,Fe)|0,l=l+Math.imul(Qe,lt)|0,h=h+Math.imul(Qe,Se)|0,h=h+Math.imul(ne,lt)|0,A=A+Math.imul(ne,Se)|0,l=l+Math.imul(he,Bt)|0,h=h+Math.imul(he,De)|0,h=h+Math.imul(W,Bt)|0,A=A+Math.imul(W,De)|0,l=l+Math.imul(Q,Ut)|0,h=h+Math.imul(Q,_e)|0,h=h+Math.imul(z,Ut)|0,A=A+Math.imul(z,_e)|0,l=l+Math.imul(j,C)|0,h=h+Math.imul(j,T)|0,h=h+Math.imul(S,C)|0,A=A+Math.imul(S,T)|0,l=l+Math.imul(_,w)|0,h=h+Math.imul(_,D)|0,h=h+Math.imul(u,w)|0,A=A+Math.imul(u,D)|0;var Ge=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,l=Math.imul(Tt,Ct),h=Math.imul(Tt,Te),h=h+Math.imul(ke,Ct)|0,A=Math.imul(ke,Te),l=l+Math.imul(Et,wt)|0,h=h+Math.imul(Et,Be)|0,h=h+Math.imul(Oe,wt)|0,A=A+Math.imul(Oe,Be)|0,l=l+Math.imul(St,_t)|0,h=h+Math.imul(St,qe)|0,h=h+Math.imul(Re,_t)|0,A=A+Math.imul(Re,qe)|0,l=l+Math.imul(It,Ot)|0,h=h+Math.imul(It,Fe)|0,h=h+Math.imul(Ue,Ot)|0,A=A+Math.imul(Ue,Fe)|0,l=l+Math.imul(Rt,lt)|0,h=h+Math.imul(Rt,Se)|0,h=h+Math.imul(Pe,lt)|0,A=A+Math.imul(Pe,Se)|0,l=l+Math.imul(Qe,Bt)|0,h=h+Math.imul(Qe,De)|0,h=h+Math.imul(ne,Bt)|0,A=A+Math.imul(ne,De)|0,l=l+Math.imul(he,Ut)|0,h=h+Math.imul(he,_e)|0,h=h+Math.imul(W,Ut)|0,A=A+Math.imul(W,_e)|0,l=l+Math.imul(Q,C)|0,h=h+Math.imul(Q,T)|0,h=h+Math.imul(z,C)|0,A=A+Math.imul(z,T)|0,l=l+Math.imul(j,w)|0,h=h+Math.imul(j,D)|0,h=h+Math.imul(S,w)|0,A=A+Math.imul(S,D)|0,l=l+Math.imul(_,Y)|0,h=h+Math.imul(_,V)|0,h=h+Math.imul(u,Y)|0,A=A+Math.imul(u,V)|0;var Ve=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,l=Math.imul(Tt,wt),h=Math.imul(Tt,Be),h=h+Math.imul(ke,wt)|0,A=Math.imul(ke,Be),l=l+Math.imul(Et,_t)|0,h=h+Math.imul(Et,qe)|0,h=h+Math.imul(Oe,_t)|0,A=A+Math.imul(Oe,qe)|0,l=l+Math.imul(St,Ot)|0,h=h+Math.imul(St,Fe)|0,h=h+Math.imul(Re,Ot)|0,A=A+Math.imul(Re,Fe)|0,l=l+Math.imul(It,lt)|0,h=h+Math.imul(It,Se)|0,h=h+Math.imul(Ue,lt)|0,A=A+Math.imul(Ue,Se)|0,l=l+Math.imul(Rt,Bt)|0,h=h+Math.imul(Rt,De)|0,h=h+Math.imul(Pe,Bt)|0,A=A+Math.imul(Pe,De)|0,l=l+Math.imul(Qe,Ut)|0,h=h+Math.imul(Qe,_e)|0,h=h+Math.imul(ne,Ut)|0,A=A+Math.imul(ne,_e)|0,l=l+Math.imul(he,C)|0,h=h+Math.imul(he,T)|0,h=h+Math.imul(W,C)|0,A=A+Math.imul(W,T)|0,l=l+Math.imul(Q,w)|0,h=h+Math.imul(Q,D)|0,h=h+Math.imul(z,w)|0,A=A+Math.imul(z,D)|0,l=l+Math.imul(j,Y)|0,h=h+Math.imul(j,V)|0,h=h+Math.imul(S,Y)|0,A=A+Math.imul(S,V)|0;var Je=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Je>>>26)|0,Je&=67108863,l=Math.imul(Tt,_t),h=Math.imul(Tt,qe),h=h+Math.imul(ke,_t)|0,A=Math.imul(ke,qe),l=l+Math.imul(Et,Ot)|0,h=h+Math.imul(Et,Fe)|0,h=h+Math.imul(Oe,Ot)|0,A=A+Math.imul(Oe,Fe)|0,l=l+Math.imul(St,lt)|0,h=h+Math.imul(St,Se)|0,h=h+Math.imul(Re,lt)|0,A=A+Math.imul(Re,Se)|0,l=l+Math.imul(It,Bt)|0,h=h+Math.imul(It,De)|0,h=h+Math.imul(Ue,Bt)|0,A=A+Math.imul(Ue,De)|0,l=l+Math.imul(Rt,Ut)|0,h=h+Math.imul(Rt,_e)|0,h=h+Math.imul(Pe,Ut)|0,A=A+Math.imul(Pe,_e)|0,l=l+Math.imul(Qe,C)|0,h=h+Math.imul(Qe,T)|0,h=h+Math.imul(ne,C)|0,A=A+Math.imul(ne,T)|0,l=l+Math.imul(he,w)|0,h=h+Math.imul(he,D)|0,h=h+Math.imul(W,w)|0,A=A+Math.imul(W,D)|0,l=l+Math.imul(Q,Y)|0,h=h+Math.imul(Q,V)|0,h=h+Math.imul(z,Y)|0,A=A+Math.imul(z,V)|0;var $e=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+($e>>>26)|0,$e&=67108863,l=Math.imul(Tt,Ot),h=Math.imul(Tt,Fe),h=h+Math.imul(ke,Ot)|0,A=Math.imul(ke,Fe),l=l+Math.imul(Et,lt)|0,h=h+Math.imul(Et,Se)|0,h=h+Math.imul(Oe,lt)|0,A=A+Math.imul(Oe,Se)|0,l=l+Math.imul(St,Bt)|0,h=h+Math.imul(St,De)|0,h=h+Math.imul(Re,Bt)|0,A=A+Math.imul(Re,De)|0,l=l+Math.imul(It,Ut)|0,h=h+Math.imul(It,_e)|0,h=h+Math.imul(Ue,Ut)|0,A=A+Math.imul(Ue,_e)|0,l=l+Math.imul(Rt,C)|0,h=h+Math.imul(Rt,T)|0,h=h+Math.imul(Pe,C)|0,A=A+Math.imul(Pe,T)|0,l=l+Math.imul(Qe,w)|0,h=h+Math.imul(Qe,D)|0,h=h+Math.imul(ne,w)|0,A=A+Math.imul(ne,D)|0,l=l+Math.imul(he,Y)|0,h=h+Math.imul(he,V)|0,h=h+Math.imul(W,Y)|0,A=A+Math.imul(W,V)|0;var Ie=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul(Tt,lt),h=Math.imul(Tt,Se),h=h+Math.imul(ke,lt)|0,A=Math.imul(ke,Se),l=l+Math.imul(Et,Bt)|0,h=h+Math.imul(Et,De)|0,h=h+Math.imul(Oe,Bt)|0,A=A+Math.imul(Oe,De)|0,l=l+Math.imul(St,Ut)|0,h=h+Math.imul(St,_e)|0,h=h+Math.imul(Re,Ut)|0,A=A+Math.imul(Re,_e)|0,l=l+Math.imul(It,C)|0,h=h+Math.imul(It,T)|0,h=h+Math.imul(Ue,C)|0,A=A+Math.imul(Ue,T)|0,l=l+Math.imul(Rt,w)|0,h=h+Math.imul(Rt,D)|0,h=h+Math.imul(Pe,w)|0,A=A+Math.imul(Pe,D)|0,l=l+Math.imul(Qe,Y)|0,h=h+Math.imul(Qe,V)|0,h=h+Math.imul(ne,Y)|0,A=A+Math.imul(ne,V)|0;var Le=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Le>>>26)|0,Le&=67108863,l=Math.imul(Tt,Bt),h=Math.imul(Tt,De),h=h+Math.imul(ke,Bt)|0,A=Math.imul(ke,De),l=l+Math.imul(Et,Ut)|0,h=h+Math.imul(Et,_e)|0,h=h+Math.imul(Oe,Ut)|0,A=A+Math.imul(Oe,_e)|0,l=l+Math.imul(St,C)|0,h=h+Math.imul(St,T)|0,h=h+Math.imul(Re,C)|0,A=A+Math.imul(Re,T)|0,l=l+Math.imul(It,w)|0,h=h+Math.imul(It,D)|0,h=h+Math.imul(Ue,w)|0,A=A+Math.imul(Ue,D)|0,l=l+Math.imul(Rt,Y)|0,h=h+Math.imul(Rt,V)|0,h=h+Math.imul(Pe,Y)|0,A=A+Math.imul(Pe,V)|0;var Ae=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,l=Math.imul(Tt,Ut),h=Math.imul(Tt,_e),h=h+Math.imul(ke,Ut)|0,A=Math.imul(ke,_e),l=l+Math.imul(Et,C)|0,h=h+Math.imul(Et,T)|0,h=h+Math.imul(Oe,C)|0,A=A+Math.imul(Oe,T)|0,l=l+Math.imul(St,w)|0,h=h+Math.imul(St,D)|0,h=h+Math.imul(Re,w)|0,A=A+Math.imul(Re,D)|0,l=l+Math.imul(It,Y)|0,h=h+Math.imul(It,V)|0,h=h+Math.imul(Ue,Y)|0,A=A+Math.imul(Ue,V)|0;var Me=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(Tt,C),h=Math.imul(Tt,T),h=h+Math.imul(ke,C)|0,A=Math.imul(ke,T),l=l+Math.imul(Et,w)|0,h=h+Math.imul(Et,D)|0,h=h+Math.imul(Oe,w)|0,A=A+Math.imul(Oe,D)|0,l=l+Math.imul(St,Y)|0,h=h+Math.imul(St,V)|0,h=h+Math.imul(Re,Y)|0,A=A+Math.imul(Re,V)|0;var Ce=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,l=Math.imul(Tt,w),h=Math.imul(Tt,D),h=h+Math.imul(ke,w)|0,A=Math.imul(ke,D),l=l+Math.imul(Et,Y)|0,h=h+Math.imul(Et,V)|0,h=h+Math.imul(Oe,Y)|0,A=A+Math.imul(Oe,V)|0;var me=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(me>>>26)|0,me&=67108863,l=Math.imul(Tt,Y),h=Math.imul(Tt,V),h=h+Math.imul(ke,Y)|0,A=Math.imul(ke,V);var $=(v+l|0)+((h&8191)<<13)|0;return v=(A+(h>>>13)|0)+($>>>26)|0,$&=67108863,s[0]=ee,s[1]=Ee,s[2]=ae,s[3]=xe,s[4]=we,s[5]=je,s[6]=ze,s[7]=Ye,s[8]=Ge,s[9]=Ve,s[10]=Je,s[11]=$e,s[12]=Ie,s[13]=Le,s[14]=Ae,s[15]=Me,s[16]=Ce,s[17]=me,s[18]=$,v!==0&&(s[19]=v,E.length++),E};Math.imul||(N=F);function G(k,d,b){b.negative=d.negative^k.negative,b.length=k.length+d.length;for(var E=0,p=0,f=0;f>>26)|0,p+=s>>>26,s&=67108863}b.words[f]=v,E=s,s=p}return E!==0?b.words[f]=E:b.length--,b.strip()}function Z(k,d,b){var E=new ie;return E.mulp(k,d,b)}n.prototype.mulTo=function(d,b){var E,p=this.length+d.length;return this.length===10&&d.length===10?E=N(this,d,b):p<63?E=F(this,d,b):p<1024?E=G(this,d,b):E=Z(this,d,b),E};function ie(k,d){this.x=k,this.y=d}ie.prototype.makeRBT=function(d){for(var b=new Array(d),E=n.prototype._countBits(d)-1,p=0;p>=1;return p},ie.prototype.permute=function(d,b,E,p,f,s){for(var v=0;v>>1)f++;return 1<>>13,E[2*s+1]=f&8191,f=f>>>13;for(s=2*b;s>=26,b+=p/67108864|0,b+=f>>>26,this.words[E]=f&67108863}return b!==0&&(this.words[E]=b,this.length++),this},n.prototype.muln=function(d){return this.clone().imuln(d)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(d){var b=R(d);if(b.length===0)return new n(1);for(var E=this,p=0;p=0);var b=d%26,E=(d-b)/26,p=67108863>>>26-b<<26-b,f;if(b!==0){var s=0;for(f=0;f>>26-b}s&&(this.words[f]=s,this.length++)}if(E!==0){for(f=this.length-1;f>=0;f--)this.words[f+E]=this.words[f];for(f=0;f=0);var p;b?p=(b-b%26)/26:p=0;var f=d%26,s=Math.min((d-f)/26,this.length),v=67108863^67108863>>>f<s)for(this.length-=s,h=0;h=0&&(A!==0||h>=p);h--){var q=this.words[h]|0;this.words[h]=A<<26-f|q>>>f,A=q&v}return l&&A!==0&&(l.words[l.length++]=A),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(d,b,E){return r(this.negative===0),this.iushrn(d,b,E)},n.prototype.shln=function(d){return this.clone().ishln(d)},n.prototype.ushln=function(d){return this.clone().iushln(d)},n.prototype.shrn=function(d){return this.clone().ishrn(d)},n.prototype.ushrn=function(d){return this.clone().iushrn(d)},n.prototype.testn=function(d){r(typeof d=="number"&&d>=0);var b=d%26,E=(d-b)/26,p=1<=0);var b=d%26,E=(d-b)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=E)return this;if(b!==0&&E++,this.length=Math.min(E,this.length),b!==0){var p=67108863^67108863>>>b<=67108864;b++)this.words[b]-=67108864,b===this.length-1?this.words[b+1]=1:this.words[b+1]++;return this.length=Math.max(this.length,b+1),this},n.prototype.isubn=function(d){if(r(typeof d=="number"),r(d<67108864),d<0)return this.iaddn(-d);if(this.negative!==0)return this.negative=0,this.iaddn(d),this.negative=1,this;if(this.words[0]-=d,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var b=0;b>26)-(l/67108864|0),this.words[f+E]=s&67108863}for(;f>26,this.words[f+E]=s&67108863;if(v===0)return this.strip();for(r(v===-1),v=0,f=0;f>26,this.words[f]=s&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(d,b){var E=this.length-d.length,p=this.clone(),f=d,s=f.words[f.length-1]|0,v=this._countBits(s);E=26-v,E!==0&&(f=f.ushln(E),p.iushln(E),s=f.words[f.length-1]|0);var l=p.length-f.length,h;if(b!=="mod"){h=new n(null),h.length=l+1,h.words=new Array(h.length);for(var A=0;A=0;_--){var u=(p.words[f.length+_]|0)*67108864+(p.words[f.length+_-1]|0);for(u=Math.min(u/s|0,67108863),p._ishlnsubmul(f,u,_);p.negative!==0;)u--,p.negative=0,p._ishlnsubmul(f,1,_),p.isZero()||(p.negative^=1);h&&(h.words[_]=u)}return h&&h.strip(),p.strip(),b!=="div"&&E!==0&&p.iushrn(E),{div:h||null,mod:p}},n.prototype.divmod=function(d,b,E){if(r(!d.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var p,f,s;return this.negative!==0&&d.negative===0?(s=this.neg().divmod(d,b),b!=="mod"&&(p=s.div.neg()),b!=="div"&&(f=s.mod.neg(),E&&f.negative!==0&&f.iadd(d)),{div:p,mod:f}):this.negative===0&&d.negative!==0?(s=this.divmod(d.neg(),b),b!=="mod"&&(p=s.div.neg()),{div:p,mod:s.mod}):(this.negative&d.negative)!==0?(s=this.neg().divmod(d.neg(),b),b!=="div"&&(f=s.mod.neg(),E&&f.negative!==0&&f.isub(d)),{div:s.div,mod:f}):d.length>this.length||this.cmp(d)<0?{div:new n(0),mod:this}:d.length===1?b==="div"?{div:this.divn(d.words[0]),mod:null}:b==="mod"?{div:null,mod:new n(this.modn(d.words[0]))}:{div:this.divn(d.words[0]),mod:new n(this.modn(d.words[0]))}:this._wordDiv(d,b)},n.prototype.div=function(d){return this.divmod(d,"div",!1).div},n.prototype.mod=function(d){return this.divmod(d,"mod",!1).mod},n.prototype.umod=function(d){return this.divmod(d,"mod",!0).mod},n.prototype.divRound=function(d){var b=this.divmod(d);if(b.mod.isZero())return b.div;var E=b.div.negative!==0?b.mod.isub(d):b.mod,p=d.ushrn(1),f=d.andln(1),s=E.cmp(p);return s<0||f===1&&s===0?b.div:b.div.negative!==0?b.div.isubn(1):b.div.iaddn(1)},n.prototype.modn=function(d){r(d<=67108863);for(var b=(1<<26)%d,E=0,p=this.length-1;p>=0;p--)E=(b*E+(this.words[p]|0))%d;return E},n.prototype.idivn=function(d){r(d<=67108863);for(var b=0,E=this.length-1;E>=0;E--){var p=(this.words[E]|0)+b*67108864;this.words[E]=p/d|0,b=p%d}return this.strip()},n.prototype.divn=function(d){return this.clone().idivn(d)},n.prototype.egcd=function(d){r(d.negative===0),r(!d.isZero());var b=this,E=d.clone();b.negative!==0?b=b.umod(d):b=b.clone();for(var p=new n(1),f=new n(0),s=new n(0),v=new n(1),l=0;b.isEven()&&E.isEven();)b.iushrn(1),E.iushrn(1),++l;for(var h=E.clone(),A=b.clone();!b.isZero();){for(var q=0,_=1;(b.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(b.iushrn(q);q-- >0;)(p.isOdd()||f.isOdd())&&(p.iadd(h),f.isub(A)),p.iushrn(1),f.iushrn(1);for(var u=0,I=1;(E.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(E.iushrn(u);u-- >0;)(s.isOdd()||v.isOdd())&&(s.iadd(h),v.isub(A)),s.iushrn(1),v.iushrn(1);b.cmp(E)>=0?(b.isub(E),p.isub(s),f.isub(v)):(E.isub(b),s.isub(p),v.isub(f))}return{a:s,b:v,gcd:E.iushln(l)}},n.prototype._invmp=function(d){r(d.negative===0),r(!d.isZero());var b=this,E=d.clone();b.negative!==0?b=b.umod(d):b=b.clone();for(var p=new n(1),f=new n(0),s=E.clone();b.cmpn(1)>0&&E.cmpn(1)>0;){for(var v=0,l=1;(b.words[0]&l)===0&&v<26;++v,l<<=1);if(v>0)for(b.iushrn(v);v-- >0;)p.isOdd()&&p.iadd(s),p.iushrn(1);for(var h=0,A=1;(E.words[0]&A)===0&&h<26;++h,A<<=1);if(h>0)for(E.iushrn(h);h-- >0;)f.isOdd()&&f.iadd(s),f.iushrn(1);b.cmp(E)>=0?(b.isub(E),p.isub(f)):(E.isub(b),f.isub(p))}var q;return b.cmpn(1)===0?q=p:q=f,q.cmpn(0)<0&&q.iadd(d),q},n.prototype.gcd=function(d){if(this.isZero())return d.abs();if(d.isZero())return this.abs();var b=this.clone(),E=d.clone();b.negative=0,E.negative=0;for(var p=0;b.isEven()&&E.isEven();p++)b.iushrn(1),E.iushrn(1);do{for(;b.isEven();)b.iushrn(1);for(;E.isEven();)E.iushrn(1);var f=b.cmp(E);if(f<0){var s=b;b=E,E=s}else if(f===0||E.cmpn(1)===0)break;b.isub(E)}while(!0);return E.iushln(p)},n.prototype.invm=function(d){return this.egcd(d).a.umod(d)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(d){return this.words[0]&d},n.prototype.bincn=function(d){r(typeof d=="number");var b=d%26,E=(d-b)/26,p=1<>>26,v&=67108863,this.words[s]=v}return f!==0&&(this.words[s]=f,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(d){var b=d<0;if(this.negative!==0&&!b)return-1;if(this.negative===0&&b)return 1;this.strip();var E;if(this.length>1)E=1;else{b&&(d=-d),r(d<=67108863,"Number is too big");var p=this.words[0]|0;E=p===d?0:pd.length)return 1;if(this.length=0;E--){var p=this.words[E]|0,f=d.words[E]|0;if(p!==f){pf&&(b=1);break}}return b},n.prototype.gtn=function(d){return this.cmpn(d)===1},n.prototype.gt=function(d){return this.cmp(d)===1},n.prototype.gten=function(d){return this.cmpn(d)>=0},n.prototype.gte=function(d){return this.cmp(d)>=0},n.prototype.ltn=function(d){return this.cmpn(d)===-1},n.prototype.lt=function(d){return this.cmp(d)===-1},n.prototype.lten=function(d){return this.cmpn(d)<=0},n.prototype.lte=function(d){return this.cmp(d)<=0},n.prototype.eqn=function(d){return this.cmpn(d)===0},n.prototype.eq=function(d){return this.cmp(d)===0},n.red=function(d){return new pe(d)},n.prototype.toRed=function(d){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),d.convertTo(this)._forceRed(d)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(d){return this.red=d,this},n.prototype.forceRed=function(d){return r(!this.red,"Already a number in reduction context"),this._forceRed(d)},n.prototype.redAdd=function(d){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,d)},n.prototype.redIAdd=function(d){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,d)},n.prototype.redSub=function(d){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,d)},n.prototype.redISub=function(d){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,d)},n.prototype.redShl=function(d){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,d)},n.prototype.redMul=function(d){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,d),this.red.mul(this,d)},n.prototype.redIMul=function(d){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,d),this.red.imul(this,d)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(d){return r(this.red&&!d.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,d)};var fe={k256:null,p224:null,p192:null,p25519:null};function ce(k,d){this.name=k,this.p=new n(d,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ce.prototype._tmp=function(){var d=new n(null);return d.words=new Array(Math.ceil(this.n/13)),d},ce.prototype.ireduce=function(d){var b=d,E;do this.split(b,this.tmp),b=this.imulK(b),b=b.iadd(this.tmp),E=b.bitLength();while(E>this.n);var p=E0?b.isub(this.p):b.strip!==void 0?b.strip():b._strip(),b},ce.prototype.split=function(d,b){d.iushrn(this.n,0,b)},ce.prototype.imulK=function(d){return d.imul(this.k)};function ge(){ce.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(ge,ce),ge.prototype.split=function(d,b){for(var E=4194303,p=Math.min(d.length,9),f=0;f>>22,s=v}s>>>=22,d.words[f-10]=s,s===0&&d.length>10?d.length-=10:d.length-=9},ge.prototype.imulK=function(d){d.words[d.length]=0,d.words[d.length+1]=0,d.length+=2;for(var b=0,E=0;E>>=26,d.words[E]=f,b=p}return b!==0&&(d.words[d.length++]=b),d},n._prime=function(d){if(fe[d])return fe[d];var b;if(d==="k256")b=new ge;else if(d==="p224")b=new ve;else if(d==="p192")b=new Ke;else if(d==="p25519")b=new be;else throw new Error("Unknown prime "+d);return fe[d]=b,b};function pe(k){if(typeof k=="string"){var d=n._prime(k);this.m=d.p,this.prime=d}else r(k.gtn(1),"modulus must be greater than 1"),this.m=k,this.prime=null}pe.prototype._verify1=function(d){r(d.negative===0,"red works only with positives"),r(d.red,"red works only with red numbers")},pe.prototype._verify2=function(d,b){r((d.negative|b.negative)===0,"red works only with positives"),r(d.red&&d.red===b.red,"red works only with red numbers")},pe.prototype.imod=function(d){return this.prime?this.prime.ireduce(d)._forceRed(this):d.umod(this.m)._forceRed(this)},pe.prototype.neg=function(d){return d.isZero()?d.clone():this.m.sub(d)._forceRed(this)},pe.prototype.add=function(d,b){this._verify2(d,b);var E=d.add(b);return E.cmp(this.m)>=0&&E.isub(this.m),E._forceRed(this)},pe.prototype.iadd=function(d,b){this._verify2(d,b);var E=d.iadd(b);return E.cmp(this.m)>=0&&E.isub(this.m),E},pe.prototype.sub=function(d,b){this._verify2(d,b);var E=d.sub(b);return E.cmpn(0)<0&&E.iadd(this.m),E._forceRed(this)},pe.prototype.isub=function(d,b){this._verify2(d,b);var E=d.isub(b);return E.cmpn(0)<0&&E.iadd(this.m),E},pe.prototype.shl=function(d,b){return this._verify1(d),this.imod(d.ushln(b))},pe.prototype.imul=function(d,b){return this._verify2(d,b),this.imod(d.imul(b))},pe.prototype.mul=function(d,b){return this._verify2(d,b),this.imod(d.mul(b))},pe.prototype.isqr=function(d){return this.imul(d,d.clone())},pe.prototype.sqr=function(d){return this.mul(d,d)},pe.prototype.sqrt=function(d){if(d.isZero())return d.clone();var b=this.m.andln(3);if(r(b%2===1),b===3){var E=this.m.add(new n(1)).iushrn(2);return this.pow(d,E)}for(var p=this.m.subn(1),f=0;!p.isZero()&&p.andln(1)===0;)f++,p.iushrn(1);r(!p.isZero());var s=new n(1).toRed(this),v=s.redNeg(),l=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new n(2*h*h).toRed(this);this.pow(h,l).cmp(v)!==0;)h.redIAdd(v);for(var A=this.pow(h,p),q=this.pow(d,p.addn(1).iushrn(1)),_=this.pow(d,p),u=f;_.cmp(s)!==0;){for(var I=_,j=0;I.cmp(s)!==0;j++)I=I.redSqr();r(j=0;f--){for(var A=b.words[f],q=h-1;q>=0;q--){var _=A>>q&1;if(s!==p[0]&&(s=this.sqr(s)),_===0&&v===0){l=0;continue}v<<=1,v|=_,l++,!(l!==E&&(f!==0||q!==0))&&(s=this.mul(s,p[v]),l=0,v=0)}h=26}return s},pe.prototype.convertTo=function(d){var b=d.umod(this.m);return b===d?b.clone():b},pe.prototype.convertFrom=function(d){var b=d.clone();return b.red=null,b},n.mont=function(d){return new Ne(d)};function Ne(k){pe.call(this,k),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(Ne,pe),Ne.prototype.convertTo=function(d){return this.imod(d.ushln(this.shift))},Ne.prototype.convertFrom=function(d){var b=this.imod(d.mul(this.rinv));return b.red=null,b},Ne.prototype.imul=function(d,b){if(d.isZero()||b.isZero())return d.words[0]=0,d.length=1,d;var E=d.imul(b),p=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),f=E.isub(p).iushrn(this.shift),s=f;return f.cmp(this.m)>=0?s=f.isub(this.m):f.cmpn(0)<0&&(s=f.iadd(this.m)),s._forceRed(this)},Ne.prototype.mul=function(d,b){if(d.isZero()||b.isZero())return new n(0)._forceRed(this);var E=d.mul(b),p=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),f=E.isub(p).iushrn(this.shift),s=f;return f.cmp(this.m)>=0?s=f.isub(this.m):f.cmpn(0)<0&&(s=f.iadd(this.m)),s._forceRed(this)},Ne.prototype.invm=function(d){var b=this.imod(d._invmp(this.m).mul(this.r2));return b._forceRed(this)}})(typeof J1>"u"||J1,Pw)});var X1=P(()=>{g()});var Ju=P((Qee,tp)=>{g();var Z1;tp.exports=function(e){return Z1||(Z1=new ef(null)),Z1.generate(e)};function ef(t){this.rand=t}tp.exports.Rand=ef;ef.prototype.generate=function(e){return this._rand(e)};ef.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),i=0;i{g();var Hf=sr(),CF=Ju();function zf(t){this.rand=t||new CF.Rand}Uw.exports=zf;zf.create=function(e){return new zf(e)};zf.prototype._randbelow=function(e){var r=e.bitLength(),i=Math.ceil(r/8);do var n=new Hf(this.rand.generate(i));while(n.cmp(e)>=0);return n};zf.prototype._randrange=function(e,r){var i=r.sub(e);return e.add(this._randbelow(i))};zf.prototype.test=function(e,r,i){var n=e.bitLength(),a=Hf.mont(e),o=new Hf(1).toRed(a);r||(r=Math.max(1,n/48|0));for(var c=e.subn(1),m=0;!c.testn(m);m++);for(var M=e.shrn(m),B=c.toRed(a),R=!0;r>0;r--){var F=this._randrange(new Hf(2),c);i&&i(F);var N=F.toRed(a).redPow(M);if(!(N.cmp(o)===0||N.cmp(B)===0)){for(var G=1;G0;r--){var B=this._randrange(new Hf(2),o),R=e.gcd(B);if(R.cmpn(1)!==0)return R;var F=B.toRed(n).redPow(m);if(!(F.cmp(a)===0||F.cmp(M)===0)){for(var N=1;N{g();var BF=qf();Lw.exports=op;op.simpleSieve=fp;op.fermatTest=ap;var br=sr(),qF=new br(24),RF=rp(),kw=new RF,TF=new br(1),np=new br(2),OF=new br(5),zee=new br(16),Gee=new br(8),DF=new br(10),PF=new br(3),Yee=new br(7),UF=new br(11),Fw=new br(4),Vee=new br(12),ip=null;function kF(){if(ip!==null)return ip;var t=1048576,e=[];e[0]=2;for(var r=1,i=3;it;)r.ishrn(1);if(r.isEven()&&r.iadd(TF),r.testn(1)||r.iadd(np),e.cmp(np)){if(!e.cmp(OF))for(;r.mod(DF).cmp(PF);)r.iadd(Fw)}else for(;r.mod(qF).cmp(UF);)r.iadd(Fw);if(i=r.shrn(1),fp(i)&&fp(r)&&ap(i)&&ap(r)&&kw.test(i)&&kw.test(r))return r}}});var Nw=P((Jee,FF)=>{FF.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}});var Hw=P((Xee,jw)=>{g();var oi=sr(),LF=rp(),Qw=new LF,NF=new oi(24),QF=new oi(11),KF=new oi(10),jF=new oi(3),HF=new oi(7),Kw=sp(),zF=qf();jw.exports=In;function GF(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this._pub=new oi(t),this}function YF(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this._priv=new oi(t),this}var Xu={};function VF(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in Xu)return Xu[i];var n=0;if(t.isEven()||!Kw.simpleSieve||!Kw.fermatTest(t)||!Qw.test(t))return n+=1,r==="02"||r==="05"?n+=8:n+=4,Xu[i]=n,n;Qw.test(t.shrn(1))||(n+=2);var a;switch(r){case"02":t.mod(NF).cmp(QF)&&(n+=8);break;case"05":a=t.mod(KF),a.cmp(jF)&&a.cmp(HF)&&(n+=8);break;default:n+=4}return Xu[i]=n,n}function In(t,e,r){this.setGenerator(e),this.__prime=new oi(t),this._prime=oi.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=GF,this.setPrivateKey=YF):this._primeCode=8}Object.defineProperty(In.prototype,"verifyError",{enumerable:!0,get:function(){return typeof this._primeCode!="number"&&(this._primeCode=VF(this.__prime,this.__gen)),this._primeCode}});In.prototype.generateKeys=function(){return this._priv||(this._priv=new oi(zF(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()};In.prototype.computeSecret=function(t){t=new oi(t),t=t.toRed(this._prime);var e=t.redPow(this._priv).fromRed(),r=new U(e.toArray()),i=this.getPrime();if(r.length{g();var $F=sp(),zw=Nw(),up=Hw();function WF(t){var e=new U(zw[t].prime,"hex"),r=new U(zw[t].gen,"hex");return new up(e,r)}var JF={binary:!0,hex:!0,base64:!0};function Gw(t,e,r,i){return U.isBuffer(e)||JF[e]===void 0?Gw(t,"binary",e,r):(e=e||"binary",i=i||"binary",r=r||new U([2]),U.isBuffer(r)||(r=new U(r,i)),typeof t=="number"?new up($F(t,r),r,!0):(U.isBuffer(t)||(t=new U(t,e)),new up(t,r,!0)))}Ta.DiffieHellmanGroup=Ta.createDiffieHellmanGroup=Ta.getDiffieHellman=WF;Ta.createDiffieHellman=Ta.DiffieHellman=Gw});var $w=P((Vw,hp)=>{g();(function(t,e){"use strict";function r(p,f){if(!p)throw new Error(f||"Assertion failed")}function i(p,f){p.super_=f;var s=function(){};s.prototype=f.prototype,p.prototype=new s,p.prototype.constructor=p}function n(p,f,s){if(n.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((f==="le"||f==="be")&&(s=f,f=10),this._init(p||0,f||10,s||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=Wu().Buffer}catch{}n.isBN=function(f){return f instanceof n?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===n.wordSize&&Array.isArray(f.words)},n.max=function(f,s){return f.cmp(s)>0?f:s},n.min=function(f,s){return f.cmp(s)<0?f:s},n.prototype._init=function(f,s,v){if(typeof f=="number")return this._initNumber(f,s,v);if(typeof f=="object")return this._initArray(f,s,v);s==="hex"&&(s=16),r(s===(s|0)&&s>=2&&s<=36),f=f.toString().replace(/\s+/g,"");var l=0;f[0]==="-"&&(l++,this.negative=1),l=0;l-=3)A=f[l]|f[l-1]<<8|f[l-2]<<16,this.words[h]|=A<>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);else if(v==="le")for(l=0,h=0;l>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);return this._strip()};function o(p,f){var s=p.charCodeAt(f);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;r(!1,"Invalid character in "+p)}function c(p,f,s){var v=o(p,s);return s-1>=f&&(v|=o(p,s-1)<<4),v}n.prototype._parseHex=function(f,s,v){this.length=Math.ceil((f.length-s)/6),this.words=new Array(this.length);for(var l=0;l=s;l-=2)q=c(f,s,l)<=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8;else{var _=f.length-s;for(l=_%2===0?s+1:s;l=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8}this._strip()};function m(p,f,s,v){for(var l=0,h=0,A=Math.min(p.length,s),q=f;q=49?h=_-49+10:_>=17?h=_-17+10:h=_,r(_>=0&&h1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=B}catch{n.prototype.inspect=B}else n.prototype.inspect=B;function B(){return(this.red?""}var R=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],F=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(f,s){f=f||10,s=s|0||1;var v;if(f===16||f==="hex"){v="";for(var l=0,h=0,A=0;A>>24-l&16777215,h!==0||A!==this.length-1?v=R[6-_.length]+_+v:v=_+v,l+=2,l>=26&&(l-=26,A--)}for(h!==0&&(v=h.toString(16)+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}if(f===(f|0)&&f>=2&&f<=36){var u=F[f],I=N[f];v="";var j=this.clone();for(j.negative=0;!j.isZero();){var S=j.modrn(I).toString(f);j=j.idivn(I),j.isZero()?v=S+v:v=R[u-S.length]+S+v}for(this.isZero()&&(v="0"+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},n.prototype.toJSON=function(){return this.toString(16,2)},a&&(n.prototype.toBuffer=function(f,s){return this.toArrayLike(a,f,s)}),n.prototype.toArray=function(f,s){return this.toArrayLike(Array,f,s)};var G=function(f,s){return f.allocUnsafe?f.allocUnsafe(s):new f(s)};n.prototype.toArrayLike=function(f,s,v){this._strip();var l=this.byteLength(),h=v||Math.max(1,l);r(l<=h,"byte array longer than desired length"),r(h>0,"Requested array length <= 0");var A=G(f,h),q=s==="le"?"LE":"BE";return this["_toArrayLike"+q](A,l),A},n.prototype._toArrayLikeLE=function(f,s){for(var v=0,l=0,h=0,A=0;h>8&255),v>16&255),A===6?(v>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v=0&&(f[v--]=q>>8&255),v>=0&&(f[v--]=q>>16&255),A===6?(v>=0&&(f[v--]=q>>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v>=0)for(f[v--]=l;v>=0;)f[v--]=0},Math.clz32?n.prototype._countBits=function(f){return 32-Math.clz32(f)}:n.prototype._countBits=function(f){var s=f,v=0;return s>=4096&&(v+=13,s>>>=13),s>=64&&(v+=7,s>>>=7),s>=8&&(v+=4,s>>>=4),s>=2&&(v+=2,s>>>=2),v+s},n.prototype._zeroBits=function(f){if(f===0)return 26;var s=f,v=0;return(s&8191)===0&&(v+=13,s>>>=13),(s&127)===0&&(v+=7,s>>>=7),(s&15)===0&&(v+=4,s>>>=4),(s&3)===0&&(v+=2,s>>>=2),(s&1)===0&&v++,v},n.prototype.bitLength=function(){var f=this.words[this.length-1],s=this._countBits(f);return(this.length-1)*26+s};function Z(p){for(var f=new Array(p.bitLength()),s=0;s>>l&1}return f}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,s=0;sf.length?this.clone().ior(f):f.clone().ior(this)},n.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},n.prototype.iuand=function(f){var s;this.length>f.length?s=f:s=this;for(var v=0;vf.length?this.clone().iand(f):f.clone().iand(this)},n.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},n.prototype.iuxor=function(f){var s,v;this.length>f.length?(s=this,v=f):(s=f,v=this);for(var l=0;lf.length?this.clone().ixor(f):f.clone().ixor(this)},n.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},n.prototype.inotn=function(f){r(typeof f=="number"&&f>=0);var s=Math.ceil(f/26)|0,v=f%26;this._expand(s),v>0&&s--;for(var l=0;l0&&(this.words[l]=~this.words[l]&67108863>>26-v),this._strip()},n.prototype.notn=function(f){return this.clone().inotn(f)},n.prototype.setn=function(f,s){r(typeof f=="number"&&f>=0);var v=f/26|0,l=f%26;return this._expand(v+1),s?this.words[v]=this.words[v]|1<f.length?(v=this,l=f):(v=f,l=this);for(var h=0,A=0;A>>26;for(;h!==0&&A>>26;if(this.length=v.length,h!==0)this.words[this.length]=h,this.length++;else if(v!==this)for(;Af.length?this.clone().iadd(f):f.clone().iadd(this)},n.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var s=this.iadd(f);return f.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var v=this.cmp(f);if(v===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,h;v>0?(l=this,h=f):(l=f,h=this);for(var A=0,q=0;q>26,this.words[q]=s&67108863;for(;A!==0&&q>26,this.words[q]=s&67108863;if(A===0&&q>>26,j=_&67108863,S=Math.min(u,f.length-1),L=Math.max(0,u-p.length+1);L<=S;L++){var Q=u-L|0;l=p.words[Q]|0,h=f.words[L]|0,A=l*h+j,I+=A/67108864|0,j=A&67108863}s.words[u]=j|0,_=I|0}return _!==0?s.words[u]=_|0:s.length--,s._strip()}var fe=function(f,s,v){var l=f.words,h=s.words,A=v.words,q=0,_,u,I,j=l[0]|0,S=j&8191,L=j>>>13,Q=l[1]|0,z=Q&8191,J=Q>>>13,he=l[2]|0,W=he&8191,te=he>>>13,Qe=l[3]|0,ne=Qe&8191,ye=Qe>>>13,Rt=l[4]|0,Pe=Rt&8191,We=Rt>>>13,It=l[5]|0,Ue=It&8191,tt=It>>>13,St=l[6]|0,Re=St&8191,rt=St>>>13,Et=l[7]|0,Oe=Et&8191,it=Et>>>13,Tt=l[8]|0,ke=Tt&8191,nt=Tt>>>13,Ct=l[9]|0,Te=Ct&8191,Ze=Ct>>>13,wt=h[0]|0,Be=wt&8191,et=wt>>>13,_t=h[1]|0,qe=_t&8191,ft=_t>>>13,Ot=h[2]|0,Fe=Ot&8191,ut=Ot>>>13,lt=h[3]|0,Se=lt&8191,Xe=lt>>>13,Bt=h[4]|0,De=Bt&8191,at=Bt>>>13,Ut=h[5]|0,_e=Ut&8191,ot=Ut>>>13,C=h[6]|0,T=C&8191,O=C>>>13,w=h[7]|0,D=w&8191,H=w>>>13,Y=h[8]|0,V=Y&8191,ee=Y>>>13,Ee=h[9]|0,ae=Ee&8191,xe=Ee>>>13;v.negative=f.negative^s.negative,v.length=19,_=Math.imul(S,Be),u=Math.imul(S,et),u=u+Math.imul(L,Be)|0,I=Math.imul(L,et);var we=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(we>>>26)|0,we&=67108863,_=Math.imul(z,Be),u=Math.imul(z,et),u=u+Math.imul(J,Be)|0,I=Math.imul(J,et),_=_+Math.imul(S,qe)|0,u=u+Math.imul(S,ft)|0,u=u+Math.imul(L,qe)|0,I=I+Math.imul(L,ft)|0;var je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(je>>>26)|0,je&=67108863,_=Math.imul(W,Be),u=Math.imul(W,et),u=u+Math.imul(te,Be)|0,I=Math.imul(te,et),_=_+Math.imul(z,qe)|0,u=u+Math.imul(z,ft)|0,u=u+Math.imul(J,qe)|0,I=I+Math.imul(J,ft)|0,_=_+Math.imul(S,Fe)|0,u=u+Math.imul(S,ut)|0,u=u+Math.imul(L,Fe)|0,I=I+Math.imul(L,ut)|0;var ze=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(ze>>>26)|0,ze&=67108863,_=Math.imul(ne,Be),u=Math.imul(ne,et),u=u+Math.imul(ye,Be)|0,I=Math.imul(ye,et),_=_+Math.imul(W,qe)|0,u=u+Math.imul(W,ft)|0,u=u+Math.imul(te,qe)|0,I=I+Math.imul(te,ft)|0,_=_+Math.imul(z,Fe)|0,u=u+Math.imul(z,ut)|0,u=u+Math.imul(J,Fe)|0,I=I+Math.imul(J,ut)|0,_=_+Math.imul(S,Se)|0,u=u+Math.imul(S,Xe)|0,u=u+Math.imul(L,Se)|0,I=I+Math.imul(L,Xe)|0;var Ye=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,_=Math.imul(Pe,Be),u=Math.imul(Pe,et),u=u+Math.imul(We,Be)|0,I=Math.imul(We,et),_=_+Math.imul(ne,qe)|0,u=u+Math.imul(ne,ft)|0,u=u+Math.imul(ye,qe)|0,I=I+Math.imul(ye,ft)|0,_=_+Math.imul(W,Fe)|0,u=u+Math.imul(W,ut)|0,u=u+Math.imul(te,Fe)|0,I=I+Math.imul(te,ut)|0,_=_+Math.imul(z,Se)|0,u=u+Math.imul(z,Xe)|0,u=u+Math.imul(J,Se)|0,I=I+Math.imul(J,Xe)|0,_=_+Math.imul(S,De)|0,u=u+Math.imul(S,at)|0,u=u+Math.imul(L,De)|0,I=I+Math.imul(L,at)|0;var Ge=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,_=Math.imul(Ue,Be),u=Math.imul(Ue,et),u=u+Math.imul(tt,Be)|0,I=Math.imul(tt,et),_=_+Math.imul(Pe,qe)|0,u=u+Math.imul(Pe,ft)|0,u=u+Math.imul(We,qe)|0,I=I+Math.imul(We,ft)|0,_=_+Math.imul(ne,Fe)|0,u=u+Math.imul(ne,ut)|0,u=u+Math.imul(ye,Fe)|0,I=I+Math.imul(ye,ut)|0,_=_+Math.imul(W,Se)|0,u=u+Math.imul(W,Xe)|0,u=u+Math.imul(te,Se)|0,I=I+Math.imul(te,Xe)|0,_=_+Math.imul(z,De)|0,u=u+Math.imul(z,at)|0,u=u+Math.imul(J,De)|0,I=I+Math.imul(J,at)|0,_=_+Math.imul(S,_e)|0,u=u+Math.imul(S,ot)|0,u=u+Math.imul(L,_e)|0,I=I+Math.imul(L,ot)|0;var Ve=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,_=Math.imul(Re,Be),u=Math.imul(Re,et),u=u+Math.imul(rt,Be)|0,I=Math.imul(rt,et),_=_+Math.imul(Ue,qe)|0,u=u+Math.imul(Ue,ft)|0,u=u+Math.imul(tt,qe)|0,I=I+Math.imul(tt,ft)|0,_=_+Math.imul(Pe,Fe)|0,u=u+Math.imul(Pe,ut)|0,u=u+Math.imul(We,Fe)|0,I=I+Math.imul(We,ut)|0,_=_+Math.imul(ne,Se)|0,u=u+Math.imul(ne,Xe)|0,u=u+Math.imul(ye,Se)|0,I=I+Math.imul(ye,Xe)|0,_=_+Math.imul(W,De)|0,u=u+Math.imul(W,at)|0,u=u+Math.imul(te,De)|0,I=I+Math.imul(te,at)|0,_=_+Math.imul(z,_e)|0,u=u+Math.imul(z,ot)|0,u=u+Math.imul(J,_e)|0,I=I+Math.imul(J,ot)|0,_=_+Math.imul(S,T)|0,u=u+Math.imul(S,O)|0,u=u+Math.imul(L,T)|0,I=I+Math.imul(L,O)|0;var Je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Je>>>26)|0,Je&=67108863,_=Math.imul(Oe,Be),u=Math.imul(Oe,et),u=u+Math.imul(it,Be)|0,I=Math.imul(it,et),_=_+Math.imul(Re,qe)|0,u=u+Math.imul(Re,ft)|0,u=u+Math.imul(rt,qe)|0,I=I+Math.imul(rt,ft)|0,_=_+Math.imul(Ue,Fe)|0,u=u+Math.imul(Ue,ut)|0,u=u+Math.imul(tt,Fe)|0,I=I+Math.imul(tt,ut)|0,_=_+Math.imul(Pe,Se)|0,u=u+Math.imul(Pe,Xe)|0,u=u+Math.imul(We,Se)|0,I=I+Math.imul(We,Xe)|0,_=_+Math.imul(ne,De)|0,u=u+Math.imul(ne,at)|0,u=u+Math.imul(ye,De)|0,I=I+Math.imul(ye,at)|0,_=_+Math.imul(W,_e)|0,u=u+Math.imul(W,ot)|0,u=u+Math.imul(te,_e)|0,I=I+Math.imul(te,ot)|0,_=_+Math.imul(z,T)|0,u=u+Math.imul(z,O)|0,u=u+Math.imul(J,T)|0,I=I+Math.imul(J,O)|0,_=_+Math.imul(S,D)|0,u=u+Math.imul(S,H)|0,u=u+Math.imul(L,D)|0,I=I+Math.imul(L,H)|0;var $e=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($e>>>26)|0,$e&=67108863,_=Math.imul(ke,Be),u=Math.imul(ke,et),u=u+Math.imul(nt,Be)|0,I=Math.imul(nt,et),_=_+Math.imul(Oe,qe)|0,u=u+Math.imul(Oe,ft)|0,u=u+Math.imul(it,qe)|0,I=I+Math.imul(it,ft)|0,_=_+Math.imul(Re,Fe)|0,u=u+Math.imul(Re,ut)|0,u=u+Math.imul(rt,Fe)|0,I=I+Math.imul(rt,ut)|0,_=_+Math.imul(Ue,Se)|0,u=u+Math.imul(Ue,Xe)|0,u=u+Math.imul(tt,Se)|0,I=I+Math.imul(tt,Xe)|0,_=_+Math.imul(Pe,De)|0,u=u+Math.imul(Pe,at)|0,u=u+Math.imul(We,De)|0,I=I+Math.imul(We,at)|0,_=_+Math.imul(ne,_e)|0,u=u+Math.imul(ne,ot)|0,u=u+Math.imul(ye,_e)|0,I=I+Math.imul(ye,ot)|0,_=_+Math.imul(W,T)|0,u=u+Math.imul(W,O)|0,u=u+Math.imul(te,T)|0,I=I+Math.imul(te,O)|0,_=_+Math.imul(z,D)|0,u=u+Math.imul(z,H)|0,u=u+Math.imul(J,D)|0,I=I+Math.imul(J,H)|0,_=_+Math.imul(S,V)|0,u=u+Math.imul(S,ee)|0,u=u+Math.imul(L,V)|0,I=I+Math.imul(L,ee)|0;var Ie=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,_=Math.imul(Te,Be),u=Math.imul(Te,et),u=u+Math.imul(Ze,Be)|0,I=Math.imul(Ze,et),_=_+Math.imul(ke,qe)|0,u=u+Math.imul(ke,ft)|0,u=u+Math.imul(nt,qe)|0,I=I+Math.imul(nt,ft)|0,_=_+Math.imul(Oe,Fe)|0,u=u+Math.imul(Oe,ut)|0,u=u+Math.imul(it,Fe)|0,I=I+Math.imul(it,ut)|0,_=_+Math.imul(Re,Se)|0,u=u+Math.imul(Re,Xe)|0,u=u+Math.imul(rt,Se)|0,I=I+Math.imul(rt,Xe)|0,_=_+Math.imul(Ue,De)|0,u=u+Math.imul(Ue,at)|0,u=u+Math.imul(tt,De)|0,I=I+Math.imul(tt,at)|0,_=_+Math.imul(Pe,_e)|0,u=u+Math.imul(Pe,ot)|0,u=u+Math.imul(We,_e)|0,I=I+Math.imul(We,ot)|0,_=_+Math.imul(ne,T)|0,u=u+Math.imul(ne,O)|0,u=u+Math.imul(ye,T)|0,I=I+Math.imul(ye,O)|0,_=_+Math.imul(W,D)|0,u=u+Math.imul(W,H)|0,u=u+Math.imul(te,D)|0,I=I+Math.imul(te,H)|0,_=_+Math.imul(z,V)|0,u=u+Math.imul(z,ee)|0,u=u+Math.imul(J,V)|0,I=I+Math.imul(J,ee)|0,_=_+Math.imul(S,ae)|0,u=u+Math.imul(S,xe)|0,u=u+Math.imul(L,ae)|0,I=I+Math.imul(L,xe)|0;var Le=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Le>>>26)|0,Le&=67108863,_=Math.imul(Te,qe),u=Math.imul(Te,ft),u=u+Math.imul(Ze,qe)|0,I=Math.imul(Ze,ft),_=_+Math.imul(ke,Fe)|0,u=u+Math.imul(ke,ut)|0,u=u+Math.imul(nt,Fe)|0,I=I+Math.imul(nt,ut)|0,_=_+Math.imul(Oe,Se)|0,u=u+Math.imul(Oe,Xe)|0,u=u+Math.imul(it,Se)|0,I=I+Math.imul(it,Xe)|0,_=_+Math.imul(Re,De)|0,u=u+Math.imul(Re,at)|0,u=u+Math.imul(rt,De)|0,I=I+Math.imul(rt,at)|0,_=_+Math.imul(Ue,_e)|0,u=u+Math.imul(Ue,ot)|0,u=u+Math.imul(tt,_e)|0,I=I+Math.imul(tt,ot)|0,_=_+Math.imul(Pe,T)|0,u=u+Math.imul(Pe,O)|0,u=u+Math.imul(We,T)|0,I=I+Math.imul(We,O)|0,_=_+Math.imul(ne,D)|0,u=u+Math.imul(ne,H)|0,u=u+Math.imul(ye,D)|0,I=I+Math.imul(ye,H)|0,_=_+Math.imul(W,V)|0,u=u+Math.imul(W,ee)|0,u=u+Math.imul(te,V)|0,I=I+Math.imul(te,ee)|0,_=_+Math.imul(z,ae)|0,u=u+Math.imul(z,xe)|0,u=u+Math.imul(J,ae)|0,I=I+Math.imul(J,xe)|0;var Ae=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,_=Math.imul(Te,Fe),u=Math.imul(Te,ut),u=u+Math.imul(Ze,Fe)|0,I=Math.imul(Ze,ut),_=_+Math.imul(ke,Se)|0,u=u+Math.imul(ke,Xe)|0,u=u+Math.imul(nt,Se)|0,I=I+Math.imul(nt,Xe)|0,_=_+Math.imul(Oe,De)|0,u=u+Math.imul(Oe,at)|0,u=u+Math.imul(it,De)|0,I=I+Math.imul(it,at)|0,_=_+Math.imul(Re,_e)|0,u=u+Math.imul(Re,ot)|0,u=u+Math.imul(rt,_e)|0,I=I+Math.imul(rt,ot)|0,_=_+Math.imul(Ue,T)|0,u=u+Math.imul(Ue,O)|0,u=u+Math.imul(tt,T)|0,I=I+Math.imul(tt,O)|0,_=_+Math.imul(Pe,D)|0,u=u+Math.imul(Pe,H)|0,u=u+Math.imul(We,D)|0,I=I+Math.imul(We,H)|0,_=_+Math.imul(ne,V)|0,u=u+Math.imul(ne,ee)|0,u=u+Math.imul(ye,V)|0,I=I+Math.imul(ye,ee)|0,_=_+Math.imul(W,ae)|0,u=u+Math.imul(W,xe)|0,u=u+Math.imul(te,ae)|0,I=I+Math.imul(te,xe)|0;var Me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,_=Math.imul(Te,Se),u=Math.imul(Te,Xe),u=u+Math.imul(Ze,Se)|0,I=Math.imul(Ze,Xe),_=_+Math.imul(ke,De)|0,u=u+Math.imul(ke,at)|0,u=u+Math.imul(nt,De)|0,I=I+Math.imul(nt,at)|0,_=_+Math.imul(Oe,_e)|0,u=u+Math.imul(Oe,ot)|0,u=u+Math.imul(it,_e)|0,I=I+Math.imul(it,ot)|0,_=_+Math.imul(Re,T)|0,u=u+Math.imul(Re,O)|0,u=u+Math.imul(rt,T)|0,I=I+Math.imul(rt,O)|0,_=_+Math.imul(Ue,D)|0,u=u+Math.imul(Ue,H)|0,u=u+Math.imul(tt,D)|0,I=I+Math.imul(tt,H)|0,_=_+Math.imul(Pe,V)|0,u=u+Math.imul(Pe,ee)|0,u=u+Math.imul(We,V)|0,I=I+Math.imul(We,ee)|0,_=_+Math.imul(ne,ae)|0,u=u+Math.imul(ne,xe)|0,u=u+Math.imul(ye,ae)|0,I=I+Math.imul(ye,xe)|0;var Ce=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,_=Math.imul(Te,De),u=Math.imul(Te,at),u=u+Math.imul(Ze,De)|0,I=Math.imul(Ze,at),_=_+Math.imul(ke,_e)|0,u=u+Math.imul(ke,ot)|0,u=u+Math.imul(nt,_e)|0,I=I+Math.imul(nt,ot)|0,_=_+Math.imul(Oe,T)|0,u=u+Math.imul(Oe,O)|0,u=u+Math.imul(it,T)|0,I=I+Math.imul(it,O)|0,_=_+Math.imul(Re,D)|0,u=u+Math.imul(Re,H)|0,u=u+Math.imul(rt,D)|0,I=I+Math.imul(rt,H)|0,_=_+Math.imul(Ue,V)|0,u=u+Math.imul(Ue,ee)|0,u=u+Math.imul(tt,V)|0,I=I+Math.imul(tt,ee)|0,_=_+Math.imul(Pe,ae)|0,u=u+Math.imul(Pe,xe)|0,u=u+Math.imul(We,ae)|0,I=I+Math.imul(We,xe)|0;var me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(me>>>26)|0,me&=67108863,_=Math.imul(Te,_e),u=Math.imul(Te,ot),u=u+Math.imul(Ze,_e)|0,I=Math.imul(Ze,ot),_=_+Math.imul(ke,T)|0,u=u+Math.imul(ke,O)|0,u=u+Math.imul(nt,T)|0,I=I+Math.imul(nt,O)|0,_=_+Math.imul(Oe,D)|0,u=u+Math.imul(Oe,H)|0,u=u+Math.imul(it,D)|0,I=I+Math.imul(it,H)|0,_=_+Math.imul(Re,V)|0,u=u+Math.imul(Re,ee)|0,u=u+Math.imul(rt,V)|0,I=I+Math.imul(rt,ee)|0,_=_+Math.imul(Ue,ae)|0,u=u+Math.imul(Ue,xe)|0,u=u+Math.imul(tt,ae)|0,I=I+Math.imul(tt,xe)|0;var $=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($>>>26)|0,$&=67108863,_=Math.imul(Te,T),u=Math.imul(Te,O),u=u+Math.imul(Ze,T)|0,I=Math.imul(Ze,O),_=_+Math.imul(ke,D)|0,u=u+Math.imul(ke,H)|0,u=u+Math.imul(nt,D)|0,I=I+Math.imul(nt,H)|0,_=_+Math.imul(Oe,V)|0,u=u+Math.imul(Oe,ee)|0,u=u+Math.imul(it,V)|0,I=I+Math.imul(it,ee)|0,_=_+Math.imul(Re,ae)|0,u=u+Math.imul(Re,xe)|0,u=u+Math.imul(rt,ae)|0,I=I+Math.imul(rt,xe)|0;var X=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(X>>>26)|0,X&=67108863,_=Math.imul(Te,D),u=Math.imul(Te,H),u=u+Math.imul(Ze,D)|0,I=Math.imul(Ze,H),_=_+Math.imul(ke,V)|0,u=u+Math.imul(ke,ee)|0,u=u+Math.imul(nt,V)|0,I=I+Math.imul(nt,ee)|0,_=_+Math.imul(Oe,ae)|0,u=u+Math.imul(Oe,xe)|0,u=u+Math.imul(it,ae)|0,I=I+Math.imul(it,xe)|0;var de=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(de>>>26)|0,de&=67108863,_=Math.imul(Te,V),u=Math.imul(Te,ee),u=u+Math.imul(Ze,V)|0,I=Math.imul(Ze,ee),_=_+Math.imul(ke,ae)|0,u=u+Math.imul(ke,xe)|0,u=u+Math.imul(nt,ae)|0,I=I+Math.imul(nt,xe)|0;var oe=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(oe>>>26)|0,oe&=67108863,_=Math.imul(Te,ae),u=Math.imul(Te,xe),u=u+Math.imul(Ze,ae)|0,I=Math.imul(Ze,xe);var se=(q+_|0)+((u&8191)<<13)|0;return q=(I+(u>>>13)|0)+(se>>>26)|0,se&=67108863,A[0]=we,A[1]=je,A[2]=ze,A[3]=Ye,A[4]=Ge,A[5]=Ve,A[6]=Je,A[7]=$e,A[8]=Ie,A[9]=Le,A[10]=Ae,A[11]=Me,A[12]=Ce,A[13]=me,A[14]=$,A[15]=X,A[16]=de,A[17]=oe,A[18]=se,q!==0&&(A[19]=q,v.length++),v};Math.imul||(fe=ie);function ce(p,f,s){s.negative=f.negative^p.negative,s.length=p.length+f.length;for(var v=0,l=0,h=0;h>>26)|0,l+=A>>>26,A&=67108863}s.words[h]=q,v=A,A=l}return v!==0?s.words[h]=v:s.length--,s._strip()}function ge(p,f,s){return ce(p,f,s)}n.prototype.mulTo=function(f,s){var v,l=this.length+f.length;return this.length===10&&f.length===10?v=fe(this,f,s):l<63?v=ie(this,f,s):l<1024?v=ce(this,f,s):v=ge(this,f,s),v};function ve(p,f){this.x=p,this.y=f}ve.prototype.makeRBT=function(f){for(var s=new Array(f),v=n.prototype._countBits(f)-1,l=0;l>=1;return l},ve.prototype.permute=function(f,s,v,l,h,A){for(var q=0;q>>1)h++;return 1<>>13,v[2*A+1]=h&8191,h=h>>>13;for(A=2*s;A>=26,v+=h/67108864|0,v+=A>>>26,this.words[l]=A&67108863}return v!==0&&(this.words[l]=v,this.length++),s?this.ineg():this},n.prototype.muln=function(f){return this.clone().imuln(f)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(f){var s=Z(f);if(s.length===0)return new n(1);for(var v=this,l=0;l=0);var s=f%26,v=(f-s)/26,l=67108863>>>26-s<<26-s,h;if(s!==0){var A=0;for(h=0;h>>26-s}A&&(this.words[h]=A,this.length++)}if(v!==0){for(h=this.length-1;h>=0;h--)this.words[h+v]=this.words[h];for(h=0;h=0);var l;s?l=(s-s%26)/26:l=0;var h=f%26,A=Math.min((f-h)/26,this.length),q=67108863^67108863>>>h<A)for(this.length-=A,u=0;u=0&&(I!==0||u>=l);u--){var j=this.words[u]|0;this.words[u]=I<<26-h|j>>>h,I=j&q}return _&&I!==0&&(_.words[_.length++]=I),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(f,s,v){return r(this.negative===0),this.iushrn(f,s,v)},n.prototype.shln=function(f){return this.clone().ishln(f)},n.prototype.ushln=function(f){return this.clone().iushln(f)},n.prototype.shrn=function(f){return this.clone().ishrn(f)},n.prototype.ushrn=function(f){return this.clone().iushrn(f)},n.prototype.testn=function(f){r(typeof f=="number"&&f>=0);var s=f%26,v=(f-s)/26,l=1<=0);var s=f%26,v=(f-s)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=v)return this;if(s!==0&&v++,this.length=Math.min(v,this.length),s!==0){var l=67108863^67108863>>>s<=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},n.prototype.isubn=function(f){if(r(typeof f=="number"),r(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s>26)-(_/67108864|0),this.words[h+v]=A&67108863}for(;h>26,this.words[h+v]=A&67108863;if(q===0)return this._strip();for(r(q===-1),q=0,h=0;h>26,this.words[h]=A&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(f,s){var v=this.length-f.length,l=this.clone(),h=f,A=h.words[h.length-1]|0,q=this._countBits(A);v=26-q,v!==0&&(h=h.ushln(v),l.iushln(v),A=h.words[h.length-1]|0);var _=l.length-h.length,u;if(s!=="mod"){u=new n(null),u.length=_+1,u.words=new Array(u.length);for(var I=0;I=0;S--){var L=(l.words[h.length+S]|0)*67108864+(l.words[h.length+S-1]|0);for(L=Math.min(L/A|0,67108863),l._ishlnsubmul(h,L,S);l.negative!==0;)L--,l.negative=0,l._ishlnsubmul(h,1,S),l.isZero()||(l.negative^=1);u&&(u.words[S]=L)}return u&&u._strip(),l._strip(),s!=="div"&&v!==0&&l.iushrn(v),{div:u||null,mod:l}},n.prototype.divmod=function(f,s,v){if(r(!f.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var l,h,A;return this.negative!==0&&f.negative===0?(A=this.neg().divmod(f,s),s!=="mod"&&(l=A.div.neg()),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.iadd(f)),{div:l,mod:h}):this.negative===0&&f.negative!==0?(A=this.divmod(f.neg(),s),s!=="mod"&&(l=A.div.neg()),{div:l,mod:A.mod}):(this.negative&f.negative)!==0?(A=this.neg().divmod(f.neg(),s),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.isub(f)),{div:A.div,mod:h}):f.length>this.length||this.cmp(f)<0?{div:new n(0),mod:this}:f.length===1?s==="div"?{div:this.divn(f.words[0]),mod:null}:s==="mod"?{div:null,mod:new n(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new n(this.modrn(f.words[0]))}:this._wordDiv(f,s)},n.prototype.div=function(f){return this.divmod(f,"div",!1).div},n.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},n.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},n.prototype.divRound=function(f){var s=this.divmod(f);if(s.mod.isZero())return s.div;var v=s.div.negative!==0?s.mod.isub(f):s.mod,l=f.ushrn(1),h=f.andln(1),A=v.cmp(l);return A<0||h===1&&A===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},n.prototype.modrn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=(1<<26)%f,l=0,h=this.length-1;h>=0;h--)l=(v*l+(this.words[h]|0))%f;return s?-l:l},n.prototype.modn=function(f){return this.modrn(f)},n.prototype.idivn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=0,l=this.length-1;l>=0;l--){var h=(this.words[l]|0)+v*67108864;this.words[l]=h/f|0,v=h%f}return this._strip(),s?this.ineg():this},n.prototype.divn=function(f){return this.clone().idivn(f)},n.prototype.egcd=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=new n(0),q=new n(1),_=0;s.isEven()&&v.isEven();)s.iushrn(1),v.iushrn(1),++_;for(var u=v.clone(),I=s.clone();!s.isZero();){for(var j=0,S=1;(s.words[0]&S)===0&&j<26;++j,S<<=1);if(j>0)for(s.iushrn(j);j-- >0;)(l.isOdd()||h.isOdd())&&(l.iadd(u),h.isub(I)),l.iushrn(1),h.iushrn(1);for(var L=0,Q=1;(v.words[0]&Q)===0&&L<26;++L,Q<<=1);if(L>0)for(v.iushrn(L);L-- >0;)(A.isOdd()||q.isOdd())&&(A.iadd(u),q.isub(I)),A.iushrn(1),q.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(A),h.isub(q)):(v.isub(s),A.isub(l),q.isub(h))}return{a:A,b:q,gcd:v.iushln(_)}},n.prototype._invmp=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=v.clone();s.cmpn(1)>0&&v.cmpn(1)>0;){for(var q=0,_=1;(s.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(s.iushrn(q);q-- >0;)l.isOdd()&&l.iadd(A),l.iushrn(1);for(var u=0,I=1;(v.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(v.iushrn(u);u-- >0;)h.isOdd()&&h.iadd(A),h.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(h)):(v.isub(s),h.isub(l))}var j;return s.cmpn(1)===0?j=l:j=h,j.cmpn(0)<0&&j.iadd(f),j},n.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var s=this.clone(),v=f.clone();s.negative=0,v.negative=0;for(var l=0;s.isEven()&&v.isEven();l++)s.iushrn(1),v.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;v.isEven();)v.iushrn(1);var h=s.cmp(v);if(h<0){var A=s;s=v,v=A}else if(h===0||v.cmpn(1)===0)break;s.isub(v)}while(!0);return v.iushln(l)},n.prototype.invm=function(f){return this.egcd(f).a.umod(f)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(f){return this.words[0]&f},n.prototype.bincn=function(f){r(typeof f=="number");var s=f%26,v=(f-s)/26,l=1<>>26,q&=67108863,this.words[A]=q}return h!==0&&(this.words[A]=h,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(f){var s=f<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var v;if(this.length>1)v=1;else{s&&(f=-f),r(f<=67108863,"Number is too big");var l=this.words[0]|0;v=l===f?0:lf.length)return 1;if(this.length=0;v--){var l=this.words[v]|0,h=f.words[v]|0;if(l!==h){lh&&(s=1);break}}return s},n.prototype.gtn=function(f){return this.cmpn(f)===1},n.prototype.gt=function(f){return this.cmp(f)===1},n.prototype.gten=function(f){return this.cmpn(f)>=0},n.prototype.gte=function(f){return this.cmp(f)>=0},n.prototype.ltn=function(f){return this.cmpn(f)===-1},n.prototype.lt=function(f){return this.cmp(f)===-1},n.prototype.lten=function(f){return this.cmpn(f)<=0},n.prototype.lte=function(f){return this.cmp(f)<=0},n.prototype.eqn=function(f){return this.cmpn(f)===0},n.prototype.eq=function(f){return this.cmp(f)===0},n.red=function(f){return new b(f)},n.prototype.toRed=function(f){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(f){return this.red=f,this},n.prototype.forceRed=function(f){return r(!this.red,"Already a number in reduction context"),this._forceRed(f)},n.prototype.redAdd=function(f){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},n.prototype.redIAdd=function(f){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},n.prototype.redSub=function(f){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},n.prototype.redISub=function(f){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},n.prototype.redShl=function(f){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},n.prototype.redMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},n.prototype.redIMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(f){return r(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var Ke={k256:null,p224:null,p192:null,p25519:null};function be(p,f){this.name=p,this.p=new n(f,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}be.prototype._tmp=function(){var f=new n(null);return f.words=new Array(Math.ceil(this.n/13)),f},be.prototype.ireduce=function(f){var s=f,v;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),v=s.bitLength();while(v>this.n);var l=v0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},be.prototype.split=function(f,s){f.iushrn(this.n,0,s)},be.prototype.imulK=function(f){return f.imul(this.k)};function pe(){be.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(pe,be),pe.prototype.split=function(f,s){for(var v=4194303,l=Math.min(f.length,9),h=0;h>>22,A=q}A>>>=22,f.words[h-10]=A,A===0&&f.length>10?f.length-=10:f.length-=9},pe.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var s=0,v=0;v>>=26,f.words[v]=h,s=l}return s!==0&&(f.words[f.length++]=s),f},n._prime=function(f){if(Ke[f])return Ke[f];var s;if(f==="k256")s=new pe;else if(f==="p224")s=new Ne;else if(f==="p192")s=new k;else if(f==="p25519")s=new d;else throw new Error("Unknown prime "+f);return Ke[f]=s,s};function b(p){if(typeof p=="string"){var f=n._prime(p);this.m=f.p,this.prime=f}else r(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}b.prototype._verify1=function(f){r(f.negative===0,"red works only with positives"),r(f.red,"red works only with red numbers")},b.prototype._verify2=function(f,s){r((f.negative|s.negative)===0,"red works only with positives"),r(f.red&&f.red===s.red,"red works only with red numbers")},b.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(M(f,f.umod(this.m)._forceRed(this)),f)},b.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},b.prototype.add=function(f,s){this._verify2(f,s);var v=f.add(s);return v.cmp(this.m)>=0&&v.isub(this.m),v._forceRed(this)},b.prototype.iadd=function(f,s){this._verify2(f,s);var v=f.iadd(s);return v.cmp(this.m)>=0&&v.isub(this.m),v},b.prototype.sub=function(f,s){this._verify2(f,s);var v=f.sub(s);return v.cmpn(0)<0&&v.iadd(this.m),v._forceRed(this)},b.prototype.isub=function(f,s){this._verify2(f,s);var v=f.isub(s);return v.cmpn(0)<0&&v.iadd(this.m),v},b.prototype.shl=function(f,s){return this._verify1(f),this.imod(f.ushln(s))},b.prototype.imul=function(f,s){return this._verify2(f,s),this.imod(f.imul(s))},b.prototype.mul=function(f,s){return this._verify2(f,s),this.imod(f.mul(s))},b.prototype.isqr=function(f){return this.imul(f,f.clone())},b.prototype.sqr=function(f){return this.mul(f,f)},b.prototype.sqrt=function(f){if(f.isZero())return f.clone();var s=this.m.andln(3);if(r(s%2===1),s===3){var v=this.m.add(new n(1)).iushrn(2);return this.pow(f,v)}for(var l=this.m.subn(1),h=0;!l.isZero()&&l.andln(1)===0;)h++,l.iushrn(1);r(!l.isZero());var A=new n(1).toRed(this),q=A.redNeg(),_=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new n(2*u*u).toRed(this);this.pow(u,_).cmp(q)!==0;)u.redIAdd(q);for(var I=this.pow(u,l),j=this.pow(f,l.addn(1).iushrn(1)),S=this.pow(f,l),L=h;S.cmp(A)!==0;){for(var Q=S,z=0;Q.cmp(A)!==0;z++)Q=Q.redSqr();r(z=0;h--){for(var I=s.words[h],j=u-1;j>=0;j--){var S=I>>j&1;if(A!==l[0]&&(A=this.sqr(A)),S===0&&q===0){_=0;continue}q<<=1,q|=S,_++,!(_!==v&&(h!==0||j!==0))&&(A=this.mul(A,l[q]),_=0,q=0)}u=26}return A},b.prototype.convertTo=function(f){var s=f.umod(this.m);return s===f?s.clone():s},b.prototype.convertFrom=function(f){var s=f.clone();return s.red=null,s},n.mont=function(f){return new E(f)};function E(p){b.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(E,b),E.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},E.prototype.convertFrom=function(f){var s=this.imod(f.mul(this.rinv));return s.red=null,s},E.prototype.imul=function(f,s){if(f.isZero()||s.isZero())return f.words[0]=0,f.length=1,f;var v=f.imul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.mul=function(f,s){if(f.isZero()||s.isZero())return new n(0)._forceRed(this);var v=f.mul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.invm=function(f){var s=this.imod(f._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof hp>"u"||hp,Vw)});var eh=P((ite,Xw)=>{g();var Oa=$w(),XF=qf();function ZF(t){var e=Ww(t),r=e.toRed(Oa.mont(t.modulus)).redPow(new Oa(t.publicExponent)).fromRed();return{blinder:r,unblinder:e.invm(t.modulus)}}function Ww(t){var e=t.modulus.byteLength(),r;do r=new Oa(XF(e));while(r.cmp(t.modulus)>=0||!r.umod(t.prime1)||!r.umod(t.prime2));return r}function Jw(t,e){var r=ZF(e),i=e.modulus.byteLength(),n=new Oa(t).mul(r.blinder).umod(e.modulus),a=n.toRed(Oa.mont(e.prime1)),o=n.toRed(Oa.mont(e.prime2)),c=e.coefficient,m=e.prime1,M=e.prime2,B=a.redPow(e.exponent1).fromRed(),R=o.redPow(e.exponent2).fromRed(),F=B.isub(R).imul(c).umod(m).imul(M);return R.iadd(F).imul(r.unblinder).umod(e.modulus).toArrayLike(U,"be",i)}Jw.getr=Ww;Xw.exports=Jw});var Zw=P((fte,eL)=>{eL.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var cp=P(r7=>{"use strict";g();var th=r7;function tL(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t!="string"){for(var i=0;i>8,o=n&255;a?r.push(a,o):r.push(o)}return r}th.toArray=tL;function e7(t){return t.length===1?"0"+t:t}th.zero2=e7;function t7(t){for(var e="",r=0;r{"use strict";g();var Mi=i7,rL=sr(),iL=zr(),rh=cp();Mi.assert=iL;Mi.toArray=rh.toArray;Mi.zero2=rh.zero2;Mi.toHex=rh.toHex;Mi.encode=rh.encode;function nL(t,e,r){var i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?c=(n>>1)-m:c=m,a.isubn(c)):c=0,i[o]=c,a.iushrn(1)}return i}Mi.getNAF=nL;function fL(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var i=0,n=0,a;t.cmpn(-i)>0||e.cmpn(-n)>0;){var o=t.andln(3)+i&3,c=e.andln(3)+n&3;o===3&&(o=-1),c===3&&(c=-1);var m;(o&1)===0?m=0:(a=t.andln(7)+i&7,(a===3||a===5)&&c===2?m=-o:m=o),r[0].push(m);var M;(c&1)===0?M=0:(a=e.andln(7)+n&7,(a===3||a===5)&&o===2?M=-c:M=c),r[1].push(M),2*i===m+1&&(i=1-i),2*n===M+1&&(n=1-n),t.iushrn(1),e.iushrn(1)}return r}Mi.getJSF=fL;function aL(t,e,r){var i="_"+e;t.prototype[e]=function(){return this[i]!==void 0?this[i]:this[i]=r.call(this)}}Mi.cachedProperty=aL;function oL(t){return typeof t=="string"?Mi.toArray(t,"hex"):t}Mi.parseBytes=oL;function sL(t){return new rL(t,"hex","le")}Mi.intFromLE=sL});var As=P((hte,n7)=>{"use strict";g();var Gf=sr(),ws=Gr(),ih=ws.getNAF,uL=ws.getJSF,nh=ws.assert;function tf(t,e){this.type=t,this.p=new Gf(e.p,16),this.red=e.prime?Gf.red(e.prime):Gf.mont(this.p),this.zero=new Gf(0).toRed(this.red),this.one=new Gf(1).toRed(this.red),this.two=new Gf(2).toRed(this.red),this.n=e.n&&new Gf(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}n7.exports=tf;tf.prototype.point=function(){throw new Error("Not implemented")};tf.prototype.validate=function(){throw new Error("Not implemented")};tf.prototype._fixedNafMul=function(e,r){nh(e.precomputed);var i=e._getDoubles(),n=ih(r,1,this._bitLength),a=(1<=c;M--)m=(m<<1)+n[M];o.push(m)}for(var B=this.jpoint(null,null,null),R=this.jpoint(null,null,null),F=a;F>0;F--){for(c=0;c=0;m--){for(var M=0;m>=0&&o[m]===0;m--)M++;if(m>=0&&M++,c=c.dblp(M),m<0)break;var B=o[m];nh(B!==0),e.type==="affine"?B>0?c=c.mixedAdd(a[B-1>>1]):c=c.mixedAdd(a[-B-1>>1].neg()):B>0?c=c.add(a[B-1>>1]):c=c.add(a[-B-1>>1].neg())}return e.type==="affine"?c.toP():c};tf.prototype._wnafMulAdd=function(e,r,i,n,a){var o=this._wnafT1,c=this._wnafT2,m=this._wnafT3,M=0,B,R,F;for(B=0;B=1;B-=2){var G=B-1,Z=B;if(o[G]!==1||o[Z]!==1){m[G]=ih(i[G],o[G],this._bitLength),m[Z]=ih(i[Z],o[Z],this._bitLength),M=Math.max(m[G].length,M),M=Math.max(m[Z].length,M);continue}var ie=[r[G],null,null,r[Z]];r[G].y.cmp(r[Z].y)===0?(ie[1]=r[G].add(r[Z]),ie[2]=r[G].toJ().mixedAdd(r[Z].neg())):r[G].y.cmp(r[Z].y.redNeg())===0?(ie[1]=r[G].toJ().mixedAdd(r[Z]),ie[2]=r[G].add(r[Z].neg())):(ie[1]=r[G].toJ().mixedAdd(r[Z]),ie[2]=r[G].toJ().mixedAdd(r[Z].neg()));var fe=[-3,-1,-5,-7,0,7,5,1,3],ce=uL(i[G],i[Z]);for(M=Math.max(ce[0].length,M),m[G]=new Array(M),m[Z]=new Array(M),R=0;R=0;B--){for(var pe=0;B>=0;){var Ne=!0;for(R=0;R=0&&pe++,Ke=Ke.dblp(pe),B<0)break;for(R=0;R0?F=c[R][k-1>>1]:k<0&&(F=c[R][-k-1>>1].neg()),F.type==="affine"?Ke=Ke.mixedAdd(F):Ke=Ke.add(F))}}for(B=0;B=Math.ceil((e.bitLength()+1)/r.step):!1};si.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,a=0;a{"use strict";g();var hL=Gr(),tr=sr(),dp=gt(),Da=As(),cL=hL.assert;function ui(t){Da.call(this,"short",t),this.a=new tr(t.a,16).toRed(this.red),this.b=new tr(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}dp(ui,Da);f7.exports=ui;ui.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,i;if(e.beta)r=new tr(e.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);r=n[0].cmp(n[1])<0?n[0]:n[1],r=r.toRed(this.red)}if(e.lambda)i=new tr(e.lambda,16);else{var a=this._getEndoRoots(this.n);this.g.mul(a[0]).x.cmp(this.g.x.redMul(r))===0?i=a[0]:(i=a[1],cL(this.g.mul(i).x.cmp(this.g.x.redMul(r))===0))}var o;return e.basis?o=e.basis.map(function(c){return{a:new tr(c.a,16),b:new tr(c.b,16)}}):o=this._getEndoBasis(i),{beta:r,lambda:i,basis:o}}};ui.prototype._getEndoRoots=function(e){var r=e===this.p?this.red:tr.mont(e),i=new tr(2).toRed(r).redInvm(),n=i.redNeg(),a=new tr(3).toRed(r).redNeg().redSqrt().redMul(i),o=n.redAdd(a).fromRed(),c=n.redSub(a).fromRed();return[o,c]};ui.prototype._getEndoBasis=function(e){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),i=e,n=this.n.clone(),a=new tr(1),o=new tr(0),c=new tr(0),m=new tr(1),M,B,R,F,N,G,Z,ie=0,fe,ce;i.cmpn(0)!==0;){var ge=n.div(i);fe=n.sub(ge.mul(i)),ce=c.sub(ge.mul(a));var ve=m.sub(ge.mul(o));if(!R&&fe.cmp(r)<0)M=Z.neg(),B=a,R=fe.neg(),F=ce;else if(R&&++ie===2)break;Z=fe,n=i,i=fe,c=a,a=ce,m=o,o=ve}N=fe.neg(),G=ce;var Ke=R.sqr().add(F.sqr()),be=N.sqr().add(G.sqr());return be.cmp(Ke)>=0&&(N=M,G=B),R.negative&&(R=R.neg(),F=F.neg()),N.negative&&(N=N.neg(),G=G.neg()),[{a:R,b:F},{a:N,b:G}]};ui.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],n=r[1],a=n.b.mul(e).divRound(this.n),o=i.b.neg().mul(e).divRound(this.n),c=a.mul(i.a),m=o.mul(n.a),M=a.mul(i.b),B=o.mul(n.b),R=e.sub(c).sub(m),F=M.add(B).neg();return{k1:R,k2:F}};ui.prototype.pointFromX=function(e,r){e=new tr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var a=n.fromRed().isOdd();return(r&&!a||!r&&a)&&(n=n.redNeg()),this.point(e,n)};ui.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,n=this.a.redMul(r),a=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(a).cmpn(0)===0};ui.prototype._endoWnafMulAdd=function(e,r,i){for(var n=this._endoWnafT1,a=this._endoWnafT2,o=0;o":""};dr.prototype.isInfinity=function(){return this.inf};dr.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)};dr.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=e.redInvm(),a=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),o=a.redSqr().redISub(this.x.redAdd(this.x)),c=a.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,c)};dr.prototype.getX=function(){return this.x.fromRed()};dr.prototype.getY=function(){return this.y.fromRed()};dr.prototype.mul=function(e){return e=new tr(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};dr.prototype.mulAdd=function(e,r,i){var n=[this,r],a=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,a):this.curve._wnafMulAdd(1,n,a,2)};dr.prototype.jmulAdd=function(e,r,i){var n=[this,r],a=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,a,!0):this.curve._wnafMulAdd(1,n,a,2,!0)};dr.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};dr.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,n=function(a){return a.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r};dr.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function gr(t,e,r,i){Da.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new tr(0)):(this.x=new tr(e,16),this.y=new tr(r,16),this.z=new tr(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}dp(gr,Da.BasePoint);ui.prototype.jpoint=function(e,r,i){return new gr(this,e,r,i)};gr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(e);return this.curve.point(i,n)};gr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};gr.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),a=e.x.redMul(i),o=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),m=n.redSub(a),M=o.redSub(c);if(m.cmpn(0)===0)return M.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var B=m.redSqr(),R=B.redMul(m),F=n.redMul(B),N=M.redSqr().redIAdd(R).redISub(F).redISub(F),G=M.redMul(F.redISub(N)).redISub(o.redMul(R)),Z=this.z.redMul(e.z).redMul(m);return this.curve.jpoint(N,G,Z)};gr.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=e.x.redMul(r),a=this.y,o=e.y.redMul(r).redMul(this.z),c=i.redSub(n),m=a.redSub(o);if(c.cmpn(0)===0)return m.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var M=c.redSqr(),B=M.redMul(c),R=i.redMul(M),F=m.redSqr().redIAdd(B).redISub(R).redISub(R),N=m.redMul(R.redISub(F)).redISub(a.redMul(B)),G=this.z.redMul(c);return this.curve.jpoint(F,N,G)};gr.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(a),this.x.cmp(i)===0)return!0}};gr.prototype.inspect=function(){return this.isInfinity()?"":""};gr.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var u7=P((pte,s7)=>{"use strict";g();var Pa=sr(),o7=gt(),fh=As(),dL=Gr();function Ua(t){fh.call(this,"mont",t),this.a=new Pa(t.a,16).toRed(this.red),this.b=new Pa(t.b,16).toRed(this.red),this.i4=new Pa(4).toRed(this.red).redInvm(),this.two=new Pa(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}o7(Ua,fh);s7.exports=Ua;Ua.prototype.validate=function(e){var r=e.normalize().x,i=r.redSqr(),n=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),a=n.redSqrt();return a.redSqr().cmp(n)===0};function lr(t,e,r){fh.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Pa(e,16),this.z=new Pa(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}o7(lr,fh.BasePoint);Ua.prototype.decodePoint=function(e,r){return this.point(dL.toArray(e,r),1)};Ua.prototype.point=function(e,r){return new lr(this,e,r)};Ua.prototype.pointFromJSON=function(e){return lr.fromJSON(this,e)};lr.prototype.precompute=function(){};lr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};lr.fromJSON=function(e,r){return new lr(e,r[0],r[1]||e.one)};lr.prototype.inspect=function(){return this.isInfinity()?"":""};lr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};lr.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),i=this.x.redSub(this.z),n=i.redSqr(),a=r.redSub(n),o=r.redMul(n),c=a.redMul(n.redAdd(this.curve.a24.redMul(a)));return this.curve.point(o,c)};lr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.diffAdd=function(e,r){var i=this.x.redAdd(this.z),n=this.x.redSub(this.z),a=e.x.redAdd(e.z),o=e.x.redSub(e.z),c=o.redMul(i),m=a.redMul(n),M=r.z.redMul(c.redAdd(m).redSqr()),B=r.x.redMul(c.redISub(m).redSqr());return this.curve.point(M,B)};lr.prototype.mul=function(e){for(var r=e.clone(),i=this,n=this.curve.point(null,null),a=this,o=[];r.cmpn(0)!==0;r.iushrn(1))o.push(r.andln(1));for(var c=o.length-1;c>=0;c--)o[c]===0?(i=i.diffAdd(n,a),n=n.dbl()):(n=i.diffAdd(n,a),i=i.dbl());return n};lr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};lr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};lr.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var d7=P((bte,c7)=>{"use strict";g();var lL=Gr(),En=sr(),h7=gt(),ah=As(),pL=lL.assert;function Yi(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,ah.call(this,"edwards",t),this.a=new En(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new En(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new En(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),pL(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}h7(Yi,ah);c7.exports=Yi;Yi.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};Yi.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};Yi.prototype.jpoint=function(e,r,i,n){return this.point(e,r,i,n)};Yi.prototype.pointFromX=function(e,r){e=new En(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),n=this.c2.redSub(this.a.redMul(i)),a=this.one.redSub(this.c2.redMul(this.d).redMul(i)),o=n.redMul(a.redInvm()),c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");var m=c.fromRed().isOdd();return(r&&!m||!r&&m)&&(c=c.redNeg()),this.point(e,c)};Yi.prototype.pointFromY=function(e,r){e=new En(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),n=i.redSub(this.c2),a=i.redMul(this.d).redMul(this.c2).redSub(this.a),o=n.redMul(a.redInvm());if(o.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)};Yi.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),i=e.y.redSqr(),n=r.redMul(this.a).redAdd(i),a=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return n.cmp(a)===0};function Yt(t,e,r,i,n){ah.BasePoint.call(this,t,"projective"),e===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new En(e,16),this.y=new En(r,16),this.z=i?new En(i,16):this.curve.one,this.t=n&&new En(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}h7(Yt,ah.BasePoint);Yi.prototype.pointFromJSON=function(e){return Yt.fromJSON(this,e)};Yi.prototype.point=function(e,r,i,n){return new Yt(this,e,r,i,n)};Yt.fromJSON=function(e,r){return new Yt(e,r[0],r[1],r[2])};Yt.prototype.inspect=function(){return this.isInfinity()?"":""};Yt.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Yt.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var n=this.curve._mulA(e),a=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),o=n.redAdd(r),c=o.redSub(i),m=n.redSub(r),M=a.redMul(c),B=o.redMul(m),R=a.redMul(m),F=c.redMul(o);return this.curve.point(M,B,F,R)};Yt.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),n,a,o,c,m,M;if(this.curve.twisted){c=this.curve._mulA(r);var B=c.redAdd(i);this.zOne?(n=e.redSub(r).redSub(i).redMul(B.redSub(this.curve.two)),a=B.redMul(c.redSub(i)),o=B.redSqr().redSub(B).redSub(B)):(m=this.z.redSqr(),M=B.redSub(m).redISub(m),n=e.redSub(r).redISub(i).redMul(M),a=B.redMul(c.redSub(i)),o=B.redMul(M))}else c=r.redAdd(i),m=this.curve._mulC(this.z).redSqr(),M=c.redSub(m).redSub(m),n=this.curve._mulC(e.redISub(c)).redMul(M),a=this.curve._mulC(c).redMul(r.redISub(i)),o=c.redMul(M);return this.curve.point(n,a,o)};Yt.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};Yt.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),i=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),n=this.t.redMul(this.curve.dd).redMul(e.t),a=this.z.redMul(e.z.redAdd(e.z)),o=i.redSub(r),c=a.redSub(n),m=a.redAdd(n),M=i.redAdd(r),B=o.redMul(c),R=m.redMul(M),F=o.redMul(M),N=c.redMul(m);return this.curve.point(B,R,N,F)};Yt.prototype._projAdd=function(e){var r=this.z.redMul(e.z),i=r.redSqr(),n=this.x.redMul(e.x),a=this.y.redMul(e.y),o=this.curve.d.redMul(n).redMul(a),c=i.redSub(o),m=i.redAdd(o),M=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(n).redISub(a),B=r.redMul(c).redMul(M),R,F;return this.curve.twisted?(R=r.redMul(m).redMul(a.redSub(this.curve._mulA(n))),F=c.redMul(m)):(R=r.redMul(m).redMul(a.redSub(n)),F=this.curve._mulC(c).redMul(m)),this.curve.point(B,R,F)};Yt.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};Yt.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};Yt.prototype.mulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!1)};Yt.prototype.jmulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!0)};Yt.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};Yt.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Yt.prototype.getX=function(){return this.normalize(),this.x.fromRed()};Yt.prototype.getY=function(){return this.normalize(),this.y.fromRed()};Yt.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};Yt.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=e.clone(),n=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(n),this.x.cmp(r)===0)return!0}};Yt.prototype.toP=Yt.prototype.normalize;Yt.prototype.mixedAdd=Yt.prototype.add});var lp=P(l7=>{"use strict";g();var oh=l7;oh.base=As();oh.short=a7();oh.mont=u7();oh.edwards=d7()});var Si=P(Gt=>{"use strict";g();var vL=zr(),bL=gt();Gt.inherits=bL;function gL(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function yL(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),n=0;n>6|192,r[i++]=a&63|128):gL(t,n)?(a=65536+((a&1023)<<10)+(t.charCodeAt(++n)&1023),r[i++]=a>>18|240,r[i++]=a>>12&63|128,r[i++]=a>>6&63|128,r[i++]=a&63|128):(r[i++]=a>>12|224,r[i++]=a>>6&63|128,r[i++]=a&63|128)}else for(n=0;n>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}Gt.htonl=p7;function xL(t,e){for(var r="",i=0;i>>0}return a}Gt.join32=wL;function AL(t,e){for(var r=new Array(t.length*4),i=0,n=0;i>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=a&255):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=a&255)}return r}Gt.split32=AL;function _L(t,e){return t>>>e|t<<32-e}Gt.rotr32=_L;function IL(t,e){return t<>>32-e}Gt.rotl32=IL;function EL(t,e){return t+e>>>0}Gt.sum32=EL;function ML(t,e,r){return t+e+r>>>0}Gt.sum32_3=ML;function SL(t,e,r,i){return t+e+r+i>>>0}Gt.sum32_4=SL;function CL(t,e,r,i,n){return t+e+r+i+n>>>0}Gt.sum32_5=CL;function BL(t,e,r,i){var n=t[e],a=t[e+1],o=i+a>>>0,c=(o>>0,t[e+1]=o}Gt.sum64=BL;function qL(t,e,r,i){var n=e+i>>>0,a=(n>>0}Gt.sum64_hi=qL;function RL(t,e,r,i){var n=e+i;return n>>>0}Gt.sum64_lo=RL;function TL(t,e,r,i,n,a,o,c){var m=0,M=e;M=M+i>>>0,m+=M>>0,m+=M>>0,m+=M>>0}Gt.sum64_4_hi=TL;function OL(t,e,r,i,n,a,o,c){var m=e+i+a+c;return m>>>0}Gt.sum64_4_lo=OL;function DL(t,e,r,i,n,a,o,c,m,M){var B=0,R=e;R=R+i>>>0,B+=R>>0,B+=R>>0,B+=R>>0,B+=R>>0}Gt.sum64_5_hi=DL;function PL(t,e,r,i,n,a,o,c,m,M){var B=e+i+a+c+M;return B>>>0}Gt.sum64_5_lo=PL;function UL(t,e,r){var i=e<<32-r|t>>>r;return i>>>0}Gt.rotr64_hi=UL;function kL(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Gt.rotr64_lo=kL;function FL(t,e,r){return t>>>r}Gt.shr64_hi=FL;function LL(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Gt.shr64_lo=LL});var ka=P(y7=>{"use strict";g();var g7=Si(),NL=zr();function sh(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}y7.BlockHash=sh;sh.prototype.update=function(e,r){if(e=g7.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var i=e.length%this._delta8;this.pending=e.slice(e.length-i,e.length),this.pending.length===0&&(this.pending=null),e=g7.join32(e,0,e.length-i,this.endian);for(var n=0;n>>24&255,n[a++]=e>>>16&255,n[a++]=e>>>8&255,n[a++]=e&255}else for(n[a++]=e&255,n[a++]=e>>>8&255,n[a++]=e>>>16&255,n[a++]=e>>>24&255,n[a++]=0,n[a++]=0,n[a++]=0,n[a++]=0,o=8;o{"use strict";g();var QL=Si(),Vi=QL.rotr32;function KL(t,e,r,i){if(t===0)return m7(e,r,i);if(t===1||t===3)return w7(e,r,i);if(t===2)return x7(e,r,i)}Mn.ft_1=KL;function m7(t,e,r){return t&e^~t&r}Mn.ch32=m7;function x7(t,e,r){return t&e^t&r^e&r}Mn.maj32=x7;function w7(t,e,r){return t^e^r}Mn.p32=w7;function jL(t){return Vi(t,2)^Vi(t,13)^Vi(t,22)}Mn.s0_256=jL;function HL(t){return Vi(t,6)^Vi(t,11)^Vi(t,25)}Mn.s1_256=HL;function zL(t){return Vi(t,7)^Vi(t,18)^t>>>3}Mn.g0_256=zL;function GL(t){return Vi(t,17)^Vi(t,19)^t>>>10}Mn.g1_256=GL});var I7=P((Mte,_7)=>{"use strict";g();var Fa=Si(),YL=ka(),VL=pp(),vp=Fa.rotl32,_s=Fa.sum32,$L=Fa.sum32_5,WL=VL.ft_1,A7=YL.BlockHash,JL=[1518500249,1859775393,2400959708,3395469782];function $i(){if(!(this instanceof $i))return new $i;A7.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Fa.inherits($i,A7);_7.exports=$i;$i.blockSize=512;$i.outSize=160;$i.hmacStrength=80;$i.padLength=64;$i.prototype._update=function(e,r){for(var i=this.W,n=0;n<16;n++)i[n]=e[r+n];for(;n{"use strict";g();var La=Si(),XL=ka(),Na=pp(),ZL=zr(),Ci=La.sum32,eN=La.sum32_4,tN=La.sum32_5,rN=Na.ch32,iN=Na.maj32,nN=Na.s0_256,fN=Na.s1_256,aN=Na.g0_256,oN=Na.g1_256,E7=XL.BlockHash,sN=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Wi(){if(!(this instanceof Wi))return new Wi;E7.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=sN,this.W=new Array(64)}La.inherits(Wi,E7);M7.exports=Wi;Wi.blockSize=512;Wi.outSize=256;Wi.hmacStrength=192;Wi.padLength=64;Wi.prototype._update=function(e,r){for(var i=this.W,n=0;n<16;n++)i[n]=e[r+n];for(;n{"use strict";g();var gp=Si(),S7=bp();function Sn(){if(!(this instanceof Sn))return new Sn;S7.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}gp.inherits(Sn,S7);C7.exports=Sn;Sn.blockSize=512;Sn.outSize=224;Sn.hmacStrength=192;Sn.padLength=64;Sn.prototype._digest=function(e){return e==="hex"?gp.toHex32(this.h.slice(0,7),"big"):gp.split32(this.h.slice(0,7),"big")}});var xp=P((Tte,O7)=>{"use strict";g();var Fr=Si(),uN=ka(),hN=zr(),Ji=Fr.rotr64_hi,Xi=Fr.rotr64_lo,q7=Fr.shr64_hi,R7=Fr.shr64_lo,rf=Fr.sum64,yp=Fr.sum64_hi,mp=Fr.sum64_lo,cN=Fr.sum64_4_hi,dN=Fr.sum64_4_lo,lN=Fr.sum64_5_hi,pN=Fr.sum64_5_lo,T7=uN.BlockHash,vN=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Bi(){if(!(this instanceof Bi))return new Bi;T7.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=vN,this.W=new Array(160)}Fr.inherits(Bi,T7);O7.exports=Bi;Bi.blockSize=1024;Bi.outSize=512;Bi.hmacStrength=192;Bi.padLength=128;Bi.prototype._prepareBlock=function(e,r){for(var i=this.W,n=0;n<32;n++)i[n]=e[r+n];for(;n{"use strict";g();var wp=Si(),D7=xp();function Cn(){if(!(this instanceof Cn))return new Cn;D7.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}wp.inherits(Cn,D7);P7.exports=Cn;Cn.blockSize=1024;Cn.outSize=384;Cn.hmacStrength=192;Cn.padLength=128;Cn.prototype._digest=function(e){return e==="hex"?wp.toHex32(this.h.slice(0,12),"big"):wp.split32(this.h.slice(0,12),"big")}});var k7=P(Qa=>{"use strict";g();Qa.sha1=I7();Qa.sha224=B7();Qa.sha256=bp();Qa.sha384=U7();Qa.sha512=xp()});var j7=P(K7=>{"use strict";g();var Yf=Si(),CN=ka(),uh=Yf.rotl32,F7=Yf.sum32,Is=Yf.sum32_3,L7=Yf.sum32_4,Q7=CN.BlockHash;function Zi(){if(!(this instanceof Zi))return new Zi;Q7.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Yf.inherits(Zi,Q7);K7.ripemd160=Zi;Zi.blockSize=512;Zi.outSize=160;Zi.hmacStrength=192;Zi.padLength=64;Zi.prototype._update=function(e,r){for(var i=this.h[0],n=this.h[1],a=this.h[2],o=this.h[3],c=this.h[4],m=i,M=n,B=a,R=o,F=c,N=0;N<80;N++){var G=F7(uh(L7(i,N7(N,n,a,o),e[RN[N]+r],BN(N)),ON[N]),c);i=c,c=o,o=uh(a,10),a=n,n=G,G=F7(uh(L7(m,N7(79-N,M,B,R),e[TN[N]+r],qN(N)),DN[N]),F),m=F,F=R,R=uh(B,10),B=M,M=G}G=Is(this.h[1],a,R),this.h[1]=Is(this.h[2],o,F),this.h[2]=Is(this.h[3],c,m),this.h[3]=Is(this.h[4],i,M),this.h[4]=Is(this.h[0],n,B),this.h[0]=G};Zi.prototype._digest=function(e){return e==="hex"?Yf.toHex32(this.h,"little"):Yf.split32(this.h,"little")};function N7(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function BN(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function qN(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var RN=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],TN=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],ON=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],DN=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var z7=P((Nte,H7)=>{"use strict";g();var PN=Si(),UN=zr();function Ka(t,e,r){if(!(this instanceof Ka))return new Ka(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(PN.toArray(e,r))}H7.exports=Ka;Ka.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),UN(e.length<=this.blockSize);for(var r=e.length;r{g();var yr=G7;yr.utils=Si();yr.common=ka();yr.sha=k7();yr.ripemd=j7();yr.hmac=z7();yr.sha1=yr.sha.sha1;yr.sha256=yr.sha.sha256;yr.sha224=yr.sha.sha224;yr.sha384=yr.sha.sha384;yr.sha512=yr.sha.sha512;yr.ripemd160=yr.ripemd.ripemd160});var V7=P((Hte,Y7)=>{g();Y7.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var ch=P(J7=>{"use strict";g();var _p=J7,nf=hh(),Ap=lp(),kN=Gr(),$7=kN.assert;function W7(t){t.type==="short"?this.curve=new Ap.short(t):t.type==="edwards"?this.curve=new Ap.edwards(t):this.curve=new Ap.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,$7(this.g.validate(),"Invalid curve"),$7(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}_p.PresetCurve=W7;function ff(t,e){Object.defineProperty(_p,t,{configurable:!0,enumerable:!0,get:function(){var r=new W7(e);return Object.defineProperty(_p,t,{configurable:!0,enumerable:!0,value:r}),r}})}ff("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:nf.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});ff("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:nf.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});ff("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:nf.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});ff("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:nf.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});ff("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:nf.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});ff("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:nf.sha256,gRed:!1,g:["9"]});ff("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:nf.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var Ip;try{Ip=V7()}catch{Ip=void 0}ff("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:nf.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",Ip]})});var eA=P((Vte,Z7)=>{"use strict";g();var FN=hh(),Vf=cp(),X7=zr();function af(t){if(!(this instanceof af))return new af(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Vf.toArray(t.entropy,t.entropyEnc||"hex"),r=Vf.toArray(t.nonce,t.nonceEnc||"hex"),i=Vf.toArray(t.pers,t.persEnc||"hex");X7(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}Z7.exports=af;af.prototype._init=function(e,r,i){var n=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var a=0;a=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1};af.prototype.generate=function(e,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=Vf.toArray(i,n||"hex"),this._update(i));for(var a=[];a.length{"use strict";g();var LN=sr(),NN=Gr(),Ep=NN.assert;function Sr(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}tA.exports=Sr;Sr.fromPublic=function(e,r,i){return r instanceof Sr?r:new Sr(e,{pub:r,pubEnc:i})};Sr.fromPrivate=function(e,r,i){return r instanceof Sr?r:new Sr(e,{priv:r,privEnc:i})};Sr.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};Sr.prototype.getPublic=function(e,r){return typeof e=="string"&&(r=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,e):this.pub};Sr.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};Sr.prototype._importPrivate=function(e,r){this.priv=new LN(e,r||16),this.priv=this.priv.umod(this.ec.curve.n)};Sr.prototype._importPublic=function(e,r){if(e.x||e.y){this.ec.curve.type==="mont"?Ep(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&Ep(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,r)};Sr.prototype.derive=function(e){return e.validate()||Ep(e.validate(),"public point not validated"),e.mul(this.priv).getX()};Sr.prototype.sign=function(e,r,i){return this.ec.sign(e,this,r,i)};Sr.prototype.verify=function(e,r){return this.ec.verify(e,r,this)};Sr.prototype.inspect=function(){return""}});var fA=P((Xte,nA)=>{"use strict";g();var dh=sr(),Cp=Gr(),QN=Cp.assert;function lh(t,e){if(t instanceof lh)return t;this._importDER(t,e)||(QN(t.r&&t.s,"Signature without r or s"),this.r=new dh(t.r,16),this.s=new dh(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}nA.exports=lh;function KN(){this.place=0}function Mp(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,a=0,o=e.place;a>>=0;return n<=127?!1:(e.place=o,n)}function iA(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}lh.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=iA(r),i=iA(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];Sp(n,r.length),n=n.concat(r),n.push(2),Sp(n,i.length);var a=n.concat(i),o=[48];return Sp(o,a.length),o=o.concat(a),Cp.encode(o,e)}});var uA=P((ere,sA)=>{"use strict";g();var $f=sr(),aA=eA(),jN=Gr(),Bp=ch(),HN=Ju(),oA=jN.assert,qp=rA(),ph=fA();function hi(t){if(!(this instanceof hi))return new hi(t);typeof t=="string"&&(oA(Object.prototype.hasOwnProperty.call(Bp,t),"Unknown curve "+t),t=Bp[t]),t instanceof Bp.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}sA.exports=hi;hi.prototype.keyPair=function(e){return new qp(this,e)};hi.prototype.keyFromPrivate=function(e,r){return qp.fromPrivate(this,e,r)};hi.prototype.keyFromPublic=function(e,r){return qp.fromPublic(this,e,r)};hi.prototype.genKeyPair=function(e){e||(e={});for(var r=new aA({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||HN(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new $f(2));;){var a=new $f(r.generate(i));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}};hi.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e};hi.prototype.sign=function(e,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new $f(e,16));for(var a=this.n.byteLength(),o=r.getPrivate().toArray("be",a),c=e.toArray("be",a),m=new aA({hash:this.hash,entropy:o,nonce:c,pers:n.pers,persEnc:n.persEnc||"utf8"}),M=this.n.sub(new $f(1)),B=0;;B++){var R=n.k?n.k(B):new $f(m.generate(this.n.byteLength()));if(R=this._truncateToN(R,!0),!(R.cmpn(1)<=0||R.cmp(M)>=0)){var F=this.g.mul(R);if(!F.isInfinity()){var N=F.getX(),G=N.umod(this.n);if(G.cmpn(0)!==0){var Z=R.invm(this.n).mul(G.mul(r.getPrivate()).iadd(e));if(Z=Z.umod(this.n),Z.cmpn(0)!==0){var ie=(F.getY().isOdd()?1:0)|(N.cmp(G)!==0?2:0);return n.canonical&&Z.cmp(this.nh)>0&&(Z=this.n.sub(Z),ie^=1),new ph({r:G,s:Z,recoveryParam:ie})}}}}}};hi.prototype.verify=function(e,r,i,n){e=this._truncateToN(new $f(e,16)),i=this.keyFromPublic(i,n),r=new ph(r,"hex");var a=r.r,o=r.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0||o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var c=o.invm(this.n),m=c.mul(e).umod(this.n),M=c.mul(a).umod(this.n),B;return this.curve._maxwellTrick?(B=this.g.jmulAdd(m,i.getPublic(),M),B.isInfinity()?!1:B.eqXToP(a)):(B=this.g.mulAdd(m,i.getPublic(),M),B.isInfinity()?!1:B.getX().umod(this.n).cmp(a)===0)};hi.prototype.recoverPubKey=function(t,e,r,i){oA((3&r)===r,"The recovery param is more than two bits"),e=new ph(e,i);var n=this.n,a=new $f(t),o=e.r,c=e.s,m=r&1,M=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&M)throw new Error("Unable to find sencond key candinate");M?o=this.curve.pointFromX(o.add(this.curve.n),m):o=this.curve.pointFromX(o,m);var B=e.r.invm(n),R=n.sub(a).mul(B).umod(n),F=c.mul(B).umod(n);return this.g.mulAdd(R,o,F)};hi.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new ph(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(t,e,n)}catch{continue}if(a.eq(r))return n}throw new Error("Unable to find valid recovery factor")}});var lA=P((rre,dA)=>{"use strict";g();var Es=Gr(),cA=Es.assert,hA=Es.parseBytes,ja=Es.cachedProperty;function pr(t,e){this.eddsa=t,this._secret=hA(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=hA(e.pub)}pr.fromPublic=function(e,r){return r instanceof pr?r:new pr(e,{pub:r})};pr.fromSecret=function(e,r){return r instanceof pr?r:new pr(e,{secret:r})};pr.prototype.secret=function(){return this._secret};ja(pr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});ja(pr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});ja(pr,"privBytes",function(){var e=this.eddsa,r=this.hash(),i=e.encodingLength-1,n=r.slice(0,e.encodingLength);return n[0]&=248,n[i]&=127,n[i]|=64,n});ja(pr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});ja(pr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});ja(pr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});pr.prototype.sign=function(e){return cA(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};pr.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)};pr.prototype.getSecret=function(e){return cA(this._secret,"KeyPair is public only"),Es.encode(this.secret(),e)};pr.prototype.getPublic=function(e){return Es.encode(this.pubBytes(),e)};dA.exports=pr});var vA=P((nre,pA)=>{"use strict";g();var zN=sr(),vh=Gr(),GN=vh.assert,bh=vh.cachedProperty,YN=vh.parseBytes;function Wf(t,e){this.eddsa=t,typeof e!="object"&&(e=YN(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),GN(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof zN&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}bh(Wf,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});bh(Wf,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});bh(Wf,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});bh(Wf,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});Wf.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Wf.prototype.toHex=function(){return vh.encode(this.toBytes(),"hex").toUpperCase()};pA.exports=Wf});var xA=P((are,mA)=>{"use strict";g();var VN=hh(),$N=ch(),Ha=Gr(),WN=Ha.assert,gA=Ha.parseBytes,yA=lA(),bA=vA();function Lr(t){if(WN(t==="ed25519","only tested with ed25519 so far"),!(this instanceof Lr))return new Lr(t);t=$N[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=VN.sha512}mA.exports=Lr;Lr.prototype.sign=function(e,r){e=gA(e);var i=this.keyFromSecret(r),n=this.hashInt(i.messagePrefix(),e),a=this.g.mul(n),o=this.encodePoint(a),c=this.hashInt(o,i.pubBytes(),e).mul(i.priv()),m=n.add(c).umod(this.curve.n);return this.makeSignature({R:a,S:m,Rencoded:o})};Lr.prototype.verify=function(e,r,i){e=gA(e),r=this.makeSignature(r);var n=this.keyFromPublic(i),a=this.hashInt(r.Rencoded(),n.pubBytes(),e),o=this.g.mul(r.S()),c=r.R().add(n.pub().mul(a));return c.eq(o)};Lr.prototype.hashInt=function(){for(var e=this.hash(),r=0;r{"use strict";g();var Jf=wA;Jf.version=Zw().version;Jf.utils=Gr();Jf.rand=Ju();Jf.curve=lp();Jf.curves=ch();Jf.ec=uA();Jf.eddsa=xA()});var Tp=P((AA,Rp)=>{g();(function(t,e){"use strict";function r(p,f){if(!p)throw new Error(f||"Assertion failed")}function i(p,f){p.super_=f;var s=function(){};s.prototype=f.prototype,p.prototype=new s,p.prototype.constructor=p}function n(p,f,s){if(n.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((f==="le"||f==="be")&&(s=f,f=10),this._init(p||0,f||10,s||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=Wu().Buffer}catch{}n.isBN=function(f){return f instanceof n?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===n.wordSize&&Array.isArray(f.words)},n.max=function(f,s){return f.cmp(s)>0?f:s},n.min=function(f,s){return f.cmp(s)<0?f:s},n.prototype._init=function(f,s,v){if(typeof f=="number")return this._initNumber(f,s,v);if(typeof f=="object")return this._initArray(f,s,v);s==="hex"&&(s=16),r(s===(s|0)&&s>=2&&s<=36),f=f.toString().replace(/\s+/g,"");var l=0;f[0]==="-"&&(l++,this.negative=1),l=0;l-=3)A=f[l]|f[l-1]<<8|f[l-2]<<16,this.words[h]|=A<>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);else if(v==="le")for(l=0,h=0;l>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);return this._strip()};function o(p,f){var s=p.charCodeAt(f);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;r(!1,"Invalid character in "+p)}function c(p,f,s){var v=o(p,s);return s-1>=f&&(v|=o(p,s-1)<<4),v}n.prototype._parseHex=function(f,s,v){this.length=Math.ceil((f.length-s)/6),this.words=new Array(this.length);for(var l=0;l=s;l-=2)q=c(f,s,l)<=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8;else{var _=f.length-s;for(l=_%2===0?s+1:s;l=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8}this._strip()};function m(p,f,s,v){for(var l=0,h=0,A=Math.min(p.length,s),q=f;q=49?h=_-49+10:_>=17?h=_-17+10:h=_,r(_>=0&&h1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=B}catch{n.prototype.inspect=B}else n.prototype.inspect=B;function B(){return(this.red?""}var R=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],F=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(f,s){f=f||10,s=s|0||1;var v;if(f===16||f==="hex"){v="";for(var l=0,h=0,A=0;A>>24-l&16777215,h!==0||A!==this.length-1?v=R[6-_.length]+_+v:v=_+v,l+=2,l>=26&&(l-=26,A--)}for(h!==0&&(v=h.toString(16)+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}if(f===(f|0)&&f>=2&&f<=36){var u=F[f],I=N[f];v="";var j=this.clone();for(j.negative=0;!j.isZero();){var S=j.modrn(I).toString(f);j=j.idivn(I),j.isZero()?v=S+v:v=R[u-S.length]+S+v}for(this.isZero()&&(v="0"+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},n.prototype.toJSON=function(){return this.toString(16,2)},a&&(n.prototype.toBuffer=function(f,s){return this.toArrayLike(a,f,s)}),n.prototype.toArray=function(f,s){return this.toArrayLike(Array,f,s)};var G=function(f,s){return f.allocUnsafe?f.allocUnsafe(s):new f(s)};n.prototype.toArrayLike=function(f,s,v){this._strip();var l=this.byteLength(),h=v||Math.max(1,l);r(l<=h,"byte array longer than desired length"),r(h>0,"Requested array length <= 0");var A=G(f,h),q=s==="le"?"LE":"BE";return this["_toArrayLike"+q](A,l),A},n.prototype._toArrayLikeLE=function(f,s){for(var v=0,l=0,h=0,A=0;h>8&255),v>16&255),A===6?(v>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v=0&&(f[v--]=q>>8&255),v>=0&&(f[v--]=q>>16&255),A===6?(v>=0&&(f[v--]=q>>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v>=0)for(f[v--]=l;v>=0;)f[v--]=0},Math.clz32?n.prototype._countBits=function(f){return 32-Math.clz32(f)}:n.prototype._countBits=function(f){var s=f,v=0;return s>=4096&&(v+=13,s>>>=13),s>=64&&(v+=7,s>>>=7),s>=8&&(v+=4,s>>>=4),s>=2&&(v+=2,s>>>=2),v+s},n.prototype._zeroBits=function(f){if(f===0)return 26;var s=f,v=0;return(s&8191)===0&&(v+=13,s>>>=13),(s&127)===0&&(v+=7,s>>>=7),(s&15)===0&&(v+=4,s>>>=4),(s&3)===0&&(v+=2,s>>>=2),(s&1)===0&&v++,v},n.prototype.bitLength=function(){var f=this.words[this.length-1],s=this._countBits(f);return(this.length-1)*26+s};function Z(p){for(var f=new Array(p.bitLength()),s=0;s>>l&1}return f}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,s=0;sf.length?this.clone().ior(f):f.clone().ior(this)},n.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},n.prototype.iuand=function(f){var s;this.length>f.length?s=f:s=this;for(var v=0;vf.length?this.clone().iand(f):f.clone().iand(this)},n.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},n.prototype.iuxor=function(f){var s,v;this.length>f.length?(s=this,v=f):(s=f,v=this);for(var l=0;lf.length?this.clone().ixor(f):f.clone().ixor(this)},n.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},n.prototype.inotn=function(f){r(typeof f=="number"&&f>=0);var s=Math.ceil(f/26)|0,v=f%26;this._expand(s),v>0&&s--;for(var l=0;l0&&(this.words[l]=~this.words[l]&67108863>>26-v),this._strip()},n.prototype.notn=function(f){return this.clone().inotn(f)},n.prototype.setn=function(f,s){r(typeof f=="number"&&f>=0);var v=f/26|0,l=f%26;return this._expand(v+1),s?this.words[v]=this.words[v]|1<f.length?(v=this,l=f):(v=f,l=this);for(var h=0,A=0;A>>26;for(;h!==0&&A>>26;if(this.length=v.length,h!==0)this.words[this.length]=h,this.length++;else if(v!==this)for(;Af.length?this.clone().iadd(f):f.clone().iadd(this)},n.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var s=this.iadd(f);return f.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var v=this.cmp(f);if(v===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,h;v>0?(l=this,h=f):(l=f,h=this);for(var A=0,q=0;q>26,this.words[q]=s&67108863;for(;A!==0&&q>26,this.words[q]=s&67108863;if(A===0&&q>>26,j=_&67108863,S=Math.min(u,f.length-1),L=Math.max(0,u-p.length+1);L<=S;L++){var Q=u-L|0;l=p.words[Q]|0,h=f.words[L]|0,A=l*h+j,I+=A/67108864|0,j=A&67108863}s.words[u]=j|0,_=I|0}return _!==0?s.words[u]=_|0:s.length--,s._strip()}var fe=function(f,s,v){var l=f.words,h=s.words,A=v.words,q=0,_,u,I,j=l[0]|0,S=j&8191,L=j>>>13,Q=l[1]|0,z=Q&8191,J=Q>>>13,he=l[2]|0,W=he&8191,te=he>>>13,Qe=l[3]|0,ne=Qe&8191,ye=Qe>>>13,Rt=l[4]|0,Pe=Rt&8191,We=Rt>>>13,It=l[5]|0,Ue=It&8191,tt=It>>>13,St=l[6]|0,Re=St&8191,rt=St>>>13,Et=l[7]|0,Oe=Et&8191,it=Et>>>13,Tt=l[8]|0,ke=Tt&8191,nt=Tt>>>13,Ct=l[9]|0,Te=Ct&8191,Ze=Ct>>>13,wt=h[0]|0,Be=wt&8191,et=wt>>>13,_t=h[1]|0,qe=_t&8191,ft=_t>>>13,Ot=h[2]|0,Fe=Ot&8191,ut=Ot>>>13,lt=h[3]|0,Se=lt&8191,Xe=lt>>>13,Bt=h[4]|0,De=Bt&8191,at=Bt>>>13,Ut=h[5]|0,_e=Ut&8191,ot=Ut>>>13,C=h[6]|0,T=C&8191,O=C>>>13,w=h[7]|0,D=w&8191,H=w>>>13,Y=h[8]|0,V=Y&8191,ee=Y>>>13,Ee=h[9]|0,ae=Ee&8191,xe=Ee>>>13;v.negative=f.negative^s.negative,v.length=19,_=Math.imul(S,Be),u=Math.imul(S,et),u=u+Math.imul(L,Be)|0,I=Math.imul(L,et);var we=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(we>>>26)|0,we&=67108863,_=Math.imul(z,Be),u=Math.imul(z,et),u=u+Math.imul(J,Be)|0,I=Math.imul(J,et),_=_+Math.imul(S,qe)|0,u=u+Math.imul(S,ft)|0,u=u+Math.imul(L,qe)|0,I=I+Math.imul(L,ft)|0;var je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(je>>>26)|0,je&=67108863,_=Math.imul(W,Be),u=Math.imul(W,et),u=u+Math.imul(te,Be)|0,I=Math.imul(te,et),_=_+Math.imul(z,qe)|0,u=u+Math.imul(z,ft)|0,u=u+Math.imul(J,qe)|0,I=I+Math.imul(J,ft)|0,_=_+Math.imul(S,Fe)|0,u=u+Math.imul(S,ut)|0,u=u+Math.imul(L,Fe)|0,I=I+Math.imul(L,ut)|0;var ze=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(ze>>>26)|0,ze&=67108863,_=Math.imul(ne,Be),u=Math.imul(ne,et),u=u+Math.imul(ye,Be)|0,I=Math.imul(ye,et),_=_+Math.imul(W,qe)|0,u=u+Math.imul(W,ft)|0,u=u+Math.imul(te,qe)|0,I=I+Math.imul(te,ft)|0,_=_+Math.imul(z,Fe)|0,u=u+Math.imul(z,ut)|0,u=u+Math.imul(J,Fe)|0,I=I+Math.imul(J,ut)|0,_=_+Math.imul(S,Se)|0,u=u+Math.imul(S,Xe)|0,u=u+Math.imul(L,Se)|0,I=I+Math.imul(L,Xe)|0;var Ye=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,_=Math.imul(Pe,Be),u=Math.imul(Pe,et),u=u+Math.imul(We,Be)|0,I=Math.imul(We,et),_=_+Math.imul(ne,qe)|0,u=u+Math.imul(ne,ft)|0,u=u+Math.imul(ye,qe)|0,I=I+Math.imul(ye,ft)|0,_=_+Math.imul(W,Fe)|0,u=u+Math.imul(W,ut)|0,u=u+Math.imul(te,Fe)|0,I=I+Math.imul(te,ut)|0,_=_+Math.imul(z,Se)|0,u=u+Math.imul(z,Xe)|0,u=u+Math.imul(J,Se)|0,I=I+Math.imul(J,Xe)|0,_=_+Math.imul(S,De)|0,u=u+Math.imul(S,at)|0,u=u+Math.imul(L,De)|0,I=I+Math.imul(L,at)|0;var Ge=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,_=Math.imul(Ue,Be),u=Math.imul(Ue,et),u=u+Math.imul(tt,Be)|0,I=Math.imul(tt,et),_=_+Math.imul(Pe,qe)|0,u=u+Math.imul(Pe,ft)|0,u=u+Math.imul(We,qe)|0,I=I+Math.imul(We,ft)|0,_=_+Math.imul(ne,Fe)|0,u=u+Math.imul(ne,ut)|0,u=u+Math.imul(ye,Fe)|0,I=I+Math.imul(ye,ut)|0,_=_+Math.imul(W,Se)|0,u=u+Math.imul(W,Xe)|0,u=u+Math.imul(te,Se)|0,I=I+Math.imul(te,Xe)|0,_=_+Math.imul(z,De)|0,u=u+Math.imul(z,at)|0,u=u+Math.imul(J,De)|0,I=I+Math.imul(J,at)|0,_=_+Math.imul(S,_e)|0,u=u+Math.imul(S,ot)|0,u=u+Math.imul(L,_e)|0,I=I+Math.imul(L,ot)|0;var Ve=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,_=Math.imul(Re,Be),u=Math.imul(Re,et),u=u+Math.imul(rt,Be)|0,I=Math.imul(rt,et),_=_+Math.imul(Ue,qe)|0,u=u+Math.imul(Ue,ft)|0,u=u+Math.imul(tt,qe)|0,I=I+Math.imul(tt,ft)|0,_=_+Math.imul(Pe,Fe)|0,u=u+Math.imul(Pe,ut)|0,u=u+Math.imul(We,Fe)|0,I=I+Math.imul(We,ut)|0,_=_+Math.imul(ne,Se)|0,u=u+Math.imul(ne,Xe)|0,u=u+Math.imul(ye,Se)|0,I=I+Math.imul(ye,Xe)|0,_=_+Math.imul(W,De)|0,u=u+Math.imul(W,at)|0,u=u+Math.imul(te,De)|0,I=I+Math.imul(te,at)|0,_=_+Math.imul(z,_e)|0,u=u+Math.imul(z,ot)|0,u=u+Math.imul(J,_e)|0,I=I+Math.imul(J,ot)|0,_=_+Math.imul(S,T)|0,u=u+Math.imul(S,O)|0,u=u+Math.imul(L,T)|0,I=I+Math.imul(L,O)|0;var Je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Je>>>26)|0,Je&=67108863,_=Math.imul(Oe,Be),u=Math.imul(Oe,et),u=u+Math.imul(it,Be)|0,I=Math.imul(it,et),_=_+Math.imul(Re,qe)|0,u=u+Math.imul(Re,ft)|0,u=u+Math.imul(rt,qe)|0,I=I+Math.imul(rt,ft)|0,_=_+Math.imul(Ue,Fe)|0,u=u+Math.imul(Ue,ut)|0,u=u+Math.imul(tt,Fe)|0,I=I+Math.imul(tt,ut)|0,_=_+Math.imul(Pe,Se)|0,u=u+Math.imul(Pe,Xe)|0,u=u+Math.imul(We,Se)|0,I=I+Math.imul(We,Xe)|0,_=_+Math.imul(ne,De)|0,u=u+Math.imul(ne,at)|0,u=u+Math.imul(ye,De)|0,I=I+Math.imul(ye,at)|0,_=_+Math.imul(W,_e)|0,u=u+Math.imul(W,ot)|0,u=u+Math.imul(te,_e)|0,I=I+Math.imul(te,ot)|0,_=_+Math.imul(z,T)|0,u=u+Math.imul(z,O)|0,u=u+Math.imul(J,T)|0,I=I+Math.imul(J,O)|0,_=_+Math.imul(S,D)|0,u=u+Math.imul(S,H)|0,u=u+Math.imul(L,D)|0,I=I+Math.imul(L,H)|0;var $e=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($e>>>26)|0,$e&=67108863,_=Math.imul(ke,Be),u=Math.imul(ke,et),u=u+Math.imul(nt,Be)|0,I=Math.imul(nt,et),_=_+Math.imul(Oe,qe)|0,u=u+Math.imul(Oe,ft)|0,u=u+Math.imul(it,qe)|0,I=I+Math.imul(it,ft)|0,_=_+Math.imul(Re,Fe)|0,u=u+Math.imul(Re,ut)|0,u=u+Math.imul(rt,Fe)|0,I=I+Math.imul(rt,ut)|0,_=_+Math.imul(Ue,Se)|0,u=u+Math.imul(Ue,Xe)|0,u=u+Math.imul(tt,Se)|0,I=I+Math.imul(tt,Xe)|0,_=_+Math.imul(Pe,De)|0,u=u+Math.imul(Pe,at)|0,u=u+Math.imul(We,De)|0,I=I+Math.imul(We,at)|0,_=_+Math.imul(ne,_e)|0,u=u+Math.imul(ne,ot)|0,u=u+Math.imul(ye,_e)|0,I=I+Math.imul(ye,ot)|0,_=_+Math.imul(W,T)|0,u=u+Math.imul(W,O)|0,u=u+Math.imul(te,T)|0,I=I+Math.imul(te,O)|0,_=_+Math.imul(z,D)|0,u=u+Math.imul(z,H)|0,u=u+Math.imul(J,D)|0,I=I+Math.imul(J,H)|0,_=_+Math.imul(S,V)|0,u=u+Math.imul(S,ee)|0,u=u+Math.imul(L,V)|0,I=I+Math.imul(L,ee)|0;var Ie=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,_=Math.imul(Te,Be),u=Math.imul(Te,et),u=u+Math.imul(Ze,Be)|0,I=Math.imul(Ze,et),_=_+Math.imul(ke,qe)|0,u=u+Math.imul(ke,ft)|0,u=u+Math.imul(nt,qe)|0,I=I+Math.imul(nt,ft)|0,_=_+Math.imul(Oe,Fe)|0,u=u+Math.imul(Oe,ut)|0,u=u+Math.imul(it,Fe)|0,I=I+Math.imul(it,ut)|0,_=_+Math.imul(Re,Se)|0,u=u+Math.imul(Re,Xe)|0,u=u+Math.imul(rt,Se)|0,I=I+Math.imul(rt,Xe)|0,_=_+Math.imul(Ue,De)|0,u=u+Math.imul(Ue,at)|0,u=u+Math.imul(tt,De)|0,I=I+Math.imul(tt,at)|0,_=_+Math.imul(Pe,_e)|0,u=u+Math.imul(Pe,ot)|0,u=u+Math.imul(We,_e)|0,I=I+Math.imul(We,ot)|0,_=_+Math.imul(ne,T)|0,u=u+Math.imul(ne,O)|0,u=u+Math.imul(ye,T)|0,I=I+Math.imul(ye,O)|0,_=_+Math.imul(W,D)|0,u=u+Math.imul(W,H)|0,u=u+Math.imul(te,D)|0,I=I+Math.imul(te,H)|0,_=_+Math.imul(z,V)|0,u=u+Math.imul(z,ee)|0,u=u+Math.imul(J,V)|0,I=I+Math.imul(J,ee)|0,_=_+Math.imul(S,ae)|0,u=u+Math.imul(S,xe)|0,u=u+Math.imul(L,ae)|0,I=I+Math.imul(L,xe)|0;var Le=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Le>>>26)|0,Le&=67108863,_=Math.imul(Te,qe),u=Math.imul(Te,ft),u=u+Math.imul(Ze,qe)|0,I=Math.imul(Ze,ft),_=_+Math.imul(ke,Fe)|0,u=u+Math.imul(ke,ut)|0,u=u+Math.imul(nt,Fe)|0,I=I+Math.imul(nt,ut)|0,_=_+Math.imul(Oe,Se)|0,u=u+Math.imul(Oe,Xe)|0,u=u+Math.imul(it,Se)|0,I=I+Math.imul(it,Xe)|0,_=_+Math.imul(Re,De)|0,u=u+Math.imul(Re,at)|0,u=u+Math.imul(rt,De)|0,I=I+Math.imul(rt,at)|0,_=_+Math.imul(Ue,_e)|0,u=u+Math.imul(Ue,ot)|0,u=u+Math.imul(tt,_e)|0,I=I+Math.imul(tt,ot)|0,_=_+Math.imul(Pe,T)|0,u=u+Math.imul(Pe,O)|0,u=u+Math.imul(We,T)|0,I=I+Math.imul(We,O)|0,_=_+Math.imul(ne,D)|0,u=u+Math.imul(ne,H)|0,u=u+Math.imul(ye,D)|0,I=I+Math.imul(ye,H)|0,_=_+Math.imul(W,V)|0,u=u+Math.imul(W,ee)|0,u=u+Math.imul(te,V)|0,I=I+Math.imul(te,ee)|0,_=_+Math.imul(z,ae)|0,u=u+Math.imul(z,xe)|0,u=u+Math.imul(J,ae)|0,I=I+Math.imul(J,xe)|0;var Ae=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,_=Math.imul(Te,Fe),u=Math.imul(Te,ut),u=u+Math.imul(Ze,Fe)|0,I=Math.imul(Ze,ut),_=_+Math.imul(ke,Se)|0,u=u+Math.imul(ke,Xe)|0,u=u+Math.imul(nt,Se)|0,I=I+Math.imul(nt,Xe)|0,_=_+Math.imul(Oe,De)|0,u=u+Math.imul(Oe,at)|0,u=u+Math.imul(it,De)|0,I=I+Math.imul(it,at)|0,_=_+Math.imul(Re,_e)|0,u=u+Math.imul(Re,ot)|0,u=u+Math.imul(rt,_e)|0,I=I+Math.imul(rt,ot)|0,_=_+Math.imul(Ue,T)|0,u=u+Math.imul(Ue,O)|0,u=u+Math.imul(tt,T)|0,I=I+Math.imul(tt,O)|0,_=_+Math.imul(Pe,D)|0,u=u+Math.imul(Pe,H)|0,u=u+Math.imul(We,D)|0,I=I+Math.imul(We,H)|0,_=_+Math.imul(ne,V)|0,u=u+Math.imul(ne,ee)|0,u=u+Math.imul(ye,V)|0,I=I+Math.imul(ye,ee)|0,_=_+Math.imul(W,ae)|0,u=u+Math.imul(W,xe)|0,u=u+Math.imul(te,ae)|0,I=I+Math.imul(te,xe)|0;var Me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,_=Math.imul(Te,Se),u=Math.imul(Te,Xe),u=u+Math.imul(Ze,Se)|0,I=Math.imul(Ze,Xe),_=_+Math.imul(ke,De)|0,u=u+Math.imul(ke,at)|0,u=u+Math.imul(nt,De)|0,I=I+Math.imul(nt,at)|0,_=_+Math.imul(Oe,_e)|0,u=u+Math.imul(Oe,ot)|0,u=u+Math.imul(it,_e)|0,I=I+Math.imul(it,ot)|0,_=_+Math.imul(Re,T)|0,u=u+Math.imul(Re,O)|0,u=u+Math.imul(rt,T)|0,I=I+Math.imul(rt,O)|0,_=_+Math.imul(Ue,D)|0,u=u+Math.imul(Ue,H)|0,u=u+Math.imul(tt,D)|0,I=I+Math.imul(tt,H)|0,_=_+Math.imul(Pe,V)|0,u=u+Math.imul(Pe,ee)|0,u=u+Math.imul(We,V)|0,I=I+Math.imul(We,ee)|0,_=_+Math.imul(ne,ae)|0,u=u+Math.imul(ne,xe)|0,u=u+Math.imul(ye,ae)|0,I=I+Math.imul(ye,xe)|0;var Ce=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,_=Math.imul(Te,De),u=Math.imul(Te,at),u=u+Math.imul(Ze,De)|0,I=Math.imul(Ze,at),_=_+Math.imul(ke,_e)|0,u=u+Math.imul(ke,ot)|0,u=u+Math.imul(nt,_e)|0,I=I+Math.imul(nt,ot)|0,_=_+Math.imul(Oe,T)|0,u=u+Math.imul(Oe,O)|0,u=u+Math.imul(it,T)|0,I=I+Math.imul(it,O)|0,_=_+Math.imul(Re,D)|0,u=u+Math.imul(Re,H)|0,u=u+Math.imul(rt,D)|0,I=I+Math.imul(rt,H)|0,_=_+Math.imul(Ue,V)|0,u=u+Math.imul(Ue,ee)|0,u=u+Math.imul(tt,V)|0,I=I+Math.imul(tt,ee)|0,_=_+Math.imul(Pe,ae)|0,u=u+Math.imul(Pe,xe)|0,u=u+Math.imul(We,ae)|0,I=I+Math.imul(We,xe)|0;var me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(me>>>26)|0,me&=67108863,_=Math.imul(Te,_e),u=Math.imul(Te,ot),u=u+Math.imul(Ze,_e)|0,I=Math.imul(Ze,ot),_=_+Math.imul(ke,T)|0,u=u+Math.imul(ke,O)|0,u=u+Math.imul(nt,T)|0,I=I+Math.imul(nt,O)|0,_=_+Math.imul(Oe,D)|0,u=u+Math.imul(Oe,H)|0,u=u+Math.imul(it,D)|0,I=I+Math.imul(it,H)|0,_=_+Math.imul(Re,V)|0,u=u+Math.imul(Re,ee)|0,u=u+Math.imul(rt,V)|0,I=I+Math.imul(rt,ee)|0,_=_+Math.imul(Ue,ae)|0,u=u+Math.imul(Ue,xe)|0,u=u+Math.imul(tt,ae)|0,I=I+Math.imul(tt,xe)|0;var $=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($>>>26)|0,$&=67108863,_=Math.imul(Te,T),u=Math.imul(Te,O),u=u+Math.imul(Ze,T)|0,I=Math.imul(Ze,O),_=_+Math.imul(ke,D)|0,u=u+Math.imul(ke,H)|0,u=u+Math.imul(nt,D)|0,I=I+Math.imul(nt,H)|0,_=_+Math.imul(Oe,V)|0,u=u+Math.imul(Oe,ee)|0,u=u+Math.imul(it,V)|0,I=I+Math.imul(it,ee)|0,_=_+Math.imul(Re,ae)|0,u=u+Math.imul(Re,xe)|0,u=u+Math.imul(rt,ae)|0,I=I+Math.imul(rt,xe)|0;var X=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(X>>>26)|0,X&=67108863,_=Math.imul(Te,D),u=Math.imul(Te,H),u=u+Math.imul(Ze,D)|0,I=Math.imul(Ze,H),_=_+Math.imul(ke,V)|0,u=u+Math.imul(ke,ee)|0,u=u+Math.imul(nt,V)|0,I=I+Math.imul(nt,ee)|0,_=_+Math.imul(Oe,ae)|0,u=u+Math.imul(Oe,xe)|0,u=u+Math.imul(it,ae)|0,I=I+Math.imul(it,xe)|0;var de=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(de>>>26)|0,de&=67108863,_=Math.imul(Te,V),u=Math.imul(Te,ee),u=u+Math.imul(Ze,V)|0,I=Math.imul(Ze,ee),_=_+Math.imul(ke,ae)|0,u=u+Math.imul(ke,xe)|0,u=u+Math.imul(nt,ae)|0,I=I+Math.imul(nt,xe)|0;var oe=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(oe>>>26)|0,oe&=67108863,_=Math.imul(Te,ae),u=Math.imul(Te,xe),u=u+Math.imul(Ze,ae)|0,I=Math.imul(Ze,xe);var se=(q+_|0)+((u&8191)<<13)|0;return q=(I+(u>>>13)|0)+(se>>>26)|0,se&=67108863,A[0]=we,A[1]=je,A[2]=ze,A[3]=Ye,A[4]=Ge,A[5]=Ve,A[6]=Je,A[7]=$e,A[8]=Ie,A[9]=Le,A[10]=Ae,A[11]=Me,A[12]=Ce,A[13]=me,A[14]=$,A[15]=X,A[16]=de,A[17]=oe,A[18]=se,q!==0&&(A[19]=q,v.length++),v};Math.imul||(fe=ie);function ce(p,f,s){s.negative=f.negative^p.negative,s.length=p.length+f.length;for(var v=0,l=0,h=0;h>>26)|0,l+=A>>>26,A&=67108863}s.words[h]=q,v=A,A=l}return v!==0?s.words[h]=v:s.length--,s._strip()}function ge(p,f,s){return ce(p,f,s)}n.prototype.mulTo=function(f,s){var v,l=this.length+f.length;return this.length===10&&f.length===10?v=fe(this,f,s):l<63?v=ie(this,f,s):l<1024?v=ce(this,f,s):v=ge(this,f,s),v};function ve(p,f){this.x=p,this.y=f}ve.prototype.makeRBT=function(f){for(var s=new Array(f),v=n.prototype._countBits(f)-1,l=0;l>=1;return l},ve.prototype.permute=function(f,s,v,l,h,A){for(var q=0;q>>1)h++;return 1<>>13,v[2*A+1]=h&8191,h=h>>>13;for(A=2*s;A>=26,v+=h/67108864|0,v+=A>>>26,this.words[l]=A&67108863}return v!==0&&(this.words[l]=v,this.length++),s?this.ineg():this},n.prototype.muln=function(f){return this.clone().imuln(f)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(f){var s=Z(f);if(s.length===0)return new n(1);for(var v=this,l=0;l=0);var s=f%26,v=(f-s)/26,l=67108863>>>26-s<<26-s,h;if(s!==0){var A=0;for(h=0;h>>26-s}A&&(this.words[h]=A,this.length++)}if(v!==0){for(h=this.length-1;h>=0;h--)this.words[h+v]=this.words[h];for(h=0;h=0);var l;s?l=(s-s%26)/26:l=0;var h=f%26,A=Math.min((f-h)/26,this.length),q=67108863^67108863>>>h<A)for(this.length-=A,u=0;u=0&&(I!==0||u>=l);u--){var j=this.words[u]|0;this.words[u]=I<<26-h|j>>>h,I=j&q}return _&&I!==0&&(_.words[_.length++]=I),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(f,s,v){return r(this.negative===0),this.iushrn(f,s,v)},n.prototype.shln=function(f){return this.clone().ishln(f)},n.prototype.ushln=function(f){return this.clone().iushln(f)},n.prototype.shrn=function(f){return this.clone().ishrn(f)},n.prototype.ushrn=function(f){return this.clone().iushrn(f)},n.prototype.testn=function(f){r(typeof f=="number"&&f>=0);var s=f%26,v=(f-s)/26,l=1<=0);var s=f%26,v=(f-s)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=v)return this;if(s!==0&&v++,this.length=Math.min(v,this.length),s!==0){var l=67108863^67108863>>>s<=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},n.prototype.isubn=function(f){if(r(typeof f=="number"),r(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s>26)-(_/67108864|0),this.words[h+v]=A&67108863}for(;h>26,this.words[h+v]=A&67108863;if(q===0)return this._strip();for(r(q===-1),q=0,h=0;h>26,this.words[h]=A&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(f,s){var v=this.length-f.length,l=this.clone(),h=f,A=h.words[h.length-1]|0,q=this._countBits(A);v=26-q,v!==0&&(h=h.ushln(v),l.iushln(v),A=h.words[h.length-1]|0);var _=l.length-h.length,u;if(s!=="mod"){u=new n(null),u.length=_+1,u.words=new Array(u.length);for(var I=0;I=0;S--){var L=(l.words[h.length+S]|0)*67108864+(l.words[h.length+S-1]|0);for(L=Math.min(L/A|0,67108863),l._ishlnsubmul(h,L,S);l.negative!==0;)L--,l.negative=0,l._ishlnsubmul(h,1,S),l.isZero()||(l.negative^=1);u&&(u.words[S]=L)}return u&&u._strip(),l._strip(),s!=="div"&&v!==0&&l.iushrn(v),{div:u||null,mod:l}},n.prototype.divmod=function(f,s,v){if(r(!f.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var l,h,A;return this.negative!==0&&f.negative===0?(A=this.neg().divmod(f,s),s!=="mod"&&(l=A.div.neg()),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.iadd(f)),{div:l,mod:h}):this.negative===0&&f.negative!==0?(A=this.divmod(f.neg(),s),s!=="mod"&&(l=A.div.neg()),{div:l,mod:A.mod}):(this.negative&f.negative)!==0?(A=this.neg().divmod(f.neg(),s),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.isub(f)),{div:A.div,mod:h}):f.length>this.length||this.cmp(f)<0?{div:new n(0),mod:this}:f.length===1?s==="div"?{div:this.divn(f.words[0]),mod:null}:s==="mod"?{div:null,mod:new n(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new n(this.modrn(f.words[0]))}:this._wordDiv(f,s)},n.prototype.div=function(f){return this.divmod(f,"div",!1).div},n.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},n.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},n.prototype.divRound=function(f){var s=this.divmod(f);if(s.mod.isZero())return s.div;var v=s.div.negative!==0?s.mod.isub(f):s.mod,l=f.ushrn(1),h=f.andln(1),A=v.cmp(l);return A<0||h===1&&A===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},n.prototype.modrn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=(1<<26)%f,l=0,h=this.length-1;h>=0;h--)l=(v*l+(this.words[h]|0))%f;return s?-l:l},n.prototype.modn=function(f){return this.modrn(f)},n.prototype.idivn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=0,l=this.length-1;l>=0;l--){var h=(this.words[l]|0)+v*67108864;this.words[l]=h/f|0,v=h%f}return this._strip(),s?this.ineg():this},n.prototype.divn=function(f){return this.clone().idivn(f)},n.prototype.egcd=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=new n(0),q=new n(1),_=0;s.isEven()&&v.isEven();)s.iushrn(1),v.iushrn(1),++_;for(var u=v.clone(),I=s.clone();!s.isZero();){for(var j=0,S=1;(s.words[0]&S)===0&&j<26;++j,S<<=1);if(j>0)for(s.iushrn(j);j-- >0;)(l.isOdd()||h.isOdd())&&(l.iadd(u),h.isub(I)),l.iushrn(1),h.iushrn(1);for(var L=0,Q=1;(v.words[0]&Q)===0&&L<26;++L,Q<<=1);if(L>0)for(v.iushrn(L);L-- >0;)(A.isOdd()||q.isOdd())&&(A.iadd(u),q.isub(I)),A.iushrn(1),q.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(A),h.isub(q)):(v.isub(s),A.isub(l),q.isub(h))}return{a:A,b:q,gcd:v.iushln(_)}},n.prototype._invmp=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=v.clone();s.cmpn(1)>0&&v.cmpn(1)>0;){for(var q=0,_=1;(s.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(s.iushrn(q);q-- >0;)l.isOdd()&&l.iadd(A),l.iushrn(1);for(var u=0,I=1;(v.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(v.iushrn(u);u-- >0;)h.isOdd()&&h.iadd(A),h.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(h)):(v.isub(s),h.isub(l))}var j;return s.cmpn(1)===0?j=l:j=h,j.cmpn(0)<0&&j.iadd(f),j},n.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var s=this.clone(),v=f.clone();s.negative=0,v.negative=0;for(var l=0;s.isEven()&&v.isEven();l++)s.iushrn(1),v.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;v.isEven();)v.iushrn(1);var h=s.cmp(v);if(h<0){var A=s;s=v,v=A}else if(h===0||v.cmpn(1)===0)break;s.isub(v)}while(!0);return v.iushln(l)},n.prototype.invm=function(f){return this.egcd(f).a.umod(f)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(f){return this.words[0]&f},n.prototype.bincn=function(f){r(typeof f=="number");var s=f%26,v=(f-s)/26,l=1<>>26,q&=67108863,this.words[A]=q}return h!==0&&(this.words[A]=h,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(f){var s=f<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var v;if(this.length>1)v=1;else{s&&(f=-f),r(f<=67108863,"Number is too big");var l=this.words[0]|0;v=l===f?0:lf.length)return 1;if(this.length=0;v--){var l=this.words[v]|0,h=f.words[v]|0;if(l!==h){lh&&(s=1);break}}return s},n.prototype.gtn=function(f){return this.cmpn(f)===1},n.prototype.gt=function(f){return this.cmp(f)===1},n.prototype.gten=function(f){return this.cmpn(f)>=0},n.prototype.gte=function(f){return this.cmp(f)>=0},n.prototype.ltn=function(f){return this.cmpn(f)===-1},n.prototype.lt=function(f){return this.cmp(f)===-1},n.prototype.lten=function(f){return this.cmpn(f)<=0},n.prototype.lte=function(f){return this.cmp(f)<=0},n.prototype.eqn=function(f){return this.cmpn(f)===0},n.prototype.eq=function(f){return this.cmp(f)===0},n.red=function(f){return new b(f)},n.prototype.toRed=function(f){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(f){return this.red=f,this},n.prototype.forceRed=function(f){return r(!this.red,"Already a number in reduction context"),this._forceRed(f)},n.prototype.redAdd=function(f){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},n.prototype.redIAdd=function(f){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},n.prototype.redSub=function(f){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},n.prototype.redISub=function(f){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},n.prototype.redShl=function(f){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},n.prototype.redMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},n.prototype.redIMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(f){return r(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var Ke={k256:null,p224:null,p192:null,p25519:null};function be(p,f){this.name=p,this.p=new n(f,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}be.prototype._tmp=function(){var f=new n(null);return f.words=new Array(Math.ceil(this.n/13)),f},be.prototype.ireduce=function(f){var s=f,v;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),v=s.bitLength();while(v>this.n);var l=v0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},be.prototype.split=function(f,s){f.iushrn(this.n,0,s)},be.prototype.imulK=function(f){return f.imul(this.k)};function pe(){be.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(pe,be),pe.prototype.split=function(f,s){for(var v=4194303,l=Math.min(f.length,9),h=0;h>>22,A=q}A>>>=22,f.words[h-10]=A,A===0&&f.length>10?f.length-=10:f.length-=9},pe.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var s=0,v=0;v>>=26,f.words[v]=h,s=l}return s!==0&&(f.words[f.length++]=s),f},n._prime=function(f){if(Ke[f])return Ke[f];var s;if(f==="k256")s=new pe;else if(f==="p224")s=new Ne;else if(f==="p192")s=new k;else if(f==="p25519")s=new d;else throw new Error("Unknown prime "+f);return Ke[f]=s,s};function b(p){if(typeof p=="string"){var f=n._prime(p);this.m=f.p,this.prime=f}else r(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}b.prototype._verify1=function(f){r(f.negative===0,"red works only with positives"),r(f.red,"red works only with red numbers")},b.prototype._verify2=function(f,s){r((f.negative|s.negative)===0,"red works only with positives"),r(f.red&&f.red===s.red,"red works only with red numbers")},b.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(M(f,f.umod(this.m)._forceRed(this)),f)},b.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},b.prototype.add=function(f,s){this._verify2(f,s);var v=f.add(s);return v.cmp(this.m)>=0&&v.isub(this.m),v._forceRed(this)},b.prototype.iadd=function(f,s){this._verify2(f,s);var v=f.iadd(s);return v.cmp(this.m)>=0&&v.isub(this.m),v},b.prototype.sub=function(f,s){this._verify2(f,s);var v=f.sub(s);return v.cmpn(0)<0&&v.iadd(this.m),v._forceRed(this)},b.prototype.isub=function(f,s){this._verify2(f,s);var v=f.isub(s);return v.cmpn(0)<0&&v.iadd(this.m),v},b.prototype.shl=function(f,s){return this._verify1(f),this.imod(f.ushln(s))},b.prototype.imul=function(f,s){return this._verify2(f,s),this.imod(f.imul(s))},b.prototype.mul=function(f,s){return this._verify2(f,s),this.imod(f.mul(s))},b.prototype.isqr=function(f){return this.imul(f,f.clone())},b.prototype.sqr=function(f){return this.mul(f,f)},b.prototype.sqrt=function(f){if(f.isZero())return f.clone();var s=this.m.andln(3);if(r(s%2===1),s===3){var v=this.m.add(new n(1)).iushrn(2);return this.pow(f,v)}for(var l=this.m.subn(1),h=0;!l.isZero()&&l.andln(1)===0;)h++,l.iushrn(1);r(!l.isZero());var A=new n(1).toRed(this),q=A.redNeg(),_=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new n(2*u*u).toRed(this);this.pow(u,_).cmp(q)!==0;)u.redIAdd(q);for(var I=this.pow(u,l),j=this.pow(f,l.addn(1).iushrn(1)),S=this.pow(f,l),L=h;S.cmp(A)!==0;){for(var Q=S,z=0;Q.cmp(A)!==0;z++)Q=Q.redSqr();r(z=0;h--){for(var I=s.words[h],j=u-1;j>=0;j--){var S=I>>j&1;if(A!==l[0]&&(A=this.sqr(A)),S===0&&q===0){_=0;continue}q<<=1,q|=S,_++,!(_!==v&&(h!==0||j!==0))&&(A=this.mul(A,l[q]),_=0,q=0)}u=26}return A},b.prototype.convertTo=function(f){var s=f.umod(this.m);return s===f?s.clone():s},b.prototype.convertFrom=function(f){var s=f.clone();return s.red=null,s},n.mont=function(f){return new E(f)};function E(p){b.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(E,b),E.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},E.prototype.convertFrom=function(f){var s=this.imod(f.mul(this.rinv));return s.red=null,s},E.prototype.imul=function(f,s){if(f.isZero()||s.isZero())return f.words[0]=0,f.length=1,f;var v=f.imul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.mul=function(f,s){if(f.isZero()||s.isZero())return new n(0)._forceRed(this);var v=f.mul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.invm=function(f){var s=this.imod(f._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof Rp>"u"||Rp,AA)});var yh=P((cre,_A)=>{"use strict";g();var gh=fn(),za=gh.Buffer,ci={},di;for(di in gh)!gh.hasOwnProperty(di)||di==="SlowBuffer"||di==="Buffer"||(ci[di]=gh[di]);var Ga=ci.Buffer={};for(di in za)!za.hasOwnProperty(di)||di==="allocUnsafe"||di==="allocUnsafeSlow"||(Ga[di]=za[di]);ci.Buffer.prototype=za.prototype;(!Ga.from||Ga.from===Uint8Array.from)&&(Ga.from=function(t,e,r){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return za(t,e,r)});Ga.alloc||(Ga.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var i=za(t);return!e||e.length===0?i.fill(0):typeof r=="string"?i.fill(e,r):i.fill(e),i});if(!ci.kStringMaxLength)try{ci.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}ci.constants||(ci.constants={MAX_LENGTH:ci.kMaxLength},ci.kStringMaxLength&&(ci.constants.MAX_STRING_LENGTH=ci.kStringMaxLength));_A.exports=ci});var mh=P(IA=>{"use strict";g();var JN=gt();function li(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}IA.Reporter=li;li.prototype.isError=function(e){return e instanceof Ya};li.prototype.save=function(){let e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}};li.prototype.restore=function(e){let r=this._reporterState;r.obj=e.obj,r.path=r.path.slice(0,e.pathLen)};li.prototype.enterKey=function(e){return this._reporterState.path.push(e)};li.prototype.exitKey=function(e){let r=this._reporterState;r.path=r.path.slice(0,e-1)};li.prototype.leaveKey=function(e,r,i){let n=this._reporterState;this.exitKey(e),n.obj!==null&&(n.obj[r]=i)};li.prototype.path=function(){return this._reporterState.path.join("/")};li.prototype.enterObject=function(){let e=this._reporterState,r=e.obj;return e.obj={},r};li.prototype.leaveObject=function(e){let r=this._reporterState,i=r.obj;return r.obj=e,i};li.prototype.error=function(e){let r,i=this._reporterState,n=e instanceof Ya;if(n?r=e:r=new Ya(i.path.map(function(a){return"["+JSON.stringify(a)+"]"}).join(""),e.message||e,e.stack),!i.options.partial)throw r;return n||i.errors.push(r),r};li.prototype.wrapResult=function(e){let r=this._reporterState;return r.options.partial?{result:this.isError(e)?null:e,errors:r.errors}:e};function Ya(t,e){this.path=t,this.rethrow(e)}JN(Ya,Error);Ya.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,Ya),!this.stack)try{throw new Error(this.message)}catch(r){this.stack=r.stack}return this}});var Wa=P(Op=>{"use strict";g();var XN=gt(),xh=mh().Reporter,Va=yh().Buffer;function pi(t,e){if(xh.call(this,e),!Va.isBuffer(t)){this.error("Input not Buffer");return}this.base=t,this.offset=0,this.length=t.length}XN(pi,xh);Op.DecoderBuffer=pi;pi.isDecoderBuffer=function(e){return e instanceof pi?!0:typeof e=="object"&&Va.isBuffer(e.base)&&e.constructor.name==="DecoderBuffer"&&typeof e.offset=="number"&&typeof e.length=="number"&&typeof e.save=="function"&&typeof e.restore=="function"&&typeof e.isEmpty=="function"&&typeof e.readUInt8=="function"&&typeof e.skip=="function"&&typeof e.raw=="function"};pi.prototype.save=function(){return{offset:this.offset,reporter:xh.prototype.save.call(this)}};pi.prototype.restore=function(e){let r=new pi(this.base);return r.offset=e.offset,r.length=this.offset,this.offset=e.offset,xh.prototype.restore.call(this,e.reporter),r};pi.prototype.isEmpty=function(){return this.offset===this.length};pi.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")};pi.prototype.skip=function(e,r){if(!(this.offset+e<=this.length))return this.error(r||"DecoderBuffer overrun");let i=new pi(this.base);return i._reporterState=this._reporterState,i.offset=this.offset,i.length=this.offset+e,this.offset+=e,i};pi.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)};function $a(t,e){if(Array.isArray(t))this.length=0,this.value=t.map(function(r){return $a.isEncoderBuffer(r)||(r=new $a(r,e)),this.length+=r.length,r},this);else if(typeof t=="number"){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if(typeof t=="string")this.value=t,this.length=Va.byteLength(t);else if(Va.isBuffer(t))this.value=t,this.length=t.length;else return e.error("Unsupported type: "+typeof t)}Op.EncoderBuffer=$a;$a.isEncoderBuffer=function(e){return e instanceof $a?!0:typeof e=="object"&&e.constructor.name==="EncoderBuffer"&&typeof e.length=="number"&&typeof e.join=="function"};$a.prototype.join=function(e,r){return e||(e=Va.alloc(this.length)),r||(r=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(i){i.join(e,r),r+=i.length}):(typeof this.value=="number"?e[r]=this.value:typeof this.value=="string"?e.write(this.value,r):Va.isBuffer(this.value)&&this.value.copy(e,r),r+=this.length)),e}});var wh=P((gre,MA)=>{"use strict";g();var ZN=mh().Reporter,eQ=Wa().EncoderBuffer,tQ=Wa().DecoderBuffer,Tr=zr(),EA=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],rQ=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(EA),iQ=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function zt(t,e,r){let i={};this._baseState=i,i.name=r,i.enc=t,i.parent=e||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}MA.exports=zt;var nQ=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];zt.prototype.clone=function(){let e=this._baseState,r={};nQ.forEach(function(n){r[n]=e[n]});let i=new this.constructor(r.parent);return i._baseState=r,i};zt.prototype._wrap=function(){let e=this._baseState;rQ.forEach(function(r){this[r]=function(){let n=new this.constructor(this);return e.children.push(n),n[r].apply(n,arguments)}},this)};zt.prototype._init=function(e){let r=this._baseState;Tr(r.parent===null),e.call(this),r.children=r.children.filter(function(i){return i._baseState.parent===this},this),Tr.equal(r.children.length,1,"Root node can have only one child")};zt.prototype._useArgs=function(e){let r=this._baseState,i=e.filter(function(n){return n instanceof this.constructor},this);e=e.filter(function(n){return!(n instanceof this.constructor)},this),i.length!==0&&(Tr(r.children===null),r.children=i,i.forEach(function(n){n._baseState.parent=this},this)),e.length!==0&&(Tr(r.args===null),r.args=e,r.reverseArgs=e.map(function(n){if(typeof n!="object"||n.constructor!==Object)return n;let a={};return Object.keys(n).forEach(function(o){o==(o|0)&&(o|=0);let c=n[o];a[c]=o}),a}))};iQ.forEach(function(t){zt.prototype[t]=function(){let r=this._baseState;throw new Error(t+" not implemented for encoding: "+r.enc)}});EA.forEach(function(t){zt.prototype[t]=function(){let r=this._baseState,i=Array.prototype.slice.call(arguments);return Tr(r.tag===null),r.tag=t,this._useArgs(i),this}});zt.prototype.use=function(e){Tr(e);let r=this._baseState;return Tr(r.use===null),r.use=e,this};zt.prototype.optional=function(){let e=this._baseState;return e.optional=!0,this};zt.prototype.def=function(e){let r=this._baseState;return Tr(r.default===null),r.default=e,r.optional=!0,this};zt.prototype.explicit=function(e){let r=this._baseState;return Tr(r.explicit===null&&r.implicit===null),r.explicit=e,this};zt.prototype.implicit=function(e){let r=this._baseState;return Tr(r.explicit===null&&r.implicit===null),r.implicit=e,this};zt.prototype.obj=function(){let e=this._baseState,r=Array.prototype.slice.call(arguments);return e.obj=!0,r.length!==0&&this._useArgs(r),this};zt.prototype.key=function(e){let r=this._baseState;return Tr(r.key===null),r.key=e,this};zt.prototype.any=function(){let e=this._baseState;return e.any=!0,this};zt.prototype.choice=function(e){let r=this._baseState;return Tr(r.choice===null),r.choice=e,this._useArgs(Object.keys(e).map(function(i){return e[i]})),this};zt.prototype.contains=function(e){let r=this._baseState;return Tr(r.use===null),r.contains=e,this};zt.prototype._decode=function(e,r){let i=this._baseState;if(i.parent===null)return e.wrapResult(i.children[0]._decode(e,r));let n=i.default,a=!0,o=null;if(i.key!==null&&(o=e.enterKey(i.key)),i.optional){let m=null;if(i.explicit!==null?m=i.explicit:i.implicit!==null?m=i.implicit:i.tag!==null&&(m=i.tag),m===null&&!i.any){let M=e.save();try{i.choice===null?this._decodeGeneric(i.tag,e,r):this._decodeChoice(e,r),a=!0}catch{a=!1}e.restore(M)}else if(a=this._peekTag(e,m,i.any),e.isError(a))return a}let c;if(i.obj&&a&&(c=e.enterObject()),a){if(i.explicit!==null){let M=this._decodeTag(e,i.explicit);if(e.isError(M))return M;e=M}let m=e.offset;if(i.use===null&&i.choice===null){let M;i.any&&(M=e.save());let B=this._decodeTag(e,i.implicit!==null?i.implicit:i.tag,i.any);if(e.isError(B))return B;i.any?n=e.raw(M):e=B}if(r&&r.track&&i.tag!==null&&r.track(e.path(),m,e.length,"tagged"),r&&r.track&&i.tag!==null&&r.track(e.path(),e.offset,e.length,"content"),i.any||(i.choice===null?n=this._decodeGeneric(i.tag,e,r):n=this._decodeChoice(e,r)),e.isError(n))return n;if(!i.any&&i.choice===null&&i.children!==null&&i.children.forEach(function(B){B._decode(e,r)}),i.contains&&(i.tag==="octstr"||i.tag==="bitstr")){let M=new tQ(n);n=this._getUse(i.contains,e._reporterState.obj)._decode(M,r)}}return i.obj&&a&&(n=e.leaveObject(c)),i.key!==null&&(n!==null||a===!0)?e.leaveKey(o,i.key,n):o!==null&&e.exitKey(o),n};zt.prototype._decodeGeneric=function(e,r,i){let n=this._baseState;return e==="seq"||e==="set"?null:e==="seqof"||e==="setof"?this._decodeList(r,e,n.args[0],i):/str$/.test(e)?this._decodeStr(r,e,i):e==="objid"&&n.args?this._decodeObjid(r,n.args[0],n.args[1],i):e==="objid"?this._decodeObjid(r,null,null,i):e==="gentime"||e==="utctime"?this._decodeTime(r,e,i):e==="null_"?this._decodeNull(r,i):e==="bool"?this._decodeBool(r,i):e==="objDesc"?this._decodeStr(r,e,i):e==="int"||e==="enum"?this._decodeInt(r,n.args&&n.args[0],i):n.use!==null?this._getUse(n.use,r._reporterState.obj)._decode(r,i):r.error("unknown tag: "+e)};zt.prototype._getUse=function(e,r){let i=this._baseState;return i.useDecoder=this._use(e,r),Tr(i.useDecoder._baseState.parent===null),i.useDecoder=i.useDecoder._baseState.children[0],i.implicit!==i.useDecoder._baseState.implicit&&(i.useDecoder=i.useDecoder.clone(),i.useDecoder._baseState.implicit=i.implicit),i.useDecoder};zt.prototype._decodeChoice=function(e,r){let i=this._baseState,n=null,a=!1;return Object.keys(i.choice).some(function(o){let c=e.save(),m=i.choice[o];try{let M=m._decode(e,r);if(e.isError(M))return!1;n={type:o,value:M},a=!0}catch{return e.restore(c),!1}return!0},this),a?n:e.error("Choice not matched")};zt.prototype._createEncoderBuffer=function(e){return new eQ(e,this.reporter)};zt.prototype._encode=function(e,r,i){let n=this._baseState;if(n.default!==null&&n.default===e)return;let a=this._encodeValue(e,r,i);if(a!==void 0&&!this._skipDefault(a,r,i))return a};zt.prototype._encodeValue=function(e,r,i){let n=this._baseState;if(n.parent===null)return n.children[0]._encode(e,r||new ZN);let a=null;if(this.reporter=r,n.optional&&e===void 0)if(n.default!==null)e=n.default;else return;let o=null,c=!1;if(n.any)a=this._createEncoderBuffer(e);else if(n.choice)a=this._encodeChoice(e,r);else if(n.contains)o=this._getUse(n.contains,i)._encode(e,r),c=!0;else if(n.children)o=n.children.map(function(m){if(m._baseState.tag==="null_")return m._encode(null,r,e);if(m._baseState.key===null)return r.error("Child should have a key");let M=r.enterKey(m._baseState.key);if(typeof e!="object")return r.error("Child expected, but input is not object");let B=m._encode(e[m._baseState.key],r,e);return r.leaveKey(M),B},this).filter(function(m){return m}),o=this._createEncoderBuffer(o);else if(n.tag==="seqof"||n.tag==="setof"){if(!(n.args&&n.args.length===1))return r.error("Too many args for : "+n.tag);if(!Array.isArray(e))return r.error("seqof/setof, but data is not Array");let m=this.clone();m._baseState.implicit=null,o=this._createEncoderBuffer(e.map(function(M){let B=this._baseState;return this._getUse(B.args[0],e)._encode(M,r)},m))}else n.use!==null?a=this._getUse(n.use,i)._encode(e,r):(o=this._encodePrimitive(n.tag,e),c=!0);if(!n.any&&n.choice===null){let m=n.implicit!==null?n.implicit:n.tag,M=n.implicit===null?"universal":"context";m===null?n.use===null&&r.error("Tag could be omitted only for .use()"):n.use===null&&(a=this._encodeComposite(m,c,M,o))}return n.explicit!==null&&(a=this._encodeComposite(n.explicit,!1,"context",a)),a};zt.prototype._encodeChoice=function(e,r){let i=this._baseState,n=i.choice[e.type];return n||Tr(!1,e.type+" not found in "+JSON.stringify(Object.keys(i.choice))),n._encode(e.value,r)};zt.prototype._encodePrimitive=function(e,r){let i=this._baseState;if(/str$/.test(e))return this._encodeStr(r,e);if(e==="objid"&&i.args)return this._encodeObjid(r,i.reverseArgs[0],i.args[1]);if(e==="objid")return this._encodeObjid(r,null,null);if(e==="gentime"||e==="utctime")return this._encodeTime(r,e);if(e==="null_")return this._encodeNull();if(e==="int"||e==="enum")return this._encodeInt(r,i.args&&i.reverseArgs[0]);if(e==="bool")return this._encodeBool(r);if(e==="objDesc")return this._encodeStr(r,e);throw new Error("Unsupported tag: "+e)};zt.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)};zt.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}});var Ah=P(Xf=>{"use strict";g();function SA(t){let e={};return Object.keys(t).forEach(function(r){(r|0)==r&&(r=r|0);let i=t[r];e[i]=r}),e}Xf.tagClass={0:"universal",1:"application",2:"context",3:"private"};Xf.tagClassByName=SA(Xf.tagClass);Xf.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};Xf.tagByName=SA(Xf.tag)});var Pp=P((wre,qA)=>{"use strict";g();var fQ=gt(),Bn=yh().Buffer,CA=wh(),Dp=Ah();function BA(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new qi,this.tree._init(t.body)}qA.exports=BA;BA.prototype.encode=function(e,r){return this.tree._encode(e,r).join()};function qi(t){CA.call(this,"der",t)}fQ(qi,CA);qi.prototype._encodeComposite=function(e,r,i,n){let a=aQ(e,r,i,this.reporter);if(n.length<128){let m=Bn.alloc(2);return m[0]=a,m[1]=n.length,this._createEncoderBuffer([m,n])}let o=1;for(let m=n.length;m>=256;m>>=8)o++;let c=Bn.alloc(1+1+o);c[0]=a,c[1]=128|o;for(let m=1+o,M=n.length;M>0;m--,M>>=8)c[m]=M&255;return this._createEncoderBuffer([c,n])};qi.prototype._encodeStr=function(e,r){if(r==="bitstr")return this._createEncoderBuffer([e.unused|0,e.data]);if(r==="bmpstr"){let i=Bn.alloc(e.length*2);for(let n=0;n=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,e[0]*40+e[1])}let n=0;for(let c=0;c=128;m>>=7)n++}let a=Bn.alloc(n),o=a.length-1;for(let c=e.length-1;c>=0;c--){let m=e[c];for(a[o--]=m&127;(m>>=7)>0;)a[o--]=128|m&127}return this._createEncoderBuffer(a)};function vi(t){return t<10?"0"+t:t}qi.prototype._encodeTime=function(e,r){let i,n=new Date(e);return r==="gentime"?i=[vi(n.getUTCFullYear()),vi(n.getUTCMonth()+1),vi(n.getUTCDate()),vi(n.getUTCHours()),vi(n.getUTCMinutes()),vi(n.getUTCSeconds()),"Z"].join(""):r==="utctime"?i=[vi(n.getUTCFullYear()%100),vi(n.getUTCMonth()+1),vi(n.getUTCDate()),vi(n.getUTCHours()),vi(n.getUTCMinutes()),vi(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+r+" time is not supported yet"),this._encodeStr(i,"octstr")};qi.prototype._encodeNull=function(){return this._createEncoderBuffer("")};qi.prototype._encodeInt=function(e,r){if(typeof e=="string"){if(!r)return this.reporter.error("String int or enum given, but no values map");if(!r.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=r[e]}if(typeof e!="number"&&!Bn.isBuffer(e)){let a=e.toArray();!e.sign&&a[0]&128&&a.unshift(0),e=Bn.from(a)}if(Bn.isBuffer(e)){let a=e.length;e.length===0&&a++;let o=Bn.alloc(a);return e.copy(o),e.length===0&&(o[0]=0),this._createEncoderBuffer(o)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let i=1;for(let a=e;a>=256;a>>=8)i++;let n=new Array(i);for(let a=n.length-1;a>=0;a--)n[a]=e&255,e>>=8;return n[0]&128&&n.unshift(0),this._createEncoderBuffer(Bn.from(n))};qi.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)};qi.prototype._use=function(e,r){return typeof e=="function"&&(e=e(r)),e._getEncoder("der").tree};qi.prototype._skipDefault=function(e,r,i){let n=this._baseState,a;if(n.default===null)return!1;let o=e.join();if(n.defaultBuffer===void 0&&(n.defaultBuffer=this._encodeValue(n.default,r,i).join()),o.length!==n.defaultBuffer.length)return!1;for(a=0;a=31?i.error("Multi-octet tag encoding unsupported"):(e||(n|=32),n|=Dp.tagClassByName[r||"universal"]<<6,n)}});var TA=P((_re,RA)=>{"use strict";g();var oQ=gt(),Up=Pp();function kp(t){Up.call(this,t),this.enc="pem"}oQ(kp,Up);RA.exports=kp;kp.prototype.encode=function(e,r){let n=Up.prototype.encode.call(this,e).toString("base64"),a=["-----BEGIN "+r.label+"-----"];for(let o=0;o{"use strict";g();var OA=DA;OA.der=Pp();OA.pem=TA()});var Np=P((Sre,NA)=>{"use strict";g();var sQ=gt(),uQ=sr(),PA=Wa().DecoderBuffer,kA=wh(),UA=Ah();function FA(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new Yr,this.tree._init(t.body)}NA.exports=FA;FA.prototype.decode=function(e,r){return PA.isDecoderBuffer(e)||(e=new PA(e,r)),this.tree._decode(e,r)};function Yr(t){kA.call(this,"der",t)}sQ(Yr,kA);Yr.prototype._peekTag=function(e,r,i){if(e.isEmpty())return!1;let n=e.save(),a=Lp(e,'Failed to peek tag: "'+r+'"');return e.isError(a)?a:(e.restore(n),a.tag===r||a.tagStr===r||a.tagStr+"of"===r||i)};Yr.prototype._decodeTag=function(e,r,i){let n=Lp(e,'Failed to decode tag of "'+r+'"');if(e.isError(n))return n;let a=LA(e,n.primitive,'Failed to get length of "'+r+'"');if(e.isError(a))return a;if(!i&&n.tag!==r&&n.tagStr!==r&&n.tagStr+"of"!==r)return e.error('Failed to match tag: "'+r+'"');if(n.primitive||a!==null)return e.skip(a,'Failed to match body of: "'+r+'"');let o=e.save(),c=this._skipUntilEnd(e,'Failed to skip indefinite length body: "'+this.tag+'"');return e.isError(c)?c:(a=e.offset-o.offset,e.restore(o),e.skip(a,'Failed to match body of: "'+r+'"'))};Yr.prototype._skipUntilEnd=function(e,r){for(;;){let i=Lp(e,r);if(e.isError(i))return i;let n=LA(e,i.primitive,r);if(e.isError(n))return n;let a;if(i.primitive||n!==null?a=e.skip(n):a=this._skipUntilEnd(e,r),e.isError(a))return a;if(i.tagStr==="end")break}};Yr.prototype._decodeList=function(e,r,i,n){let a=[];for(;!e.isEmpty();){let o=this._peekTag(e,"end");if(e.isError(o))return o;let c=i.decode(e,"der",n);if(e.isError(c)&&o)break;a.push(c)}return a};Yr.prototype._decodeStr=function(e,r){if(r==="bitstr"){let i=e.readUInt8();return e.isError(i)?i:{unused:i,data:e.raw()}}else if(r==="bmpstr"){let i=e.raw();if(i.length%2===1)return e.error("Decoding of string type: bmpstr length mismatch");let n="";for(let a=0;a>6],n=(r&32)===0;if((r&31)===31){let o=r;for(r=0;(o&128)===128;){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=o&127}}else r&=31;let a=UA.tag[r];return{cls:i,primitive:n,tag:r,tagStr:a}}function LA(t,e,r){let i=t.readUInt8(r);if(t.isError(i))return i;if(!e&&i===128)return null;if((i&128)===0)return i;let n=i&127;if(n>4)return t.error("length octect is too long");i=0;for(let a=0;a{"use strict";g();var hQ=gt(),cQ=yh().Buffer,Qp=Np();function Kp(t){Qp.call(this,t),this.enc="pem"}hQ(Kp,Qp);QA.exports=Kp;Kp.prototype.decode=function(e,r){let i=e.toString().split(/[\r\n]+/g),n=r.label.toUpperCase(),a=/^-----(BEGIN|END) ([^-]+)-----$/,o=-1,c=-1;for(let B=0;B{"use strict";g();var jA=HA;jA.der=Np();jA.pem=KA()});var GA=P(zA=>{"use strict";g();var dQ=Fp(),lQ=jp(),pQ=gt(),vQ=zA;vQ.define=function(e,r){return new Ja(e,r)};function Ja(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}Ja.prototype._createNamed=function(e){let r=this.name;function i(n){this._initNamed(n,r)}return pQ(i,e),i.prototype._initNamed=function(a,o){e.call(this,a,o)},new i(this)};Ja.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(lQ[e])),this.decoders[e]};Ja.prototype.decode=function(e,r,i){return this._getDecoder(r).decode(e,i)};Ja.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(dQ[e])),this.encoders[e]};Ja.prototype.encode=function(e,r,i){return this._getEncoder(r).encode(e,i)}});var VA=P(YA=>{"use strict";g();var _h=YA;_h.Reporter=mh().Reporter;_h.DecoderBuffer=Wa().DecoderBuffer;_h.EncoderBuffer=Wa().EncoderBuffer;_h.Node=wh()});var JA=P(WA=>{"use strict";g();var $A=WA;$A._reverse=function(e){let r={};return Object.keys(e).forEach(function(i){(i|0)==i&&(i=i|0);let n=e[i];r[n]=i}),r};$A.der=Ah()});var Hp=P(XA=>{"use strict";g();var Xa=XA;Xa.bignum=sr();Xa.define=GA().define;Xa.base=VA();Xa.constants=JA();Xa.decoders=jp();Xa.encoders=Fp()});var r9=P((Qre,t9)=>{"use strict";g();var Ri=Hp(),ZA=Ri.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),bQ=Ri.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),zp=Ri.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),gQ=Ri.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(zp),this.key("subjectPublicKey").bitstr())}),yQ=Ri.define("RelativeDistinguishedName",function(){this.setof(bQ)}),mQ=Ri.define("RDNSequence",function(){this.seqof(yQ)}),e9=Ri.define("Name",function(){this.choice({rdnSequence:this.use(mQ)})}),xQ=Ri.define("Validity",function(){this.seq().obj(this.key("notBefore").use(ZA),this.key("notAfter").use(ZA))}),wQ=Ri.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),AQ=Ri.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(zp),this.key("issuer").use(e9),this.key("validity").use(xQ),this.key("subject").use(e9),this.key("subjectPublicKeyInfo").use(gQ),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(wQ).optional())}),_Q=Ri.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(AQ),this.key("signatureAlgorithm").use(zp),this.key("signatureValue").bitstr())});t9.exports=_Q});var n9=P(Oi=>{"use strict";g();var Ti=Hp();Oi.certificate=r9();var IQ=Ti.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});Oi.RSAPrivateKey=IQ;var EQ=Ti.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});Oi.RSAPublicKey=EQ;var MQ=Ti.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(i9),this.key("subjectPublicKey").bitstr())});Oi.PublicKey=MQ;var i9=Ti.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),SQ=Ti.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(i9),this.key("subjectPrivateKey").octstr())});Oi.PrivateKey=SQ;var CQ=Ti.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});Oi.EncryptedPrivateKey=CQ;var BQ=Ti.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});Oi.DSAPrivateKey=BQ;Oi.DSAparam=Ti.define("DSAparam",function(){this.int()});var qQ=Ti.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(RQ),this.key("publicKey").optional().explicit(1).bitstr())});Oi.ECPrivateKey=qQ;var RQ=Ti.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});Oi.signature=Ti.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})});var f9=P((zre,TQ)=>{TQ.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}});var o9=P((Gre,a9)=>{g();var OQ=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,DQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,PQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,UQ=ys(),kQ=$u(),Ih=vt().Buffer;a9.exports=function(t,e){var r=t.toString(),i=r.match(OQ),n;if(i){var o="aes"+i[1],c=Ih.from(i[2],"hex"),m=Ih.from(i[3].replace(/[\r\n]/g,""),"base64"),M=UQ(e,c.slice(0,8),parseInt(i[1],10)).key,B=[],R=kQ.createDecipheriv(o,M,c);B.push(R.update(m)),B.push(R.final()),n=Ih.concat(B)}else{var a=r.match(PQ);n=Ih.from(a[2].replace(/[\r\n]/g,""),"base64")}var F=r.match(DQ)[1];return{tag:F,data:n}}});var Ss=P((Vre,u9)=>{g();var Nr=n9(),FQ=f9(),LQ=o9(),NQ=$u(),QQ=T1(),Gp=vt().Buffer;u9.exports=s9;function s9(t){var e;typeof t=="object"&&!Gp.isBuffer(t)&&(e=t.passphrase,t=t.key),typeof t=="string"&&(t=Gp.from(t));var r=LQ(t,e),i=r.tag,n=r.data,a,o;switch(i){case"CERTIFICATE":o=Nr.certificate.decode(n,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(o||(o=Nr.PublicKey.decode(n,"der")),a=o.algorithm.algorithm.join("."),a){case"1.2.840.113549.1.1.1":return Nr.RSAPublicKey.decode(o.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return o.subjectPrivateKey=o.subjectPublicKey,{type:"ec",data:o};case"1.2.840.10040.4.1":return o.algorithm.params.pub_key=Nr.DSAparam.decode(o.subjectPublicKey.data,"der"),{type:"dsa",data:o.algorithm.params};default:throw new Error("unknown key id "+a)}case"ENCRYPTED PRIVATE KEY":n=Nr.EncryptedPrivateKey.decode(n,"der"),n=KQ(n,e);case"PRIVATE KEY":switch(o=Nr.PrivateKey.decode(n,"der"),a=o.algorithm.algorithm.join("."),a){case"1.2.840.113549.1.1.1":return Nr.RSAPrivateKey.decode(o.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:o.algorithm.curve,privateKey:Nr.ECPrivateKey.decode(o.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return o.algorithm.params.priv_key=Nr.DSAparam.decode(o.subjectPrivateKey,"der"),{type:"dsa",params:o.algorithm.params};default:throw new Error("unknown key id "+a)}case"RSA PUBLIC KEY":return Nr.RSAPublicKey.decode(n,"der");case"RSA PRIVATE KEY":return Nr.RSAPrivateKey.decode(n,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:Nr.DSAPrivateKey.decode(n,"der")};case"EC PRIVATE KEY":return n=Nr.ECPrivateKey.decode(n,"der"),{curve:n.parameters.value,privateKey:n.privateKey};default:throw new Error("unknown key type "+i)}}s9.signature=Nr.signature;function KQ(t,e){var r=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),n=FQ[t.algorithm.decrypt.cipher.algo.join(".")],a=t.algorithm.decrypt.cipher.iv,o=t.subjectPrivateKey,c=parseInt(n.split("-")[1],10)/8,m=QQ.pbkdf2Sync(e,r,i,c,"sha1"),M=NQ.createDecipheriv(n,m,a),B=[];return B.push(M.update(o)),B.push(M.final()),Gp.concat(B)}});var Yp=P((Wre,jQ)=>{jQ.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}});var d9=P((Jre,Mh)=>{g();var Cr=vt().Buffer,Zf=A1(),HQ=eh(),zQ=Ms().ec,Eh=Tp(),GQ=Ss(),YQ=Yp();function VQ(t,e,r,i,n){var a=GQ(e);if(a.curve){if(i!=="ecdsa"&&i!=="ecdsa/rsa")throw new Error("wrong private key type");return $Q(t,a)}else if(a.type==="dsa"){if(i!=="dsa")throw new Error("wrong private key type");return WQ(t,a,r)}else if(i!=="rsa"&&i!=="ecdsa/rsa")throw new Error("wrong private key type");t=Cr.concat([n,t]);for(var o=a.modulus.byteLength(),c=[0,1];t.length+c.length+10&&r.ishrn(i),r}function XQ(t,e){t=Vp(t,e),t=t.mod(e);var r=Cr.from(t.toArray());if(r.length{g();var $p=vt().Buffer,Cs=Tp(),eK=Ms().ec,p9=Ss(),tK=Yp();function rK(t,e,r,i,n){var a=p9(r);if(a.type==="ec"){if(i!=="ecdsa"&&i!=="ecdsa/rsa")throw new Error("wrong public key type");return iK(t,e,a)}else if(a.type==="dsa"){if(i!=="dsa")throw new Error("wrong public key type");return nK(t,e,a)}else if(i!=="rsa"&&i!=="ecdsa/rsa")throw new Error("wrong public key type");e=$p.concat([n,e]);for(var o=a.modulus.byteLength(),c=[1],m=0;e.length+c.length+2=e)throw new Error("invalid sig")}v9.exports=rK});var A9=P((tie,w9)=>{g();var Sh=vt().Buffer,m9=Ma(),Ch=l1(),x9=gt(),fK=d9(),aK=b9(),ea=_1();Object.keys(ea).forEach(function(t){ea[t].id=Sh.from(ea[t].id,"hex"),ea[t.toLowerCase()]=ea[t]});function Bs(t){Ch.Writable.call(this);var e=ea[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=m9(e.hash),this._tag=e.id,this._signType=e.sign}x9(Bs,Ch.Writable);Bs.prototype._write=function(e,r,i){this._hash.update(e),i()};Bs.prototype.update=function(e,r){return typeof e=="string"&&(e=Sh.from(e,r)),this._hash.update(e),this};Bs.prototype.sign=function(e,r){this.end();var i=this._hash.digest(),n=fK(i,e,this._hashType,this._signType,this._tag);return r?n.toString(r):n};function qs(t){Ch.Writable.call(this);var e=ea[t];if(!e)throw new Error("Unknown message digest");this._hash=m9(e.hash),this._tag=e.id,this._signType=e.sign}x9(qs,Ch.Writable);qs.prototype._write=function(e,r,i){this._hash.update(e),i()};qs.prototype.update=function(e,r){return typeof e=="string"&&(e=Sh.from(e,r)),this._hash.update(e),this};qs.prototype.verify=function(e,r,i){typeof r=="string"&&(r=Sh.from(r,i)),this.end();var n=this._hash.digest();return aK(r,n,e,this._signType,this._tag)};function g9(t){return new Bs(t)}function y9(t){return new qs(t)}w9.exports={Sign:g9,Verify:y9,createSign:g9,createVerify:y9}});var I9=P((iie,_9)=>{g();var oK=Ms(),sK=sr();_9.exports=function(e){return new ta(e)};var Vr={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};Vr.p224=Vr.secp224r1;Vr.p256=Vr.secp256r1=Vr.prime256v1;Vr.p192=Vr.secp192r1=Vr.prime192v1;Vr.p384=Vr.secp384r1;Vr.p521=Vr.secp521r1;function ta(t){this.curveType=Vr[t],this.curveType||(this.curveType={name:t}),this.curve=new oK.ec(this.curveType.name),this.keys=void 0}ta.prototype.generateKeys=function(t,e){return this.keys=this.curve.genKeyPair(),this.getPublicKey(t,e)};ta.prototype.computeSecret=function(t,e,r){e=e||"utf8",U.isBuffer(t)||(t=new U(t,e));var i=this.curve.keyFromPublic(t).getPublic(),n=i.mul(this.keys.getPrivate()).getX();return Wp(n,r,this.curveType.byteLength)};ta.prototype.getPublicKey=function(t,e){var r=this.keys.getPublic(e==="compressed",!0);return e==="hybrid"&&(r[r.length-1]%2?r[0]=7:r[0]=6),Wp(r,t)};ta.prototype.getPrivateKey=function(t){return Wp(this.keys.getPrivate(),t)};ta.prototype.setPublicKey=function(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this.keys._importPublic(t),this};ta.prototype.setPrivateKey=function(t,e){e=e||"utf8",U.isBuffer(t)||(t=new U(t,e));var r=new sK(t);return r=r.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(r),this};function Wp(t,e,r){Array.isArray(t)||(t=t.toArray());var i=new U(t);if(r&&i.length{g();var uK=Ma(),Jp=vt().Buffer;E9.exports=function(t,e){for(var r=Jp.alloc(0),i=0,n;r.length{g();M9.exports=function(e,r){for(var i=e.length,n=-1;++n{g();var S9=sr(),cK=vt().Buffer;function dK(t,e){return cK.from(t.toRed(S9.mont(e.modulus)).redPow(new S9(e.publicExponent)).fromRed().toArray())}C9.exports=dK});var T9=P((cie,R9)=>{g();var lK=Ss(),tv=qf(),pK=Ma(),B9=Xp(),q9=Zp(),rv=sr(),vK=ev(),bK=eh(),Di=vt().Buffer;R9.exports=function(e,r,i){var n;e.padding?n=e.padding:i?n=1:n=4;var a=lK(e),o;if(n===4)o=gK(a,r);else if(n===1)o=yK(a,r,i);else if(n===3){if(o=new rv(r),o.cmp(a.modulus)>=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return i?bK(o,a):vK(o,a)};function gK(t,e){var r=t.modulus.byteLength(),i=e.length,n=pK("sha1").update(Di.alloc(0)).digest(),a=n.length,o=2*a;if(i>r-o-2)throw new Error("message too long");var c=Di.alloc(r-i-o-2),m=r-a-1,M=tv(a),B=q9(Di.concat([n,c,Di.alloc(1,1),e],m),B9(M,m)),R=q9(M,B9(B,a));return new rv(Di.concat([Di.alloc(1),R,B],r))}function yK(t,e,r){var i=e.length,n=t.modulus.byteLength();if(i>n-11)throw new Error("message too long");var a;return r?a=Di.alloc(n-i-3,255):a=mK(n-i-3),new rv(Di.concat([Di.from([0,r?1:2]),a,Di.alloc(1),e],n))}function mK(t){for(var e=Di.allocUnsafe(t),r=0,i=tv(t*2),n=0,a;r{g();var xK=Ss(),O9=Xp(),D9=Zp(),P9=sr(),wK=eh(),AK=Ma(),_K=ev(),Rs=vt().Buffer;U9.exports=function(e,r,i){var n;e.padding?n=e.padding:i?n=1:n=4;var a=xK(e),o=a.modulus.byteLength();if(r.length>o||new P9(r).cmp(a.modulus)>=0)throw new Error("decryption error");var c;i?c=_K(new P9(r),a):c=wK(r,a);var m=Rs.alloc(o-c.length);if(c=Rs.concat([m,c],o),n===4)return IK(a,c);if(n===1)return EK(a,c,i);if(n===3)return c;throw new Error("unknown padding")};function IK(t,e){var r=t.modulus.byteLength(),i=AK("sha1").update(Rs.alloc(0)).digest(),n=i.length;if(e[0]!==0)throw new Error("decryption error");var a=e.slice(1,n+1),o=e.slice(n+1),c=D9(a,O9(o,n)),m=D9(o,O9(c,r-n-1));if(MK(i,m.slice(0,n)))throw new Error("decryption error");for(var M=n;m[M]===0;)M++;if(m[M++]!==1)throw new Error("decryption error");return m.slice(M)}function EK(t,e,r){for(var i=e.slice(0,2),n=2,a=0;e[n++]!==0;)if(n>=e.length){a++;break}var o=e.slice(2,n-1);if((i.toString("hex")!=="0002"&&!r||i.toString("hex")!=="0001"&&r)&&a++,o.length<8&&a++,a)throw new Error("decryption error");return e.slice(n)}function MK(t,e){t=Rs.from(t),e=Rs.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));for(var n=-1;++n{g();ra.publicEncrypt=T9();ra.privateDecrypt=k9();ra.privateEncrypt=function(e,r){return ra.publicEncrypt(e,r,!0)};ra.publicDecrypt=function(e,r){return ra.privateDecrypt(e,r,!0)}});var V9=P(Ts=>{"use strict";g();function L9(){throw new Error(`secure random number generation not supported by this browser -use chrome, FireFox or Internet Explorer 11`)}var Q9=vt(),N9=qf(),K9=Q9.Buffer,j9=Q9.kMaxLength,iv=window.crypto||window.msCrypto,H9=Math.pow(2,32)-1;function z9(t,e){if(typeof t!="number"||t!==t)throw new TypeError("offset must be a number");if(t>H9||t<0)throw new TypeError("offset must be a uint32");if(t>j9||t>e)throw new RangeError("offset out of range")}function G9(t,e,r){if(typeof t!="number"||t!==t)throw new TypeError("size must be a number");if(t>H9||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>j9)throw new RangeError("buffer too small")}iv&&iv.getRandomValues||!process.browser?(Ts.randomFill=SK,Ts.randomFillSync=CK):(Ts.randomFill=L9,Ts.randomFillSync=L9);function SK(t,e,r,i){if(!K9.isBuffer(t)&&!(t instanceof window.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof e=="function")i=e,e=0,r=t.length;else if(typeof r=="function")i=r,r=t.length-e;else if(typeof i!="function")throw new TypeError('"cb" argument must be a function');return z9(e,t.length),G9(r,e,t.length),Y9(t,e,r,i)}function Y9(t,e,r,i){if(process.browser){var n=t.buffer,a=new Uint8Array(n,e,r);if(iv.getRandomValues(a),i){process.nextTick(function(){i(null,t)});return}return t}if(i){N9(r,function(c,m){if(c)return i(c);m.copy(t,e),i(null,t)});return}var o=N9(r);return o.copy(t,e),t}function CK(t,e,r){if(typeof e>"u"&&(e=0),!K9.isBuffer(t)&&!(t instanceof window.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return z9(e,t.length),r===void 0&&(r=t.length-e),G9(r,e,t.length),Y9(t,e,r)}});var nv=P(yt=>{"use strict";g();yt.randomBytes=yt.rng=yt.pseudoRandomBytes=yt.prng=qf();yt.createHash=yt.Hash=Ma();yt.createHmac=yt.Hmac=A1();var BK=dx(),qK=Object.keys(BK),RK=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(qK);yt.getHashes=function(){return RK};var $9=T1();yt.pbkdf2=$9.pbkdf2;yt.pbkdf2Sync=$9.pbkdf2Sync;var en=Dw();yt.Cipher=en.Cipher;yt.createCipher=en.createCipher;yt.Cipheriv=en.Cipheriv;yt.createCipheriv=en.createCipheriv;yt.Decipher=en.Decipher;yt.createDecipher=en.createDecipher;yt.Decipheriv=en.Decipheriv;yt.createDecipheriv=en.createDecipheriv;yt.getCiphers=en.getCiphers;yt.listCiphers=en.listCiphers;var Os=Yw();yt.DiffieHellmanGroup=Os.DiffieHellmanGroup;yt.createDiffieHellmanGroup=Os.createDiffieHellmanGroup;yt.getDiffieHellman=Os.getDiffieHellman;yt.createDiffieHellman=Os.createDiffieHellman;yt.DiffieHellman=Os.DiffieHellman;var Bh=A9();yt.createSign=Bh.createSign;yt.Sign=Bh.Sign;yt.createVerify=Bh.createVerify;yt.Verify=Bh.Verify;yt.createECDH=I9();var qh=F9();yt.publicEncrypt=qh.publicEncrypt;yt.privateEncrypt=qh.privateEncrypt;yt.publicDecrypt=qh.publicDecrypt;yt.privateDecrypt=qh.privateDecrypt;var W9=V9();yt.randomFill=W9.randomFill;yt.randomFillSync=W9.randomFillSync;yt.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join(` -`))};yt.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}});var J9=P((wie,Rh)=>{g();(function(){"use strict";var t="input is invalid type",e="finalize already called",r=typeof window=="object",i=r?window:{};i.JS_SHA3_NO_WINDOW&&(r=!1);var n=!r&&typeof self=="object",a=!i.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;a?i=window:n&&(i=self);var o=!i.JS_SHA3_NO_COMMON_JS&&typeof Rh=="object"&&Rh.exports,c=typeof define=="function"&&define.amd,m=!i.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",M="0123456789abcdef".split(""),B=[31,7936,2031616,520093696],R=[4,1024,262144,67108864],F=[1,256,65536,16777216],N=[6,1536,393216,100663296],G=[0,8,16,24],Z=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],ie=[224,256,384,512],fe=[128,256],ce=["hex","buffer","arrayBuffer","array","digest"],ge={128:168,256:136};(i.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(S){return Object.prototype.toString.call(S)==="[object Array]"}),m&&(i.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(S){return typeof S=="object"&&S.buffer&&S.buffer.constructor===ArrayBuffer});for(var ve=function(S,L,Q){return function(z){return new u(S,L,S).update(z)[Q]()}},Ke=function(S,L,Q){return function(z,J){return new u(S,L,J).update(z)[Q]()}},be=function(S,L,Q){return function(z,J,he,W){return f["cshake"+S].update(z,J,he,W)[Q]()}},pe=function(S,L,Q){return function(z,J,he,W){return f["kmac"+S].update(z,J,he,W)[Q]()}},Ne=function(S,L,Q,z){for(var J=0;J>5,this.byteCount=this.blockCount<<2,this.outputBlocks=Q>>5,this.extraBytes=(Q&31)>>3;for(var z=0;z<50;++z)this.s[z]=0}u.prototype.update=function(S){if(this.finalized)throw new Error(e);var L,Q=typeof S;if(Q!=="string"){if(Q==="object"){if(S===null)throw new Error(t);if(m&&S.constructor===ArrayBuffer)S=new Uint8Array(S);else if(!Array.isArray(S)&&(!m||!ArrayBuffer.isView(S)))throw new Error(t)}else throw new Error(t);L=!0}for(var z=this.blocks,J=this.byteCount,he=S.length,W=this.blockCount,te=0,Qe=this.s,ne,ye;te>2]|=S[te]<>2]|=ye<>2]|=(192|ye>>6)<>2]|=(128|ye&63)<=57344?(z[ne>>2]|=(224|ye>>12)<>2]|=(128|ye>>6&63)<>2]|=(128|ye&63)<>2]|=(240|ye>>18)<>2]|=(128|ye>>12&63)<>2]|=(128|ye>>6&63)<>2]|=(128|ye&63)<=J){for(this.start=ne-J,this.block=z[W],ne=0;ne>8,Q=S&255;Q>0;)J.unshift(Q),S=S>>8,Q=S&255,++z;return L?J.push(z):J.unshift(z),this.update(J),J.length},u.prototype.encodeString=function(S){var L,Q=typeof S;if(Q!=="string"){if(Q==="object"){if(S===null)throw new Error(t);if(m&&S.constructor===ArrayBuffer)S=new Uint8Array(S);else if(!Array.isArray(S)&&(!m||!ArrayBuffer.isView(S)))throw new Error(t)}else throw new Error(t);L=!0}var z=0,J=S.length;if(L)z=J;else for(var he=0;he=57344?z+=3:(W=65536+((W&1023)<<10|S.charCodeAt(++he)&1023),z+=4)}return z+=this.encode(z*8),this.update(S),z},u.prototype.bytepad=function(S,L){for(var Q=this.encode(L),z=0;z>2]|=this.padding[L&3],this.lastByteIndex===this.byteCount)for(S[0]=S[Q],L=1;L>4&15]+M[te&15]+M[te>>12&15]+M[te>>8&15]+M[te>>20&15]+M[te>>16&15]+M[te>>28&15]+M[te>>24&15];he%S===0&&(j(L),J=0)}return z&&(te=L[J],W+=M[te>>4&15]+M[te&15],z>1&&(W+=M[te>>12&15]+M[te>>8&15]),z>2&&(W+=M[te>>20&15]+M[te>>16&15])),W},u.prototype.arrayBuffer=function(){this.finalize();var S=this.blockCount,L=this.s,Q=this.outputBlocks,z=this.extraBytes,J=0,he=0,W=this.outputBits>>3,te;z?te=new ArrayBuffer(Q+1<<2):te=new ArrayBuffer(W);for(var Qe=new Uint32Array(te);he>8&255,W[te+2]=Qe>>16&255,W[te+3]=Qe>>24&255;he%S===0&&j(L)}return z&&(te=he<<2,Qe=L[J],W[te]=Qe&255,z>1&&(W[te+1]=Qe>>8&255),z>2&&(W[te+2]=Qe>>16&255)),W};function I(S,L,Q){u.call(this,S,L,Q)}I.prototype=new u,I.prototype.finalize=function(){return this.encode(this.outputBits,!0),u.prototype.finalize.call(this)};var j=function(S){var L,Q,z,J,he,W,te,Qe,ne,ye,Rt,Pe,We,It,Ue,tt,St,Re,rt,Et,Oe,it,Tt,ke,nt,Ct,Te,Ze,wt,Be,et,_t,qe,ft,Ot,Fe,ut,lt,Se,Xe,Bt,De,at,Ut,_e,ot,C,T,O,w,D,H,Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge;for(z=0;z<48;z+=2)J=S[0]^S[10]^S[20]^S[30]^S[40],he=S[1]^S[11]^S[21]^S[31]^S[41],W=S[2]^S[12]^S[22]^S[32]^S[42],te=S[3]^S[13]^S[23]^S[33]^S[43],Qe=S[4]^S[14]^S[24]^S[34]^S[44],ne=S[5]^S[15]^S[25]^S[35]^S[45],ye=S[6]^S[16]^S[26]^S[36]^S[46],Rt=S[7]^S[17]^S[27]^S[37]^S[47],Pe=S[8]^S[18]^S[28]^S[38]^S[48],We=S[9]^S[19]^S[29]^S[39]^S[49],L=Pe^(W<<1|te>>>31),Q=We^(te<<1|W>>>31),S[0]^=L,S[1]^=Q,S[10]^=L,S[11]^=Q,S[20]^=L,S[21]^=Q,S[30]^=L,S[31]^=Q,S[40]^=L,S[41]^=Q,L=J^(Qe<<1|ne>>>31),Q=he^(ne<<1|Qe>>>31),S[2]^=L,S[3]^=Q,S[12]^=L,S[13]^=Q,S[22]^=L,S[23]^=Q,S[32]^=L,S[33]^=Q,S[42]^=L,S[43]^=Q,L=W^(ye<<1|Rt>>>31),Q=te^(Rt<<1|ye>>>31),S[4]^=L,S[5]^=Q,S[14]^=L,S[15]^=Q,S[24]^=L,S[25]^=Q,S[34]^=L,S[35]^=Q,S[44]^=L,S[45]^=Q,L=Qe^(Pe<<1|We>>>31),Q=ne^(We<<1|Pe>>>31),S[6]^=L,S[7]^=Q,S[16]^=L,S[17]^=Q,S[26]^=L,S[27]^=Q,S[36]^=L,S[37]^=Q,S[46]^=L,S[47]^=Q,L=ye^(J<<1|he>>>31),Q=Rt^(he<<1|J>>>31),S[8]^=L,S[9]^=Q,S[18]^=L,S[19]^=Q,S[28]^=L,S[29]^=Q,S[38]^=L,S[39]^=Q,S[48]^=L,S[49]^=Q,It=S[0],Ue=S[1],ot=S[11]<<4|S[10]>>>28,C=S[10]<<4|S[11]>>>28,Ze=S[20]<<3|S[21]>>>29,wt=S[21]<<3|S[20]>>>29,je=S[31]<<9|S[30]>>>23,ze=S[30]<<9|S[31]>>>23,De=S[40]<<18|S[41]>>>14,at=S[41]<<18|S[40]>>>14,ft=S[2]<<1|S[3]>>>31,Ot=S[3]<<1|S[2]>>>31,tt=S[13]<<12|S[12]>>>20,St=S[12]<<12|S[13]>>>20,T=S[22]<<10|S[23]>>>22,O=S[23]<<10|S[22]>>>22,Be=S[33]<<13|S[32]>>>19,et=S[32]<<13|S[33]>>>19,Ye=S[42]<<2|S[43]>>>30,Ge=S[43]<<2|S[42]>>>30,V=S[5]<<30|S[4]>>>2,ee=S[4]<<30|S[5]>>>2,Fe=S[14]<<6|S[15]>>>26,ut=S[15]<<6|S[14]>>>26,Re=S[25]<<11|S[24]>>>21,rt=S[24]<<11|S[25]>>>21,w=S[34]<<15|S[35]>>>17,D=S[35]<<15|S[34]>>>17,_t=S[45]<<29|S[44]>>>3,qe=S[44]<<29|S[45]>>>3,ke=S[6]<<28|S[7]>>>4,nt=S[7]<<28|S[6]>>>4,Ee=S[17]<<23|S[16]>>>9,ae=S[16]<<23|S[17]>>>9,lt=S[26]<<25|S[27]>>>7,Se=S[27]<<25|S[26]>>>7,Et=S[36]<<21|S[37]>>>11,Oe=S[37]<<21|S[36]>>>11,H=S[47]<<24|S[46]>>>8,Y=S[46]<<24|S[47]>>>8,Ut=S[8]<<27|S[9]>>>5,_e=S[9]<<27|S[8]>>>5,Ct=S[18]<<20|S[19]>>>12,Te=S[19]<<20|S[18]>>>12,xe=S[29]<<7|S[28]>>>25,we=S[28]<<7|S[29]>>>25,Xe=S[38]<<8|S[39]>>>24,Bt=S[39]<<8|S[38]>>>24,it=S[48]<<14|S[49]>>>18,Tt=S[49]<<14|S[48]>>>18,S[0]=It^~tt&Re,S[1]=Ue^~St&rt,S[10]=ke^~Ct&Ze,S[11]=nt^~Te&wt,S[20]=ft^~Fe<,S[21]=Ot^~ut&Se,S[30]=Ut^~ot&T,S[31]=_e^~C&O,S[40]=V^~Ee&xe,S[41]=ee^~ae&we,S[2]=tt^~Re&Et,S[3]=St^~rt&Oe,S[12]=Ct^~Ze&Be,S[13]=Te^~wt&et,S[22]=Fe^~lt&Xe,S[23]=ut^~Se&Bt,S[32]=ot^~T&w,S[33]=C^~O&D,S[42]=Ee^~xe&je,S[43]=ae^~we&ze,S[4]=Re^~Et&it,S[5]=rt^~Oe&Tt,S[14]=Ze^~Be&_t,S[15]=wt^~et&qe,S[24]=lt^~Xe&De,S[25]=Se^~Bt&at,S[34]=T^~w&H,S[35]=O^~D&Y,S[44]=xe^~je&Ye,S[45]=we^~ze&Ge,S[6]=Et^~it&It,S[7]=Oe^~Tt&Ue,S[16]=Be^~_t&ke,S[17]=et^~qe&nt,S[26]=Xe^~De&ft,S[27]=Bt^~at&Ot,S[36]=w^~H&Ut,S[37]=D^~Y&_e,S[46]=je^~Ye&V,S[47]=ze^~Ge&ee,S[8]=it^~It&tt,S[9]=Tt^~Ue&St,S[18]=_t^~ke&Ct,S[19]=qe^~nt&Te,S[28]=De^~ft&Fe,S[29]=at^~Ot&ut,S[38]=H^~Ut&ot,S[39]=Y^~_e&C,S[48]=Ye^~V&Ee,S[49]=Ge^~ee&ae,S[0]^=Z[z],S[1]^=Z[z+1]};if(o)Rh.exports=f;else{for(v=0;v{g();qn.notEqual=OK;qn.notOk=DK;qn.equal=TK;qn.ok=qn;X9.exports=qn;function TK(t,e,r){qn(t==e,r)}function OK(t,e,r){qn(t!=e,r)}function DK(t,e){qn(!t,e)}function qn(t,e){if(!t)throw new Error(e||"AssertionError")}});var e_=P((Eie,Z9)=>{g();Z9.exports=av;av.supported=typeof WebAssembly<"u";function av(t){if(!av.supported)return null;var e=t&&t.imports,r=PK("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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"),i=null,n={buffer:r,memory:null,exports:null,realloc:a,onload:o};return o(function(){}),n;function a(m){n.exports.memory.grow(Math.ceil(Math.abs(m-n.memory.length)/65536)),n.memory=new Uint8Array(n.exports.memory.buffer)}function o(m){if(n.exports)return m();if(i){i.then(m.bind(null,null)).catch(m);return}try{if(t&&t.async)throw new Error("async");c({instance:new WebAssembly.Instance(new WebAssembly.Module(r),e)})}catch{i=WebAssembly.instantiate(r,e).then(c)}o(m)}function c(m){n.exports=m.instance.exports,n.memory=n.exports.memory&&n.exports.memory.buffer&&new Uint8Array(n.exports.memory.buffer)}}function PK(t){return typeof atob=="function"?new Uint8Array(atob(t).split("").map(UK)):new(fn()).Buffer(t,"base64")}function UK(t){return t.charCodeAt(0)}});var o_=P((Bie,rn)=>{g();var tn=fv(),Vt=e_()(),Rn=64,Th=[];rn.exports=bi;var t_=rn.exports.BYTES_MIN=16,r_=rn.exports.BYTES_MAX=64,Sie=rn.exports.BYTES=32,i_=rn.exports.KEYBYTES_MIN=16,n_=rn.exports.KEYBYTES_MAX=64,Cie=rn.exports.KEYBYTES=32,f_=rn.exports.SALTBYTES=16,a_=rn.exports.PERSONALBYTES=16;function bi(t,e,r,i,n){if(!(this instanceof bi))return new bi(t,e,r,i,n);if(!(Vt&&Vt.exports))throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),n!==!0&&(tn(t>=t_,"digestLength must be at least "+t_+", was given "+t),tn(t<=r_,"digestLength must be at most "+r_+", was given "+t),e!=null&&tn(e.length>=i_,"key must be at least "+i_+", was given "+e.length),e!=null&&tn(e.length<=n_,"key must be at least "+n_+", was given "+e.length),r!=null&&tn(r.length===f_,"salt must be exactly "+f_+", was given "+r.length),i!=null&&tn(i.length===a_,"personal must be exactly "+a_+", was given "+i.length)),Th.length||(Th.push(Rn),Rn+=216),this.digestLength=t,this.finalized=!1,this.pointer=Th.pop(),Vt.memory.fill(0,0,64),Vt.memory[0]=this.digestLength,Vt.memory[1]=e?e.length:0,Vt.memory[2]=1,Vt.memory[3]=1,r&&Vt.memory.set(r,32),i&&Vt.memory.set(i,48),this.pointer+216>Vt.memory.length&&Vt.realloc(this.pointer+216),Vt.exports.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),Vt.memory.fill(0,Rn,Rn+e.length),Vt.memory[this.pointer+200]=128)}bi.prototype.update=function(t){return tn(this.finalized===!1,"Hash instance finalized"),tn(t,"input must be TypedArray or Buffer"),Rn+t.length>Vt.memory.length&&Vt.realloc(Rn+t.length),Vt.memory.set(t,Rn),Vt.exports.blake2b_update(this.pointer,Rn,Rn+t.length),this};bi.prototype.digest=function(t){if(tn(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,Th.push(this.pointer),Vt.exports.blake2b_final(this.pointer),!t||t==="binary")return Vt.memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(t==="hex")return FK(Vt.memory,this.pointer+128,this.digestLength);tn(t.length>=this.digestLength,"input must be TypedArray or Buffer");for(var e=0;e{g();var uf=fv(),Ps=o_();function Oh(t,e,r){var i=t[e]+t[r],n=t[e+1]+t[r+1];i>=4294967296&&n++,t[e]=i,t[e+1]=n}function s_(t,e,r,i){var n=t[e]+r;r<0&&(n+=4294967296);var a=t[e+1]+i;n>=4294967296&&a++,t[e]=n,t[e+1]=a}function v_(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function of(t,e,r,i,n,a){var o=Ds[n],c=Ds[n+1],m=Ds[a],M=Ds[a+1];Oh(dt,t,e),s_(dt,t,o,c);var B=dt[i]^dt[t],R=dt[i+1]^dt[t+1];dt[i]=R,dt[i+1]=B,Oh(dt,r,i),B=dt[e]^dt[r],R=dt[e+1]^dt[r+1],dt[e]=B>>>24^R<<8,dt[e+1]=R>>>24^B<<8,Oh(dt,t,e),s_(dt,t,m,M),B=dt[i]^dt[t],R=dt[i+1]^dt[t+1],dt[i]=B>>>16^R<<16,dt[i+1]=R>>>16^B<<16,Oh(dt,r,i),B=dt[e]^dt[r],R=dt[e+1]^dt[r+1],dt[e]=R>>>31^B<<1,dt[e+1]=B>>>31^R<<1}var b_=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),NK=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],Br=new Uint8Array(NK.map(function(t){return t*2})),dt=new Uint32Array(32),Ds=new Uint32Array(32);function g_(t,e){var r=0;for(r=0;r<16;r++)dt[r]=t.h[r],dt[r+16]=b_[r];for(dt[24]=dt[24]^t.t,dt[25]=dt[25]^t.t/4294967296,e&&(dt[28]=~dt[28],dt[29]=~dt[29]),r=0;r<32;r++)Ds[r]=v_(t.b,4*r);for(r=0;r<12;r++)of(0,8,16,24,Br[r*16+0],Br[r*16+1]),of(2,10,18,26,Br[r*16+2],Br[r*16+3]),of(4,12,20,28,Br[r*16+4],Br[r*16+5]),of(6,14,22,30,Br[r*16+6],Br[r*16+7]),of(0,10,20,30,Br[r*16+8],Br[r*16+9]),of(2,12,22,24,Br[r*16+10],Br[r*16+11]),of(4,14,16,26,Br[r*16+12],Br[r*16+13]),of(6,8,18,28,Br[r*16+14],Br[r*16+15]);for(r=0;r<16;r++)t.h[r]=t.h[r]^dt[r]^dt[r+16]}var sf=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Za(t,e,r,i){sf.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=t,sf[0]=t,e&&(sf[1]=e.length),sf[2]=1,sf[3]=1,r&&sf.set(r,32),i&&sf.set(i,48);for(var n=0;n<16;n++)this.h[n]=b_[n]^v_(sf,n*4);e&&(y_(this,e),this.c=128)}Za.prototype.update=function(t){return uf(t!=null,"input must be Uint8Array or Buffer"),y_(this,t),this};Za.prototype.digest=function(t){var e=!t||t==="binary"||t==="hex"?new Uint8Array(this.outlen):t;return uf(e.length>=this.outlen,"out must have at least outlen bytes of space"),QK(this,e),t==="hex"?KK(e):e};Za.prototype.final=Za.prototype.digest;Za.ready=function(t){Ps.ready(function(){t()})};function y_(t,e){for(var r=0;r>2]>>8*(r&3);return e}function KK(t){for(var e="",r=0;r=u_,"outlen must be at least "+u_+", was given "+e),uf(e<=h_,"outlen must be at most "+h_+", was given "+e),r!=null&&uf(r.length>=c_,"key must be at least "+c_+", was given "+r.length),r!=null&&uf(r.length<=d_,"key must be at most "+d_+", was given "+r.length),i!=null&&uf(i.length===l_,"salt must be exactly "+l_+", was given "+i.length),n!=null&&uf(n.length===p_,"personal must be exactly "+p_+", was given "+n.length)),new m_(e,r,i,n)};Qr.exports.ready=function(t){Ps.ready(function(){t()})};Qr.exports.WASM_SUPPORTED=Ps.SUPPORTED;Qr.exports.WASM_LOADED=!1;var u_=Qr.exports.BYTES_MIN=16,h_=Qr.exports.BYTES_MAX=64,Rie=Qr.exports.BYTES=32,c_=Qr.exports.KEYBYTES_MIN=16,d_=Qr.exports.KEYBYTES_MAX=64,Tie=Qr.exports.KEYBYTES=32,l_=Qr.exports.SALTBYTES=16,p_=Qr.exports.PERSONALBYTES=16;Ps.ready(function(t){t||(Qr.exports.WASM_LOADED=!0,m_=Ps)})});var D_=P(Tn=>{"use strict";g();Object.defineProperty(Tn,"__esModule",{value:!0});var Pie=new Uint8Array(16),C_=new Uint8Array(32);C_[0]=9;function He(t){var e,r=new Float64Array(16);if(t)for(e=0;e>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r&255,t[e+4]=i>>24&255,t[e+5]=i>>16&255,t[e+6]=i>>8&255,t[e+7]=i&255}function VK(t,e,r,i,n){var a,o=0;for(a=0;a>>8)-1}function B_(t,e,r,i){return VK(t,e,r,i,32)}function hf(t,e){var r;for(r=0;r<16;r++)t[r]=e[r]|0}function ov(t){var e,r,i=1;for(e=0;e<16;e++)r=t[e]+i+65535,i=Math.floor(r/65536),t[e]=r-i*65536;t[0]+=i-1+37*(i-1)}function eo(t,e,r){for(var i,n=~(r-1),a=0;a<16;a++)i=n&(t[a]^e[a]),t[a]^=i,e[a]^=i}function ro(t,e){var r,i,n,a=He(),o=He();for(r=0;r<16;r++)o[r]=e[r];for(ov(o),ov(o),ov(o),i=0;i<2;i++){for(a[0]=o[0]-65517,r=1;r<15;r++)a[r]=o[r]-65535-(a[r-1]>>16&1),a[r-1]&=65535;a[15]=o[15]-32767-(a[14]>>16&1),n=a[15]>>16&1,a[14]&=65535,eo(o,a,1-n)}for(r=0;r<16;r++)t[2*r]=o[r]&255,t[2*r+1]=o[r]>>8}function I_(t,e){var r=new Uint8Array(32),i=new Uint8Array(32);return ro(r,t),ro(i,e),B_(r,0,i,0)}function q_(t){var e=new Uint8Array(32);return ro(e,t),e[0]&1}function dv(t,e){var r;for(r=0;r<16;r++)t[r]=e[2*r]+(e[2*r+1]<<8);t[15]&=32767}function Pi(t,e,r){for(var i=0;i<16;i++)t[i]=e[i]+r[i]}function ki(t,e,r){for(var i=0;i<16;i++)t[i]=e[i]-r[i]}function qt(t,e,r){var i,n,a=0,o=0,c=0,m=0,M=0,B=0,R=0,F=0,N=0,G=0,Z=0,ie=0,fe=0,ce=0,ge=0,ve=0,Ke=0,be=0,pe=0,Ne=0,k=0,d=0,b=0,E=0,p=0,f=0,s=0,v=0,l=0,h=0,A=0,q=r[0],_=r[1],u=r[2],I=r[3],j=r[4],S=r[5],L=r[6],Q=r[7],z=r[8],J=r[9],he=r[10],W=r[11],te=r[12],Qe=r[13],ne=r[14],ye=r[15];i=e[0],a+=i*q,o+=i*_,c+=i*u,m+=i*I,M+=i*j,B+=i*S,R+=i*L,F+=i*Q,N+=i*z,G+=i*J,Z+=i*he,ie+=i*W,fe+=i*te,ce+=i*Qe,ge+=i*ne,ve+=i*ye,i=e[1],o+=i*q,c+=i*_,m+=i*u,M+=i*I,B+=i*j,R+=i*S,F+=i*L,N+=i*Q,G+=i*z,Z+=i*J,ie+=i*he,fe+=i*W,ce+=i*te,ge+=i*Qe,ve+=i*ne,Ke+=i*ye,i=e[2],c+=i*q,m+=i*_,M+=i*u,B+=i*I,R+=i*j,F+=i*S,N+=i*L,G+=i*Q,Z+=i*z,ie+=i*J,fe+=i*he,ce+=i*W,ge+=i*te,ve+=i*Qe,Ke+=i*ne,be+=i*ye,i=e[3],m+=i*q,M+=i*_,B+=i*u,R+=i*I,F+=i*j,N+=i*S,G+=i*L,Z+=i*Q,ie+=i*z,fe+=i*J,ce+=i*he,ge+=i*W,ve+=i*te,Ke+=i*Qe,be+=i*ne,pe+=i*ye,i=e[4],M+=i*q,B+=i*_,R+=i*u,F+=i*I,N+=i*j,G+=i*S,Z+=i*L,ie+=i*Q,fe+=i*z,ce+=i*J,ge+=i*he,ve+=i*W,Ke+=i*te,be+=i*Qe,pe+=i*ne,Ne+=i*ye,i=e[5],B+=i*q,R+=i*_,F+=i*u,N+=i*I,G+=i*j,Z+=i*S,ie+=i*L,fe+=i*Q,ce+=i*z,ge+=i*J,ve+=i*he,Ke+=i*W,be+=i*te,pe+=i*Qe,Ne+=i*ne,k+=i*ye,i=e[6],R+=i*q,F+=i*_,N+=i*u,G+=i*I,Z+=i*j,ie+=i*S,fe+=i*L,ce+=i*Q,ge+=i*z,ve+=i*J,Ke+=i*he,be+=i*W,pe+=i*te,Ne+=i*Qe,k+=i*ne,d+=i*ye,i=e[7],F+=i*q,N+=i*_,G+=i*u,Z+=i*I,ie+=i*j,fe+=i*S,ce+=i*L,ge+=i*Q,ve+=i*z,Ke+=i*J,be+=i*he,pe+=i*W,Ne+=i*te,k+=i*Qe,d+=i*ne,b+=i*ye,i=e[8],N+=i*q,G+=i*_,Z+=i*u,ie+=i*I,fe+=i*j,ce+=i*S,ge+=i*L,ve+=i*Q,Ke+=i*z,be+=i*J,pe+=i*he,Ne+=i*W,k+=i*te,d+=i*Qe,b+=i*ne,E+=i*ye,i=e[9],G+=i*q,Z+=i*_,ie+=i*u,fe+=i*I,ce+=i*j,ge+=i*S,ve+=i*L,Ke+=i*Q,be+=i*z,pe+=i*J,Ne+=i*he,k+=i*W,d+=i*te,b+=i*Qe,E+=i*ne,p+=i*ye,i=e[10],Z+=i*q,ie+=i*_,fe+=i*u,ce+=i*I,ge+=i*j,ve+=i*S,Ke+=i*L,be+=i*Q,pe+=i*z,Ne+=i*J,k+=i*he,d+=i*W,b+=i*te,E+=i*Qe,p+=i*ne,f+=i*ye,i=e[11],ie+=i*q,fe+=i*_,ce+=i*u,ge+=i*I,ve+=i*j,Ke+=i*S,be+=i*L,pe+=i*Q,Ne+=i*z,k+=i*J,d+=i*he,b+=i*W,E+=i*te,p+=i*Qe,f+=i*ne,s+=i*ye,i=e[12],fe+=i*q,ce+=i*_,ge+=i*u,ve+=i*I,Ke+=i*j,be+=i*S,pe+=i*L,Ne+=i*Q,k+=i*z,d+=i*J,b+=i*he,E+=i*W,p+=i*te,f+=i*Qe,s+=i*ne,v+=i*ye,i=e[13],ce+=i*q,ge+=i*_,ve+=i*u,Ke+=i*I,be+=i*j,pe+=i*S,Ne+=i*L,k+=i*Q,d+=i*z,b+=i*J,E+=i*he,p+=i*W,f+=i*te,s+=i*Qe,v+=i*ne,l+=i*ye,i=e[14],ge+=i*q,ve+=i*_,Ke+=i*u,be+=i*I,pe+=i*j,Ne+=i*S,k+=i*L,d+=i*Q,b+=i*z,E+=i*J,p+=i*he,f+=i*W,s+=i*te,v+=i*Qe,l+=i*ne,h+=i*ye,i=e[15],ve+=i*q,Ke+=i*_,be+=i*u,pe+=i*I,Ne+=i*j,k+=i*S,d+=i*L,b+=i*Q,E+=i*z,p+=i*J,f+=i*he,s+=i*W,v+=i*te,l+=i*Qe,h+=i*ne,A+=i*ye,a+=38*Ke,o+=38*be,c+=38*pe,m+=38*Ne,M+=38*k,B+=38*d,R+=38*b,F+=38*E,N+=38*p,G+=38*f,Z+=38*s,ie+=38*v,fe+=38*l,ce+=38*h,ge+=38*A,n=1,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=m+n+65535,n=Math.floor(i/65536),m=i-n*65536,i=M+n+65535,n=Math.floor(i/65536),M=i-n*65536,i=B+n+65535,n=Math.floor(i/65536),B=i-n*65536,i=R+n+65535,n=Math.floor(i/65536),R=i-n*65536,i=F+n+65535,n=Math.floor(i/65536),F=i-n*65536,i=N+n+65535,n=Math.floor(i/65536),N=i-n*65536,i=G+n+65535,n=Math.floor(i/65536),G=i-n*65536,i=Z+n+65535,n=Math.floor(i/65536),Z=i-n*65536,i=ie+n+65535,n=Math.floor(i/65536),ie=i-n*65536,i=fe+n+65535,n=Math.floor(i/65536),fe=i-n*65536,i=ce+n+65535,n=Math.floor(i/65536),ce=i-n*65536,i=ge+n+65535,n=Math.floor(i/65536),ge=i-n*65536,i=ve+n+65535,n=Math.floor(i/65536),ve=i-n*65536,a+=n-1+37*(n-1),n=1,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=m+n+65535,n=Math.floor(i/65536),m=i-n*65536,i=M+n+65535,n=Math.floor(i/65536),M=i-n*65536,i=B+n+65535,n=Math.floor(i/65536),B=i-n*65536,i=R+n+65535,n=Math.floor(i/65536),R=i-n*65536,i=F+n+65535,n=Math.floor(i/65536),F=i-n*65536,i=N+n+65535,n=Math.floor(i/65536),N=i-n*65536,i=G+n+65535,n=Math.floor(i/65536),G=i-n*65536,i=Z+n+65535,n=Math.floor(i/65536),Z=i-n*65536,i=ie+n+65535,n=Math.floor(i/65536),ie=i-n*65536,i=fe+n+65535,n=Math.floor(i/65536),fe=i-n*65536,i=ce+n+65535,n=Math.floor(i/65536),ce=i-n*65536,i=ge+n+65535,n=Math.floor(i/65536),ge=i-n*65536,i=ve+n+65535,n=Math.floor(i/65536),ve=i-n*65536,a+=n-1+37*(n-1),t[0]=a,t[1]=o,t[2]=c,t[3]=m,t[4]=M,t[5]=B,t[6]=R,t[7]=F,t[8]=N,t[9]=G,t[10]=Z,t[11]=ie,t[12]=fe,t[13]=ce,t[14]=ge,t[15]=ve}function Ui(t,e){qt(t,e,e)}function lv(t,e){var r=He(),i;for(i=0;i<16;i++)r[i]=e[i];for(i=253;i>=0;i--)Ui(r,r),i!==2&&i!==4&&qt(r,r,e);for(i=0;i<16;i++)t[i]=r[i]}function $K(t,e){var r=He(),i;for(i=0;i<16;i++)r[i]=e[i];for(i=250;i>=0;i--)Ui(r,r),i!==1&&qt(r,r,e);for(i=0;i<16;i++)t[i]=r[i]}function R_(t,e,r){var i=new Uint8Array(32),n=new Float64Array(80),a,o,c=He(),m=He(),M=He(),B=He(),R=He(),F=He();for(o=0;o<31;o++)i[o]=e[o];for(i[31]=e[31]&127|64,i[0]&=248,dv(n,r),o=0;o<16;o++)m[o]=n[o],B[o]=c[o]=M[o]=0;for(c[0]=B[0]=1,o=254;o>=0;--o)a=i[o>>>3]>>>(o&7)&1,eo(c,m,a),eo(M,B,a),Pi(R,c,M),ki(c,c,M),Pi(M,m,B),ki(m,m,B),Ui(B,R),Ui(F,c),qt(c,M,c),qt(M,m,R),Pi(R,c,M),ki(c,c,M),Ui(m,c),ki(M,B,F),qt(c,M,HK),Pi(c,c,B),qt(M,M,c),qt(c,B,F),qt(B,m,n),Ui(m,R),eo(c,m,a),eo(M,B,a);for(o=0;o<16;o++)n[o+16]=c[o],n[o+32]=M[o],n[o+48]=m[o],n[o+64]=B[o];var N=n.subarray(32),G=n.subarray(16);return lv(N,N),qt(G,G,N),ro(t,G),0}function WK(t,e){return R_(t,e,C_)}var E_=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function M_(t,e,r,i){for(var n=new Int32Array(16),a=new Int32Array(16),o,c,m,M,B,R,F,N,G,Z,ie,fe,ce,ge,ve,Ke,be,pe,Ne,k,d,b,E,p,f,s,v=t[0],l=t[1],h=t[2],A=t[3],q=t[4],_=t[5],u=t[6],I=t[7],j=e[0],S=e[1],L=e[2],Q=e[3],z=e[4],J=e[5],he=e[6],W=e[7],te=0;i>=128;){for(Ne=0;Ne<16;Ne++)k=8*Ne+te,n[Ne]=r[k+0]<<24|r[k+1]<<16|r[k+2]<<8|r[k+3],a[Ne]=r[k+4]<<24|r[k+5]<<16|r[k+6]<<8|r[k+7];for(Ne=0;Ne<80;Ne++)if(o=v,c=l,m=h,M=A,B=q,R=_,F=u,N=I,G=j,Z=S,ie=L,fe=Q,ce=z,ge=J,ve=he,Ke=W,d=I,b=W,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=(q>>>14|z<<32-14)^(q>>>18|z<<32-18)^(z>>>41-32|q<<32-(41-32)),b=(z>>>14|q<<32-14)^(z>>>18|q<<32-18)^(q>>>41-32|z<<32-(41-32)),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=q&_^~q&u,b=z&J^~z&he,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=E_[Ne*2],b=E_[Ne*2+1],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=n[Ne%16],b=a[Ne%16],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,be=f&65535|s<<16,pe=E&65535|p<<16,d=be,b=pe,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=(v>>>28|j<<32-28)^(j>>>34-32|v<<32-(34-32))^(j>>>39-32|v<<32-(39-32)),b=(j>>>28|v<<32-28)^(v>>>34-32|j<<32-(34-32))^(v>>>39-32|j<<32-(39-32)),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=v&l^v&h^l&h,b=j&S^j&L^S&L,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,N=f&65535|s<<16,Ke=E&65535|p<<16,d=M,b=fe,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=be,b=pe,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,M=f&65535|s<<16,fe=E&65535|p<<16,l=o,h=c,A=m,q=M,_=B,u=R,I=F,v=N,S=G,L=Z,Q=ie,z=fe,J=ce,he=ge,W=ve,j=Ke,Ne%16===15)for(k=0;k<16;k++)d=n[k],b=a[k],E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=n[(k+9)%16],b=a[(k+9)%16],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,be=n[(k+1)%16],pe=a[(k+1)%16],d=(be>>>1|pe<<32-1)^(be>>>8|pe<<32-8)^be>>>7,b=(pe>>>1|be<<32-1)^(pe>>>8|be<<32-8)^(pe>>>7|be<<32-7),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,be=n[(k+14)%16],pe=a[(k+14)%16],d=(be>>>19|pe<<32-19)^(pe>>>61-32|be<<32-(61-32))^be>>>6,b=(pe>>>19|be<<32-19)^(be>>>61-32|pe<<32-(61-32))^(pe>>>6|be<<32-6),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,n[k]=f&65535|s<<16,a[k]=E&65535|p<<16;d=v,b=j,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[0],b=e[0],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[0]=v=f&65535|s<<16,e[0]=j=E&65535|p<<16,d=l,b=S,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[1],b=e[1],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[1]=l=f&65535|s<<16,e[1]=S=E&65535|p<<16,d=h,b=L,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[2],b=e[2],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[2]=h=f&65535|s<<16,e[2]=L=E&65535|p<<16,d=A,b=Q,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[3],b=e[3],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[3]=A=f&65535|s<<16,e[3]=Q=E&65535|p<<16,d=q,b=z,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[4],b=e[4],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[4]=q=f&65535|s<<16,e[4]=z=E&65535|p<<16,d=_,b=J,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[5],b=e[5],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[5]=_=f&65535|s<<16,e[5]=J=E&65535|p<<16,d=u,b=he,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[6],b=e[6],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[6]=u=f&65535|s<<16,e[6]=he=E&65535|p<<16,d=I,b=W,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[7],b=e[7],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[7]=I=f&65535|s<<16,e[7]=W=E&65535|p<<16,te+=128,i-=128}return i}function Us(t,e,r){var i=new Int32Array(8),n=new Int32Array(8),a=new Uint8Array(256),o,c=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,M_(i,n,e,r),r%=128,o=0;o=0;--n)i=r[n/8|0]>>(n&7)&1,S_(t,e,i),hv(e,t),hv(t,t),S_(t,e,i)}function Ph(t,e){var r=[He(),He(),He(),He()];hf(r[0],w_),hf(r[1],A_),hf(r[2],to),qt(r[3],w_,A_),T_(t,r,e)}var sv=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function pv(t,e){var r,i,n,a;for(i=63;i>=32;--i){for(r=0,n=i-32,a=i-12;n>8,e[n]-=r*256;e[n]+=r,e[i]=0}for(r=0,n=0;n<32;n++)e[n]+=r-(e[31]>>4)*sv[n],r=e[n]>>8,e[n]&=255;for(n=0;n<32;n++)e[n]-=r*sv[n];for(i=0;i<32;i++)e[i+1]+=e[i]>>8,t[i]=e[i]&255}function ks(t){var e=new Float64Array(64),r;for(r=0;r<64;r++)e[r]=t[r];for(r=0;r<64;r++)t[r]=0;pv(t,e)}function JK(t,e,r,i){var n=new Uint8Array(64),a=new Uint8Array(64),o,c,m=new Float64Array(64),M=[He(),He(),He(),He()];for(o=0;o>7&&ki(t[0],uv,t[0]),qt(t[3],t[0],t[1]),0)}function ej(t,e,r,i){var n,a,o=new Uint8Array(32),c=new Uint8Array(64),m=[He(),He(),He(),He()],M=[He(),He(),He(),He()];if(a=-1,r<64||ZK(M,i))return-1;for(n=0;n=0}Tn.verify=aj;function oj(t){if(cf(t),t.length!==32)throw new Error("wrong seed length");for(var e=new Uint8Array(32),r=new Uint8Array(32),i=0;i<32;i++)e[i]=t[i];return WK(r,e),e[0]&=248,e[31]&=127,e[31]|=64,r[31]&=127,{public:r,private:e}}Tn.generateKeyPair=oj;Tn.default={}});var P_=P((Fie,Uh)=>{g();(function(t){"use strict";var e=function(C){var T,O=new Float64Array(16);if(C)for(T=0;T>24&255,C[T+1]=O>>16&255,C[T+2]=O>>8&255,C[T+3]=O&255,C[T+4]=w>>24&255,C[T+5]=w>>16&255,C[T+6]=w>>8&255,C[T+7]=w&255}function G(C,T,O,w,D){var H,Y=0;for(H=0;H>>8)-1}function Z(C,T,O,w){return G(C,T,O,w,16)}function ie(C,T,O,w){return G(C,T,O,w,32)}function fe(C,T,O,w){for(var D=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,H=O[0]&255|(O[1]&255)<<8|(O[2]&255)<<16|(O[3]&255)<<24,Y=O[4]&255|(O[5]&255)<<8|(O[6]&255)<<16|(O[7]&255)<<24,V=O[8]&255|(O[9]&255)<<8|(O[10]&255)<<16|(O[11]&255)<<24,ee=O[12]&255|(O[13]&255)<<8|(O[14]&255)<<16|(O[15]&255)<<24,Ee=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ae=T[0]&255|(T[1]&255)<<8|(T[2]&255)<<16|(T[3]&255)<<24,xe=T[4]&255|(T[5]&255)<<8|(T[6]&255)<<16|(T[7]&255)<<24,we=T[8]&255|(T[9]&255)<<8|(T[10]&255)<<16|(T[11]&255)<<24,je=T[12]&255|(T[13]&255)<<8|(T[14]&255)<<16|(T[15]&255)<<24,ze=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,Ye=O[16]&255|(O[17]&255)<<8|(O[18]&255)<<16|(O[19]&255)<<24,Ge=O[20]&255|(O[21]&255)<<8|(O[22]&255)<<16|(O[23]&255)<<24,Ve=O[24]&255|(O[25]&255)<<8|(O[26]&255)<<16|(O[27]&255)<<24,Je=O[28]&255|(O[29]&255)<<8|(O[30]&255)<<16|(O[31]&255)<<24,$e=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Ie=D,Le=H,Ae=Y,Me=V,Ce=ee,me=Ee,$=ae,X=xe,de=we,oe=je,se=ze,le=Ye,st=Ge,ht=Ve,pt=Je,ct=$e,K,mt=0;mt<20;mt+=2)K=Ie+st|0,Ce^=K<<7|K>>>32-7,K=Ce+Ie|0,de^=K<<9|K>>>32-9,K=de+Ce|0,st^=K<<13|K>>>32-13,K=st+de|0,Ie^=K<<18|K>>>32-18,K=me+Le|0,oe^=K<<7|K>>>32-7,K=oe+me|0,ht^=K<<9|K>>>32-9,K=ht+oe|0,Le^=K<<13|K>>>32-13,K=Le+ht|0,me^=K<<18|K>>>32-18,K=se+$|0,pt^=K<<7|K>>>32-7,K=pt+se|0,Ae^=K<<9|K>>>32-9,K=Ae+pt|0,$^=K<<13|K>>>32-13,K=$+Ae|0,se^=K<<18|K>>>32-18,K=ct+le|0,Me^=K<<7|K>>>32-7,K=Me+ct|0,X^=K<<9|K>>>32-9,K=X+Me|0,le^=K<<13|K>>>32-13,K=le+X|0,ct^=K<<18|K>>>32-18,K=Ie+Me|0,Le^=K<<7|K>>>32-7,K=Le+Ie|0,Ae^=K<<9|K>>>32-9,K=Ae+Le|0,Me^=K<<13|K>>>32-13,K=Me+Ae|0,Ie^=K<<18|K>>>32-18,K=me+Ce|0,$^=K<<7|K>>>32-7,K=$+me|0,X^=K<<9|K>>>32-9,K=X+$|0,Ce^=K<<13|K>>>32-13,K=Ce+X|0,me^=K<<18|K>>>32-18,K=se+oe|0,le^=K<<7|K>>>32-7,K=le+se|0,de^=K<<9|K>>>32-9,K=de+le|0,oe^=K<<13|K>>>32-13,K=oe+de|0,se^=K<<18|K>>>32-18,K=ct+pt|0,st^=K<<7|K>>>32-7,K=st+ct|0,ht^=K<<9|K>>>32-9,K=ht+st|0,pt^=K<<13|K>>>32-13,K=pt+ht|0,ct^=K<<18|K>>>32-18;Ie=Ie+D|0,Le=Le+H|0,Ae=Ae+Y|0,Me=Me+V|0,Ce=Ce+ee|0,me=me+Ee|0,$=$+ae|0,X=X+xe|0,de=de+we|0,oe=oe+je|0,se=se+ze|0,le=le+Ye|0,st=st+Ge|0,ht=ht+Ve|0,pt=pt+Je|0,ct=ct+$e|0,C[0]=Ie>>>0&255,C[1]=Ie>>>8&255,C[2]=Ie>>>16&255,C[3]=Ie>>>24&255,C[4]=Le>>>0&255,C[5]=Le>>>8&255,C[6]=Le>>>16&255,C[7]=Le>>>24&255,C[8]=Ae>>>0&255,C[9]=Ae>>>8&255,C[10]=Ae>>>16&255,C[11]=Ae>>>24&255,C[12]=Me>>>0&255,C[13]=Me>>>8&255,C[14]=Me>>>16&255,C[15]=Me>>>24&255,C[16]=Ce>>>0&255,C[17]=Ce>>>8&255,C[18]=Ce>>>16&255,C[19]=Ce>>>24&255,C[20]=me>>>0&255,C[21]=me>>>8&255,C[22]=me>>>16&255,C[23]=me>>>24&255,C[24]=$>>>0&255,C[25]=$>>>8&255,C[26]=$>>>16&255,C[27]=$>>>24&255,C[28]=X>>>0&255,C[29]=X>>>8&255,C[30]=X>>>16&255,C[31]=X>>>24&255,C[32]=de>>>0&255,C[33]=de>>>8&255,C[34]=de>>>16&255,C[35]=de>>>24&255,C[36]=oe>>>0&255,C[37]=oe>>>8&255,C[38]=oe>>>16&255,C[39]=oe>>>24&255,C[40]=se>>>0&255,C[41]=se>>>8&255,C[42]=se>>>16&255,C[43]=se>>>24&255,C[44]=le>>>0&255,C[45]=le>>>8&255,C[46]=le>>>16&255,C[47]=le>>>24&255,C[48]=st>>>0&255,C[49]=st>>>8&255,C[50]=st>>>16&255,C[51]=st>>>24&255,C[52]=ht>>>0&255,C[53]=ht>>>8&255,C[54]=ht>>>16&255,C[55]=ht>>>24&255,C[56]=pt>>>0&255,C[57]=pt>>>8&255,C[58]=pt>>>16&255,C[59]=pt>>>24&255,C[60]=ct>>>0&255,C[61]=ct>>>8&255,C[62]=ct>>>16&255,C[63]=ct>>>24&255}function ce(C,T,O,w){for(var D=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,H=O[0]&255|(O[1]&255)<<8|(O[2]&255)<<16|(O[3]&255)<<24,Y=O[4]&255|(O[5]&255)<<8|(O[6]&255)<<16|(O[7]&255)<<24,V=O[8]&255|(O[9]&255)<<8|(O[10]&255)<<16|(O[11]&255)<<24,ee=O[12]&255|(O[13]&255)<<8|(O[14]&255)<<16|(O[15]&255)<<24,Ee=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ae=T[0]&255|(T[1]&255)<<8|(T[2]&255)<<16|(T[3]&255)<<24,xe=T[4]&255|(T[5]&255)<<8|(T[6]&255)<<16|(T[7]&255)<<24,we=T[8]&255|(T[9]&255)<<8|(T[10]&255)<<16|(T[11]&255)<<24,je=T[12]&255|(T[13]&255)<<8|(T[14]&255)<<16|(T[15]&255)<<24,ze=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,Ye=O[16]&255|(O[17]&255)<<8|(O[18]&255)<<16|(O[19]&255)<<24,Ge=O[20]&255|(O[21]&255)<<8|(O[22]&255)<<16|(O[23]&255)<<24,Ve=O[24]&255|(O[25]&255)<<8|(O[26]&255)<<16|(O[27]&255)<<24,Je=O[28]&255|(O[29]&255)<<8|(O[30]&255)<<16|(O[31]&255)<<24,$e=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Ie=D,Le=H,Ae=Y,Me=V,Ce=ee,me=Ee,$=ae,X=xe,de=we,oe=je,se=ze,le=Ye,st=Ge,ht=Ve,pt=Je,ct=$e,K,mt=0;mt<20;mt+=2)K=Ie+st|0,Ce^=K<<7|K>>>32-7,K=Ce+Ie|0,de^=K<<9|K>>>32-9,K=de+Ce|0,st^=K<<13|K>>>32-13,K=st+de|0,Ie^=K<<18|K>>>32-18,K=me+Le|0,oe^=K<<7|K>>>32-7,K=oe+me|0,ht^=K<<9|K>>>32-9,K=ht+oe|0,Le^=K<<13|K>>>32-13,K=Le+ht|0,me^=K<<18|K>>>32-18,K=se+$|0,pt^=K<<7|K>>>32-7,K=pt+se|0,Ae^=K<<9|K>>>32-9,K=Ae+pt|0,$^=K<<13|K>>>32-13,K=$+Ae|0,se^=K<<18|K>>>32-18,K=ct+le|0,Me^=K<<7|K>>>32-7,K=Me+ct|0,X^=K<<9|K>>>32-9,K=X+Me|0,le^=K<<13|K>>>32-13,K=le+X|0,ct^=K<<18|K>>>32-18,K=Ie+Me|0,Le^=K<<7|K>>>32-7,K=Le+Ie|0,Ae^=K<<9|K>>>32-9,K=Ae+Le|0,Me^=K<<13|K>>>32-13,K=Me+Ae|0,Ie^=K<<18|K>>>32-18,K=me+Ce|0,$^=K<<7|K>>>32-7,K=$+me|0,X^=K<<9|K>>>32-9,K=X+$|0,Ce^=K<<13|K>>>32-13,K=Ce+X|0,me^=K<<18|K>>>32-18,K=se+oe|0,le^=K<<7|K>>>32-7,K=le+se|0,de^=K<<9|K>>>32-9,K=de+le|0,oe^=K<<13|K>>>32-13,K=oe+de|0,se^=K<<18|K>>>32-18,K=ct+pt|0,st^=K<<7|K>>>32-7,K=st+ct|0,ht^=K<<9|K>>>32-9,K=ht+st|0,pt^=K<<13|K>>>32-13,K=pt+ht|0,ct^=K<<18|K>>>32-18;C[0]=Ie>>>0&255,C[1]=Ie>>>8&255,C[2]=Ie>>>16&255,C[3]=Ie>>>24&255,C[4]=me>>>0&255,C[5]=me>>>8&255,C[6]=me>>>16&255,C[7]=me>>>24&255,C[8]=se>>>0&255,C[9]=se>>>8&255,C[10]=se>>>16&255,C[11]=se>>>24&255,C[12]=ct>>>0&255,C[13]=ct>>>8&255,C[14]=ct>>>16&255,C[15]=ct>>>24&255,C[16]=$>>>0&255,C[17]=$>>>8&255,C[18]=$>>>16&255,C[19]=$>>>24&255,C[20]=X>>>0&255,C[21]=X>>>8&255,C[22]=X>>>16&255,C[23]=X>>>24&255,C[24]=de>>>0&255,C[25]=de>>>8&255,C[26]=de>>>16&255,C[27]=de>>>24&255,C[28]=oe>>>0&255,C[29]=oe>>>8&255,C[30]=oe>>>16&255,C[31]=oe>>>24&255}function ge(C,T,O,w){fe(C,T,O,w)}function ve(C,T,O,w){ce(C,T,O,w)}var Ke=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function be(C,T,O,w,D,H,Y){var V=new Uint8Array(16),ee=new Uint8Array(64),Ee,ae;for(ae=0;ae<16;ae++)V[ae]=0;for(ae=0;ae<8;ae++)V[ae]=H[ae];for(;D>=64;){for(ge(ee,V,Y,Ke),ae=0;ae<64;ae++)C[T+ae]=O[w+ae]^ee[ae];for(Ee=1,ae=8;ae<16;ae++)Ee=Ee+(V[ae]&255)|0,V[ae]=Ee&255,Ee>>>=8;D-=64,T+=64,w+=64}if(D>0)for(ge(ee,V,Y,Ke),ae=0;ae=64;){for(ge(Y,H,D,Ke),ee=0;ee<64;ee++)C[T+ee]=Y[ee];for(V=1,ee=8;ee<16;ee++)V=V+(H[ee]&255)|0,H[ee]=V&255,V>>>=8;O-=64,T+=64}if(O>0)for(ge(Y,H,D,Ke),ee=0;ee>>13|O<<3)&8191,w=C[4]&255|(C[5]&255)<<8,this.r[2]=(O>>>10|w<<6)&7939,D=C[6]&255|(C[7]&255)<<8,this.r[3]=(w>>>7|D<<9)&8191,H=C[8]&255|(C[9]&255)<<8,this.r[4]=(D>>>4|H<<12)&255,this.r[5]=H>>>1&8190,Y=C[10]&255|(C[11]&255)<<8,this.r[6]=(H>>>14|Y<<2)&8191,V=C[12]&255|(C[13]&255)<<8,this.r[7]=(Y>>>11|V<<5)&8065,ee=C[14]&255|(C[15]&255)<<8,this.r[8]=(V>>>8|ee<<8)&8191,this.r[9]=ee>>>5&127,this.pad[0]=C[16]&255|(C[17]&255)<<8,this.pad[1]=C[18]&255|(C[19]&255)<<8,this.pad[2]=C[20]&255|(C[21]&255)<<8,this.pad[3]=C[22]&255|(C[23]&255)<<8,this.pad[4]=C[24]&255|(C[25]&255)<<8,this.pad[5]=C[26]&255|(C[27]&255)<<8,this.pad[6]=C[28]&255|(C[29]&255)<<8,this.pad[7]=C[30]&255|(C[31]&255)<<8};d.prototype.blocks=function(C,T,O){for(var w=this.fin?0:2048,D,H,Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge,Ve,Je,$e,Ie,Le,Ae,Me=this.h[0],Ce=this.h[1],me=this.h[2],$=this.h[3],X=this.h[4],de=this.h[5],oe=this.h[6],se=this.h[7],le=this.h[8],st=this.h[9],ht=this.r[0],pt=this.r[1],ct=this.r[2],K=this.r[3],mt=this.r[4],kt=this.r[5],Ft=this.r[6],bt=this.r[7],Dt=this.r[8],Pt=this.r[9];O>=16;)D=C[T+0]&255|(C[T+1]&255)<<8,Me+=D&8191,H=C[T+2]&255|(C[T+3]&255)<<8,Ce+=(D>>>13|H<<3)&8191,Y=C[T+4]&255|(C[T+5]&255)<<8,me+=(H>>>10|Y<<6)&8191,V=C[T+6]&255|(C[T+7]&255)<<8,$+=(Y>>>7|V<<9)&8191,ee=C[T+8]&255|(C[T+9]&255)<<8,X+=(V>>>4|ee<<12)&8191,de+=ee>>>1&8191,Ee=C[T+10]&255|(C[T+11]&255)<<8,oe+=(ee>>>14|Ee<<2)&8191,ae=C[T+12]&255|(C[T+13]&255)<<8,se+=(Ee>>>11|ae<<5)&8191,xe=C[T+14]&255|(C[T+15]&255)<<8,le+=(ae>>>8|xe<<8)&8191,st+=xe>>>5|w,we=0,je=we,je+=Me*ht,je+=Ce*(5*Pt),je+=me*(5*Dt),je+=$*(5*bt),je+=X*(5*Ft),we=je>>>13,je&=8191,je+=de*(5*kt),je+=oe*(5*mt),je+=se*(5*K),je+=le*(5*ct),je+=st*(5*pt),we+=je>>>13,je&=8191,ze=we,ze+=Me*pt,ze+=Ce*ht,ze+=me*(5*Pt),ze+=$*(5*Dt),ze+=X*(5*bt),we=ze>>>13,ze&=8191,ze+=de*(5*Ft),ze+=oe*(5*kt),ze+=se*(5*mt),ze+=le*(5*K),ze+=st*(5*ct),we+=ze>>>13,ze&=8191,Ye=we,Ye+=Me*ct,Ye+=Ce*pt,Ye+=me*ht,Ye+=$*(5*Pt),Ye+=X*(5*Dt),we=Ye>>>13,Ye&=8191,Ye+=de*(5*bt),Ye+=oe*(5*Ft),Ye+=se*(5*kt),Ye+=le*(5*mt),Ye+=st*(5*K),we+=Ye>>>13,Ye&=8191,Ge=we,Ge+=Me*K,Ge+=Ce*ct,Ge+=me*pt,Ge+=$*ht,Ge+=X*(5*Pt),we=Ge>>>13,Ge&=8191,Ge+=de*(5*Dt),Ge+=oe*(5*bt),Ge+=se*(5*Ft),Ge+=le*(5*kt),Ge+=st*(5*mt),we+=Ge>>>13,Ge&=8191,Ve=we,Ve+=Me*mt,Ve+=Ce*K,Ve+=me*ct,Ve+=$*pt,Ve+=X*ht,we=Ve>>>13,Ve&=8191,Ve+=de*(5*Pt),Ve+=oe*(5*Dt),Ve+=se*(5*bt),Ve+=le*(5*Ft),Ve+=st*(5*kt),we+=Ve>>>13,Ve&=8191,Je=we,Je+=Me*kt,Je+=Ce*mt,Je+=me*K,Je+=$*ct,Je+=X*pt,we=Je>>>13,Je&=8191,Je+=de*ht,Je+=oe*(5*Pt),Je+=se*(5*Dt),Je+=le*(5*bt),Je+=st*(5*Ft),we+=Je>>>13,Je&=8191,$e=we,$e+=Me*Ft,$e+=Ce*kt,$e+=me*mt,$e+=$*K,$e+=X*ct,we=$e>>>13,$e&=8191,$e+=de*pt,$e+=oe*ht,$e+=se*(5*Pt),$e+=le*(5*Dt),$e+=st*(5*bt),we+=$e>>>13,$e&=8191,Ie=we,Ie+=Me*bt,Ie+=Ce*Ft,Ie+=me*kt,Ie+=$*mt,Ie+=X*K,we=Ie>>>13,Ie&=8191,Ie+=de*ct,Ie+=oe*pt,Ie+=se*ht,Ie+=le*(5*Pt),Ie+=st*(5*Dt),we+=Ie>>>13,Ie&=8191,Le=we,Le+=Me*Dt,Le+=Ce*bt,Le+=me*Ft,Le+=$*kt,Le+=X*mt,we=Le>>>13,Le&=8191,Le+=de*K,Le+=oe*ct,Le+=se*pt,Le+=le*ht,Le+=st*(5*Pt),we+=Le>>>13,Le&=8191,Ae=we,Ae+=Me*Pt,Ae+=Ce*Dt,Ae+=me*bt,Ae+=$*Ft,Ae+=X*kt,we=Ae>>>13,Ae&=8191,Ae+=de*mt,Ae+=oe*K,Ae+=se*ct,Ae+=le*pt,Ae+=st*ht,we+=Ae>>>13,Ae&=8191,we=(we<<2)+we|0,we=we+je|0,je=we&8191,we=we>>>13,ze+=we,Me=je,Ce=ze,me=Ye,$=Ge,X=Ve,de=Je,oe=$e,se=Ie,le=Le,st=Ae,T+=16,O-=16;this.h[0]=Me,this.h[1]=Ce,this.h[2]=me,this.h[3]=$,this.h[4]=X,this.h[5]=de,this.h[6]=oe,this.h[7]=se,this.h[8]=le,this.h[9]=st},d.prototype.finish=function(C,T){var O=new Uint16Array(10),w,D,H,Y;if(this.leftover){for(Y=this.leftover,this.buffer[Y++]=1;Y<16;Y++)this.buffer[Y]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(w=this.h[1]>>>13,this.h[1]&=8191,Y=2;Y<10;Y++)this.h[Y]+=w,w=this.h[Y]>>>13,this.h[Y]&=8191;for(this.h[0]+=w*5,w=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=w,w=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=w,O[0]=this.h[0]+5,w=O[0]>>>13,O[0]&=8191,Y=1;Y<10;Y++)O[Y]=this.h[Y]+w,w=O[Y]>>>13,O[Y]&=8191;for(O[9]-=1<<13,D=(w^1)-1,Y=0;Y<10;Y++)O[Y]&=D;for(D=~D,Y=0;Y<10;Y++)this.h[Y]=this.h[Y]&D|O[Y];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,H=this.h[0]+this.pad[0],this.h[0]=H&65535,Y=1;Y<8;Y++)H=(this.h[Y]+this.pad[Y]|0)+(H>>>16)|0,this.h[Y]=H&65535;C[T+0]=this.h[0]>>>0&255,C[T+1]=this.h[0]>>>8&255,C[T+2]=this.h[1]>>>0&255,C[T+3]=this.h[1]>>>8&255,C[T+4]=this.h[2]>>>0&255,C[T+5]=this.h[2]>>>8&255,C[T+6]=this.h[3]>>>0&255,C[T+7]=this.h[3]>>>8&255,C[T+8]=this.h[4]>>>0&255,C[T+9]=this.h[4]>>>8&255,C[T+10]=this.h[5]>>>0&255,C[T+11]=this.h[5]>>>8&255,C[T+12]=this.h[6]>>>0&255,C[T+13]=this.h[6]>>>8&255,C[T+14]=this.h[7]>>>0&255,C[T+15]=this.h[7]>>>8&255},d.prototype.update=function(C,T,O){var w,D;if(this.leftover){for(D=16-this.leftover,D>O&&(D=O),w=0;w=16&&(D=O-O%16,this.blocks(C,T,D),T+=D,O-=D),O){for(w=0;w>16&1),H[O-1]&=65535;H[15]=Y[15]-32767-(H[14]>>16&1),D=H[15]>>16&1,H[14]&=65535,l(Y,H,1-D)}for(O=0;O<16;O++)C[2*O]=Y[O]&255,C[2*O+1]=Y[O]>>8}function A(C,T){var O=new Uint8Array(32),w=new Uint8Array(32);return h(O,C),h(w,T),ie(O,0,w,0)}function q(C){var T=new Uint8Array(32);return h(T,C),T[0]&1}function _(C,T){var O;for(O=0;O<16;O++)C[O]=T[2*O]+(T[2*O+1]<<8);C[15]&=32767}function u(C,T,O){for(var w=0;w<16;w++)C[w]=T[w]+O[w]}function I(C,T,O){for(var w=0;w<16;w++)C[w]=T[w]-O[w]}function j(C,T,O){var w,D,H=0,Y=0,V=0,ee=0,Ee=0,ae=0,xe=0,we=0,je=0,ze=0,Ye=0,Ge=0,Ve=0,Je=0,$e=0,Ie=0,Le=0,Ae=0,Me=0,Ce=0,me=0,$=0,X=0,de=0,oe=0,se=0,le=0,st=0,ht=0,pt=0,ct=0,K=O[0],mt=O[1],kt=O[2],Ft=O[3],bt=O[4],Dt=O[5],Pt=O[6],rr=O[7],Qt=O[8],Jt=O[9],Xt=O[10],Zt=O[11],fr=O[12],mr=O[13],xr=O[14],wr=O[15];w=T[0],H+=w*K,Y+=w*mt,V+=w*kt,ee+=w*Ft,Ee+=w*bt,ae+=w*Dt,xe+=w*Pt,we+=w*rr,je+=w*Qt,ze+=w*Jt,Ye+=w*Xt,Ge+=w*Zt,Ve+=w*fr,Je+=w*mr,$e+=w*xr,Ie+=w*wr,w=T[1],Y+=w*K,V+=w*mt,ee+=w*kt,Ee+=w*Ft,ae+=w*bt,xe+=w*Dt,we+=w*Pt,je+=w*rr,ze+=w*Qt,Ye+=w*Jt,Ge+=w*Xt,Ve+=w*Zt,Je+=w*fr,$e+=w*mr,Ie+=w*xr,Le+=w*wr,w=T[2],V+=w*K,ee+=w*mt,Ee+=w*kt,ae+=w*Ft,xe+=w*bt,we+=w*Dt,je+=w*Pt,ze+=w*rr,Ye+=w*Qt,Ge+=w*Jt,Ve+=w*Xt,Je+=w*Zt,$e+=w*fr,Ie+=w*mr,Le+=w*xr,Ae+=w*wr,w=T[3],ee+=w*K,Ee+=w*mt,ae+=w*kt,xe+=w*Ft,we+=w*bt,je+=w*Dt,ze+=w*Pt,Ye+=w*rr,Ge+=w*Qt,Ve+=w*Jt,Je+=w*Xt,$e+=w*Zt,Ie+=w*fr,Le+=w*mr,Ae+=w*xr,Me+=w*wr,w=T[4],Ee+=w*K,ae+=w*mt,xe+=w*kt,we+=w*Ft,je+=w*bt,ze+=w*Dt,Ye+=w*Pt,Ge+=w*rr,Ve+=w*Qt,Je+=w*Jt,$e+=w*Xt,Ie+=w*Zt,Le+=w*fr,Ae+=w*mr,Me+=w*xr,Ce+=w*wr,w=T[5],ae+=w*K,xe+=w*mt,we+=w*kt,je+=w*Ft,ze+=w*bt,Ye+=w*Dt,Ge+=w*Pt,Ve+=w*rr,Je+=w*Qt,$e+=w*Jt,Ie+=w*Xt,Le+=w*Zt,Ae+=w*fr,Me+=w*mr,Ce+=w*xr,me+=w*wr,w=T[6],xe+=w*K,we+=w*mt,je+=w*kt,ze+=w*Ft,Ye+=w*bt,Ge+=w*Dt,Ve+=w*Pt,Je+=w*rr,$e+=w*Qt,Ie+=w*Jt,Le+=w*Xt,Ae+=w*Zt,Me+=w*fr,Ce+=w*mr,me+=w*xr,$+=w*wr,w=T[7],we+=w*K,je+=w*mt,ze+=w*kt,Ye+=w*Ft,Ge+=w*bt,Ve+=w*Dt,Je+=w*Pt,$e+=w*rr,Ie+=w*Qt,Le+=w*Jt,Ae+=w*Xt,Me+=w*Zt,Ce+=w*fr,me+=w*mr,$+=w*xr,X+=w*wr,w=T[8],je+=w*K,ze+=w*mt,Ye+=w*kt,Ge+=w*Ft,Ve+=w*bt,Je+=w*Dt,$e+=w*Pt,Ie+=w*rr,Le+=w*Qt,Ae+=w*Jt,Me+=w*Xt,Ce+=w*Zt,me+=w*fr,$+=w*mr,X+=w*xr,de+=w*wr,w=T[9],ze+=w*K,Ye+=w*mt,Ge+=w*kt,Ve+=w*Ft,Je+=w*bt,$e+=w*Dt,Ie+=w*Pt,Le+=w*rr,Ae+=w*Qt,Me+=w*Jt,Ce+=w*Xt,me+=w*Zt,$+=w*fr,X+=w*mr,de+=w*xr,oe+=w*wr,w=T[10],Ye+=w*K,Ge+=w*mt,Ve+=w*kt,Je+=w*Ft,$e+=w*bt,Ie+=w*Dt,Le+=w*Pt,Ae+=w*rr,Me+=w*Qt,Ce+=w*Jt,me+=w*Xt,$+=w*Zt,X+=w*fr,de+=w*mr,oe+=w*xr,se+=w*wr,w=T[11],Ge+=w*K,Ve+=w*mt,Je+=w*kt,$e+=w*Ft,Ie+=w*bt,Le+=w*Dt,Ae+=w*Pt,Me+=w*rr,Ce+=w*Qt,me+=w*Jt,$+=w*Xt,X+=w*Zt,de+=w*fr,oe+=w*mr,se+=w*xr,le+=w*wr,w=T[12],Ve+=w*K,Je+=w*mt,$e+=w*kt,Ie+=w*Ft,Le+=w*bt,Ae+=w*Dt,Me+=w*Pt,Ce+=w*rr,me+=w*Qt,$+=w*Jt,X+=w*Xt,de+=w*Zt,oe+=w*fr,se+=w*mr,le+=w*xr,st+=w*wr,w=T[13],Je+=w*K,$e+=w*mt,Ie+=w*kt,Le+=w*Ft,Ae+=w*bt,Me+=w*Dt,Ce+=w*Pt,me+=w*rr,$+=w*Qt,X+=w*Jt,de+=w*Xt,oe+=w*Zt,se+=w*fr,le+=w*mr,st+=w*xr,ht+=w*wr,w=T[14],$e+=w*K,Ie+=w*mt,Le+=w*kt,Ae+=w*Ft,Me+=w*bt,Ce+=w*Dt,me+=w*Pt,$+=w*rr,X+=w*Qt,de+=w*Jt,oe+=w*Xt,se+=w*Zt,le+=w*fr,st+=w*mr,ht+=w*xr,pt+=w*wr,w=T[15],Ie+=w*K,Le+=w*mt,Ae+=w*kt,Me+=w*Ft,Ce+=w*bt,me+=w*Dt,$+=w*Pt,X+=w*rr,de+=w*Qt,oe+=w*Jt,se+=w*Xt,le+=w*Zt,st+=w*fr,ht+=w*mr,pt+=w*xr,ct+=w*wr,H+=38*Le,Y+=38*Ae,V+=38*Me,ee+=38*Ce,Ee+=38*me,ae+=38*$,xe+=38*X,we+=38*de,je+=38*oe,ze+=38*se,Ye+=38*le,Ge+=38*st,Ve+=38*ht,Je+=38*pt,$e+=38*ct,D=1,w=H+D+65535,D=Math.floor(w/65536),H=w-D*65536,w=Y+D+65535,D=Math.floor(w/65536),Y=w-D*65536,w=V+D+65535,D=Math.floor(w/65536),V=w-D*65536,w=ee+D+65535,D=Math.floor(w/65536),ee=w-D*65536,w=Ee+D+65535,D=Math.floor(w/65536),Ee=w-D*65536,w=ae+D+65535,D=Math.floor(w/65536),ae=w-D*65536,w=xe+D+65535,D=Math.floor(w/65536),xe=w-D*65536,w=we+D+65535,D=Math.floor(w/65536),we=w-D*65536,w=je+D+65535,D=Math.floor(w/65536),je=w-D*65536,w=ze+D+65535,D=Math.floor(w/65536),ze=w-D*65536,w=Ye+D+65535,D=Math.floor(w/65536),Ye=w-D*65536,w=Ge+D+65535,D=Math.floor(w/65536),Ge=w-D*65536,w=Ve+D+65535,D=Math.floor(w/65536),Ve=w-D*65536,w=Je+D+65535,D=Math.floor(w/65536),Je=w-D*65536,w=$e+D+65535,D=Math.floor(w/65536),$e=w-D*65536,w=Ie+D+65535,D=Math.floor(w/65536),Ie=w-D*65536,H+=D-1+37*(D-1),D=1,w=H+D+65535,D=Math.floor(w/65536),H=w-D*65536,w=Y+D+65535,D=Math.floor(w/65536),Y=w-D*65536,w=V+D+65535,D=Math.floor(w/65536),V=w-D*65536,w=ee+D+65535,D=Math.floor(w/65536),ee=w-D*65536,w=Ee+D+65535,D=Math.floor(w/65536),Ee=w-D*65536,w=ae+D+65535,D=Math.floor(w/65536),ae=w-D*65536,w=xe+D+65535,D=Math.floor(w/65536),xe=w-D*65536,w=we+D+65535,D=Math.floor(w/65536),we=w-D*65536,w=je+D+65535,D=Math.floor(w/65536),je=w-D*65536,w=ze+D+65535,D=Math.floor(w/65536),ze=w-D*65536,w=Ye+D+65535,D=Math.floor(w/65536),Ye=w-D*65536,w=Ge+D+65535,D=Math.floor(w/65536),Ge=w-D*65536,w=Ve+D+65535,D=Math.floor(w/65536),Ve=w-D*65536,w=Je+D+65535,D=Math.floor(w/65536),Je=w-D*65536,w=$e+D+65535,D=Math.floor(w/65536),$e=w-D*65536,w=Ie+D+65535,D=Math.floor(w/65536),Ie=w-D*65536,H+=D-1+37*(D-1),C[0]=H,C[1]=Y,C[2]=V,C[3]=ee,C[4]=Ee,C[5]=ae,C[6]=xe,C[7]=we,C[8]=je,C[9]=ze,C[10]=Ye,C[11]=Ge,C[12]=Ve,C[13]=Je,C[14]=$e,C[15]=Ie}function S(C,T){j(C,T,T)}function L(C,T){var O=e(),w;for(w=0;w<16;w++)O[w]=T[w];for(w=253;w>=0;w--)S(O,O),w!==2&&w!==4&&j(O,O,T);for(w=0;w<16;w++)C[w]=O[w]}function Q(C,T){var O=e(),w;for(w=0;w<16;w++)O[w]=T[w];for(w=250;w>=0;w--)S(O,O),w!==1&&j(O,O,T);for(w=0;w<16;w++)C[w]=O[w]}function z(C,T,O){var w=new Uint8Array(32),D=new Float64Array(80),H,Y,V=e(),ee=e(),Ee=e(),ae=e(),xe=e(),we=e();for(Y=0;Y<31;Y++)w[Y]=T[Y];for(w[31]=T[31]&127|64,w[0]&=248,_(D,O),Y=0;Y<16;Y++)ee[Y]=D[Y],ae[Y]=V[Y]=Ee[Y]=0;for(V[0]=ae[0]=1,Y=254;Y>=0;--Y)H=w[Y>>>3]>>>(Y&7)&1,l(V,ee,H),l(Ee,ae,H),u(xe,V,Ee),I(V,V,Ee),u(Ee,ee,ae),I(ee,ee,ae),S(ae,xe),S(we,V),j(V,Ee,V),j(Ee,ee,xe),u(xe,V,Ee),I(V,V,Ee),S(ee,V),I(Ee,ae,we),j(V,Ee,c),u(V,V,ae),j(Ee,Ee,V),j(V,ae,we),j(ae,ee,D),S(ee,xe),l(V,ee,H),l(Ee,ae,H);for(Y=0;Y<16;Y++)D[Y+16]=V[Y],D[Y+32]=Ee[Y],D[Y+48]=ee[Y],D[Y+64]=ae[Y];var je=D.subarray(32),ze=D.subarray(16);return L(je,je),j(ze,ze,je),h(C,ze),0}function J(C,T){return z(C,T,n)}function he(C,T){return r(T,32),J(C,T)}function W(C,T,O){var w=new Uint8Array(32);return z(w,O,T),ve(C,i,w,Ke)}var te=p,Qe=f;function ne(C,T,O,w,D,H){var Y=new Uint8Array(32);return W(Y,D,H),te(C,T,O,w,Y)}function ye(C,T,O,w,D,H){var Y=new Uint8Array(32);return W(Y,D,H),Qe(C,T,O,w,Y)}var Rt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Pe(C,T,O,w){for(var D=new Int32Array(16),H=new Int32Array(16),Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge,Ve,Je,$e,Ie,Le,Ae,Me,Ce,me,$,X,de,oe,se,le,st=C[0],ht=C[1],pt=C[2],ct=C[3],K=C[4],mt=C[5],kt=C[6],Ft=C[7],bt=T[0],Dt=T[1],Pt=T[2],rr=T[3],Qt=T[4],Jt=T[5],Xt=T[6],Zt=T[7],fr=0;w>=128;){for(Ce=0;Ce<16;Ce++)me=8*Ce+fr,D[Ce]=O[me+0]<<24|O[me+1]<<16|O[me+2]<<8|O[me+3],H[Ce]=O[me+4]<<24|O[me+5]<<16|O[me+6]<<8|O[me+7];for(Ce=0;Ce<80;Ce++)if(Y=st,V=ht,ee=pt,Ee=ct,ae=K,xe=mt,we=kt,je=Ft,ze=bt,Ye=Dt,Ge=Pt,Ve=rr,Je=Qt,$e=Jt,Ie=Xt,Le=Zt,$=Ft,X=Zt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=(K>>>14|Qt<<32-14)^(K>>>18|Qt<<32-18)^(Qt>>>41-32|K<<32-(41-32)),X=(Qt>>>14|K<<32-14)^(Qt>>>18|K<<32-18)^(K>>>41-32|Qt<<32-(41-32)),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=K&mt^~K&kt,X=Qt&Jt^~Qt&Xt,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=Rt[Ce*2],X=Rt[Ce*2+1],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=D[Ce%16],X=H[Ce%16],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,Ae=se&65535|le<<16,Me=de&65535|oe<<16,$=Ae,X=Me,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=(st>>>28|bt<<32-28)^(bt>>>34-32|st<<32-(34-32))^(bt>>>39-32|st<<32-(39-32)),X=(bt>>>28|st<<32-28)^(st>>>34-32|bt<<32-(34-32))^(st>>>39-32|bt<<32-(39-32)),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=st&ht^st&pt^ht&pt,X=bt&Dt^bt&Pt^Dt&Pt,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,je=se&65535|le<<16,Le=de&65535|oe<<16,$=Ee,X=Ve,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=Ae,X=Me,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,Ee=se&65535|le<<16,Ve=de&65535|oe<<16,ht=Y,pt=V,ct=ee,K=Ee,mt=ae,kt=xe,Ft=we,st=je,Dt=ze,Pt=Ye,rr=Ge,Qt=Ve,Jt=Je,Xt=$e,Zt=Ie,bt=Le,Ce%16===15)for(me=0;me<16;me++)$=D[me],X=H[me],de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=D[(me+9)%16],X=H[(me+9)%16],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,Ae=D[(me+1)%16],Me=H[(me+1)%16],$=(Ae>>>1|Me<<32-1)^(Ae>>>8|Me<<32-8)^Ae>>>7,X=(Me>>>1|Ae<<32-1)^(Me>>>8|Ae<<32-8)^(Me>>>7|Ae<<32-7),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,Ae=D[(me+14)%16],Me=H[(me+14)%16],$=(Ae>>>19|Me<<32-19)^(Me>>>61-32|Ae<<32-(61-32))^Ae>>>6,X=(Me>>>19|Ae<<32-19)^(Ae>>>61-32|Me<<32-(61-32))^(Me>>>6|Ae<<32-6),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,D[me]=se&65535|le<<16,H[me]=de&65535|oe<<16;$=st,X=bt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[0],X=T[0],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[0]=st=se&65535|le<<16,T[0]=bt=de&65535|oe<<16,$=ht,X=Dt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[1],X=T[1],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[1]=ht=se&65535|le<<16,T[1]=Dt=de&65535|oe<<16,$=pt,X=Pt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[2],X=T[2],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[2]=pt=se&65535|le<<16,T[2]=Pt=de&65535|oe<<16,$=ct,X=rr,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[3],X=T[3],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[3]=ct=se&65535|le<<16,T[3]=rr=de&65535|oe<<16,$=K,X=Qt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[4],X=T[4],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[4]=K=se&65535|le<<16,T[4]=Qt=de&65535|oe<<16,$=mt,X=Jt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[5],X=T[5],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[5]=mt=se&65535|le<<16,T[5]=Jt=de&65535|oe<<16,$=kt,X=Xt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[6],X=T[6],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[6]=kt=se&65535|le<<16,T[6]=Xt=de&65535|oe<<16,$=Ft,X=Zt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[7],X=T[7],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[7]=Ft=se&65535|le<<16,T[7]=Zt=de&65535|oe<<16,fr+=128,w-=128}return w}function We(C,T,O){var w=new Int32Array(8),D=new Int32Array(8),H=new Uint8Array(256),Y,V=O;for(w[0]=1779033703,w[1]=3144134277,w[2]=1013904242,w[3]=2773480762,w[4]=1359893119,w[5]=2600822924,w[6]=528734635,w[7]=1541459225,D[0]=4089235720,D[1]=2227873595,D[2]=4271175723,D[3]=1595750129,D[4]=2917565137,D[5]=725511199,D[6]=4215389547,D[7]=327033209,Pe(w,D,T,O),O%=128,Y=0;Y=0;--D)w=O[D/8|0]>>(D&7)&1,Ue(C,T,w),It(T,C),It(C,C),Ue(C,T,w)}function Re(C,T){var O=[e(),e(),e(),e()];s(O[0],B),s(O[1],R),s(O[2],o),j(O[3],B,R),St(C,O,T)}function rt(C,T,O){var w=new Uint8Array(64),D=[e(),e(),e(),e()],H;for(O||r(T,32),We(w,T,32),w[0]&=248,w[31]&=127,w[31]|=64,Re(D,w),tt(C,D),H=0;H<32;H++)T[H+32]=C[H];return 0}var Et=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Oe(C,T){var O,w,D,H;for(w=63;w>=32;--w){for(O=0,D=w-32,H=w-12;D>4)*Et[D],O=T[D]>>8,T[D]&=255;for(D=0;D<32;D++)T[D]-=O*Et[D];for(w=0;w<32;w++)T[w+1]+=T[w]>>8,C[w]=T[w]&255}function it(C){var T=new Float64Array(64),O;for(O=0;O<64;O++)T[O]=C[O];for(O=0;O<64;O++)C[O]=0;Oe(C,T)}function Tt(C,T,O,w){var D=new Uint8Array(64),H=new Uint8Array(64),Y=new Uint8Array(64),V,ee,Ee=new Float64Array(64),ae=[e(),e(),e(),e()];We(D,w,32),D[0]&=248,D[31]&=127,D[31]|=64;var xe=O+64;for(V=0;V>7&&I(C[0],a,C[0]),j(C[3],C[0],C[1]),0)}function nt(C,T,O,w){var D,H=new Uint8Array(32),Y=new Uint8Array(64),V=[e(),e(),e(),e()],ee=[e(),e(),e(),e()];if(O<64||ke(ee,w))return-1;for(D=0;D=0},t.sign.keyPair=function(){var C=new Uint8Array(Se),T=new Uint8Array(Xe);return rt(C,T),{publicKey:C,secretKey:T}},t.sign.keyPair.fromSecretKey=function(C){if(_e(C),C.length!==Xe)throw new Error("bad secret key size");for(var T=new Uint8Array(Se),O=0;O{g();(function(t,e){"use strict";typeof kh<"u"&&kh.exports?kh.exports=e(P_()):t.ed2curve=e(t.nacl)})(U_,function(t){"use strict";if(!t)throw new Error("tweetnacl not loaded");var e=function(k){var d,b=new Float64Array(16);if(k)for(d=0;d=0;E--)F(b,b),E!==2&&E!==4&&R(b,b,d);for(E=0;E<16;E++)k[E]=b[E]}function G(k,d){var b,E,p,f=e(),s=e();for(b=0;b<16;b++)s[b]=d[b];for(o(s),o(s),o(s),E=0;E<2;E++){for(f[0]=s[0]-65517,b=1;b<15;b++)f[b]=s[b]-65535-(f[b-1]>>16&1),f[b-1]&=65535;f[15]=s[15]-32767-(f[14]>>16&1),p=f[15]>>16&1,f[14]&=65535,c(s,f,1-p)}for(b=0;b<16;b++)k[2*b]=s[b]&255,k[2*b+1]=s[b]>>8}function Z(k){var d=new Uint8Array(32);return G(d,k),d[0]&1}function ie(k,d,b,E,p){var f,s=0;for(f=0;f>>8)-1}function fe(k,d,b,E){return ie(k,d,b,E,32)}function ce(k,d){var b=new Uint8Array(32),E=new Uint8Array(32);return G(b,k),G(E,d),fe(b,0,E,0)}function ge(k,d){var b=e(),E;for(E=0;E<16;E++)b[E]=d[E];for(E=250;E>=0;E--)F(b,b),E!==1&&R(b,b,d);for(E=0;E<16;E++)k[E]=b[E]}function ve(k,d){var b;for(b=0;b<16;b++)k[b]=d[b]|0}function Ke(k,d){var b=e(),E=e(),p=e(),f=e(),s=e(),v=e(),l=e();return ve(k[2],i),m(k[1],d),F(p,k[1]),R(f,p,n),B(p,p,k[2]),M(f,k[2],f),F(s,f),F(v,s),R(l,v,s),R(b,l,p),R(b,b,f),ge(b,b),R(b,b,p),R(b,b,f),R(b,b,f),R(k[0],b,f),F(E,k[0]),R(E,E,f),ce(E,p)&&R(k[0],k[0],a),F(E,k[0]),R(E,E,f),ce(E,p)?-1:(Z(k[0])===d[31]>>7&&B(k[0],r,k[0]),R(k[3],k[0],k[1]),0)}function be(k){var d=new Uint8Array(32),b=[e(),e(),e(),e()],E=e(),p=e();if(Ke(b,k))return null;var f=b[1];return M(E,i,f),B(p,i,f),N(p,p),R(E,E,p),G(d,E),d}function pe(k){var d=new Uint8Array(64),b=new Uint8Array(32),E;for(t.lowlevel.crypto_hash(d,k,32),d[0]&=248,d[31]&=127,d[31]|=64,E=0;E<32;E++)b[E]=d[E];for(E=0;E<64;E++)d[E]=0;return b}function Ne(k){var d=be(k.publicKey);return d?{publicKey:d,secretKey:pe(k.secretKey)}:null}return{convertPublicKey:be,convertSecretKey:pe,convertKeyPair:Ne}})});var j_=P(Av=>{"use strict";g();Object.defineProperty(Av,"__esModule",{value:!0});function vj(t){var e=4,r=t.length,i=r%e;if(!i)return t;var n=r,a=e-i,o=r+a,c=U.alloc(o);for(c.write(t);a--;)c.write("=",n++);return c.toString()}Av.default=vj});var z_=P(Ev=>{"use strict";g();Object.defineProperty(Ev,"__esModule",{value:!0});var bj=j_();function H_(t,e){return e===void 0&&(e="utf8"),U.isBuffer(t)?_v(t.toString("base64")):_v(U.from(t,e).toString("base64"))}function gj(t,e){return e===void 0&&(e="utf8"),U.from(Iv(t),"base64").toString(e)}function Iv(t){return t=t.toString(),bj.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function _v(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function yj(t){return U.from(Iv(t),"base64")}var ao=H_;ao.encode=H_;ao.decode=gj;ao.toBase64=Iv;ao.fromBase64=_v;ao.toBuffer=yj;Ev.default=ao});var G_=P((Vie,Vh)=>{g();Vh.exports=z_().default;Vh.exports.default=Vh.exports});var Sj={};Xh(Sj,{Crypto:()=>wv,Utils:()=>Pl,default:()=>Jh});g();g();var bn=$r(uc(),1),xa=$r(Ol(),1);var Pl={};Xh(Pl,{concatUint8Arrays:()=>Kt,decodeInt32:()=>Dl,encodeInt32:()=>ji,encodeInt64:()=>eu,fromBigInt:()=>VO,hexToUint8Array:()=>Nt,isHex:()=>Mt,originPrivateKey:()=>GO,toBigInt:()=>YO,toByteArray:()=>Hn,uint8ArrayToHex:()=>jt});g();var t5=[];for(let t=0;t<=255;++t){let e=t.toString(16).padStart(2,"0");t5.push(e)}var GO="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function Mt(t){return/^([0-9A-Fa-f])*$/.test(t)}function Nt(t){return new Uint8Array(t.match(/.{1,2}/g).map(e=>parseInt(e,16)))}function jt(t){let e=new Uint8Array(t),r=new Array(e.length);for(let i=0;ii+n.byteLength,0),{buffer:r}=t.reduce(({buffer:i,pos:n},a)=>(i.set(new Uint8Array(a),n),{buffer:i,pos:n+a.byteLength}),{buffer:new Uint8Array(e),pos:0});return r}function ji(t){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,t,!0),new Uint8Array(e).reverse()}function eu(t){let e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,BigInt(t),!0),new Uint8Array(e).reverse()}function Dl(t){let e=0;for(let r=0;r=256;)t=t>>>8,e.unshift(t&255);return e}async function r5(t){let e=new URL("/api",t);return(0,bn.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { +var archethic=(()=>{var N_=Object.create;var Gs=Object.defineProperty;var F_=Object.getOwnPropertyDescriptor;var K_=Object.getOwnPropertyNames;var Q_=Object.getPrototypeOf,H_=Object.prototype.hasOwnProperty;var Yp=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var j_=(e,t)=>()=>(e&&(t=e(e=0)),t);var P=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),al=(e,t)=>{for(var r in t)Gs(e,r,{get:t[r],enumerable:!0})},Gp=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of K_(t))!H_.call(e,n)&&n!==r&&Gs(e,n,{get:()=>t[n],enumerable:!(a=F_(t,n))||a.enumerable});return e};var $r=(e,t,r)=>(r=e!=null?N_(Q_(e)):{},Gp(t||!e||!e.__esModule?Gs(r,"default",{value:e,enumerable:!0}):r,e)),z_=e=>Gp(Gs({},"__esModule",{value:!0}),e);var Wp=P($s=>{"use strict";M();$s.byteLength=Y_;$s.toByteArray=$_;$s.fromByteArray=J_;var Li=[],Zr=[],V_=typeof Uint8Array<"u"?Uint8Array:Array,ol="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(df=0,$p=ol.length;df<$p;++df)Li[df]=ol[df],Zr[ol.charCodeAt(df)]=df;var df,$p;Zr["-".charCodeAt(0)]=62;Zr["_".charCodeAt(0)]=63;function Zp(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var a=r===t?0:4-r%4;return[r,a]}function Y_(e){var t=Zp(e),r=t[0],a=t[1];return(r+a)*3/4-a}function G_(e,t,r){return(t+r)*3/4-r}function $_(e){var t,r=Zp(e),a=r[0],n=r[1],d=new V_(G_(e,a,n)),m=0,b=n>0?a-4:a,A;for(A=0;A>16&255,d[m++]=t>>8&255,d[m++]=t&255;return n===2&&(t=Zr[e.charCodeAt(A)]<<2|Zr[e.charCodeAt(A+1)]>>4,d[m++]=t&255),n===1&&(t=Zr[e.charCodeAt(A)]<<10|Zr[e.charCodeAt(A+1)]<<4|Zr[e.charCodeAt(A+2)]>>2,d[m++]=t>>8&255,d[m++]=t&255),d}function Z_(e){return Li[e>>18&63]+Li[e>>12&63]+Li[e>>6&63]+Li[e&63]}function W_(e,t,r){for(var a,n=[],d=t;db?b:m+d));return a===1?(t=e[r-1],n.push(Li[t>>2]+Li[t<<4&63]+"==")):a===2&&(t=(e[r-2]<<8)+e[r-1],n.push(Li[t>>10]+Li[t>>4&63]+Li[t<<2&63]+"=")),n.join("")}});var Jp=P(sl=>{M();sl.read=function(e,t,r,a,n){var d,m,b=n*8-a-1,A=(1<>1,C=-7,D=r?n-1:0,K=r?-1:1,j=e[t+D];for(D+=K,d=j&(1<<-C)-1,j>>=-C,C+=b;C>0;d=d*256+e[t+D],D+=K,C-=8);for(m=d&(1<<-C)-1,d>>=-C,C+=a;C>0;m=m*256+e[t+D],D+=K,C-=8);if(d===0)d=1-B;else{if(d===A)return m?NaN:(j?-1:1)*(1/0);m=m+Math.pow(2,a),d=d-B}return(j?-1:1)*m*Math.pow(2,d-a)};sl.write=function(e,t,r,a,n,d){var m,b,A,B=d*8-n-1,C=(1<>1,K=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,j=a?0:d-1,Z=a?1:-1,qt=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(b=isNaN(t)?1:0,m=C):(m=Math.floor(Math.log(t)/Math.LN2),t*(A=Math.pow(2,-m))<1&&(m--,A*=2),m+D>=1?t+=K/A:t+=K*Math.pow(2,1-D),t*A>=2&&(m++,A/=2),m+D>=C?(b=0,m=C):m+D>=1?(b=(t*A-1)*Math.pow(2,n),m=m+D):(b=t*Math.pow(2,D-1)*Math.pow(2,n),m=0));n>=8;e[r+j]=b&255,j+=Z,b/=256,n-=8);for(m=m<0;e[r+j]=m&255,j+=Z,m/=256,B-=8);e[r+j-Z]|=qt*128}});var On=P(ua=>{"use strict";M();var hl=Wp(),sa=Jp(),Xp=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;ua.Buffer=Tt;ua.SlowBuffer=nI;ua.INSPECT_MAX_BYTES=50;var Zs=2147483647;ua.kMaxLength=Zs;Tt.TYPED_ARRAY_SUPPORT=X_();!Tt.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function X_(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}Object.defineProperty(Tt.prototype,"parent",{enumerable:!0,get:function(){if(!!Tt.isBuffer(this))return this.buffer}});Object.defineProperty(Tt.prototype,"offset",{enumerable:!0,get:function(){if(!!Tt.isBuffer(this))return this.byteOffset}});function nn(e){if(e>Zs)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,Tt.prototype),t}function Tt(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return dl(e)}return i2(e,t,r)}Tt.poolSize=8192;function i2(e,t,r){if(typeof e=="string")return eI(e,t);if(ArrayBuffer.isView(e))return rI(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(Ni(e,ArrayBuffer)||e&&Ni(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Ni(e,SharedArrayBuffer)||e&&Ni(e.buffer,SharedArrayBuffer)))return ll(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let a=e.valueOf&&e.valueOf();if(a!=null&&a!==e)return Tt.from(a,t,r);let n=iI(e);if(n)return n;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return Tt.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}Tt.from=function(e,t,r){return i2(e,t,r)};Object.setPrototypeOf(Tt.prototype,Uint8Array.prototype);Object.setPrototypeOf(Tt,Uint8Array);function n2(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function tI(e,t,r){return n2(e),e<=0?nn(e):t!==void 0?typeof r=="string"?nn(e).fill(t,r):nn(e).fill(t):nn(e)}Tt.alloc=function(e,t,r){return tI(e,t,r)};function dl(e){return n2(e),nn(e<0?0:vl(e)|0)}Tt.allocUnsafe=function(e){return dl(e)};Tt.allocUnsafeSlow=function(e){return dl(e)};function eI(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!Tt.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=f2(e,t)|0,a=nn(r),n=a.write(e,t);return n!==r&&(a=a.slice(0,n)),a}function ul(e){let t=e.length<0?0:vl(e.length)|0,r=nn(t);for(let a=0;a=Zs)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Zs.toString(16)+" bytes");return e|0}function nI(e){return+e!=e&&(e=0),Tt.alloc(+e)}Tt.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==Tt.prototype};Tt.compare=function(t,r){if(Ni(t,Uint8Array)&&(t=Tt.from(t,t.offset,t.byteLength)),Ni(r,Uint8Array)&&(r=Tt.from(r,r.offset,r.byteLength)),!Tt.isBuffer(t)||!Tt.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;let a=t.length,n=r.length;for(let d=0,m=Math.min(a,n);dn.length?(Tt.isBuffer(m)||(m=Tt.from(m)),m.copy(n,d)):Uint8Array.prototype.set.call(n,m,d);else if(Tt.isBuffer(m))m.copy(n,d);else throw new TypeError('"list" argument must be an Array of Buffers');d+=m.length}return n};function f2(e,t){if(Tt.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||Ni(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,a=arguments.length>2&&arguments[2]===!0;if(!a&&r===0)return 0;let n=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return cl(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return v2(e).length;default:if(n)return a?-1:cl(e).length;t=(""+t).toLowerCase(),n=!0}}Tt.byteLength=f2;function fI(e,t,r){let a=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return pI(this,t,r);case"utf8":case"utf-8":return o2(this,t,r);case"ascii":return dI(this,t,r);case"latin1":case"binary":return vI(this,t,r);case"base64":return lI(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return gI(this,t,r);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}Tt.prototype._isBuffer=!0;function vf(e,t,r){let a=e[t];e[t]=e[r],e[r]=a}Tt.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(t+=" ... "),""};Xp&&(Tt.prototype[Xp]=Tt.prototype.inspect);Tt.prototype.compare=function(t,r,a,n,d){if(Ni(t,Uint8Array)&&(t=Tt.from(t,t.offset,t.byteLength)),!Tt.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(r===void 0&&(r=0),a===void 0&&(a=t?t.length:0),n===void 0&&(n=0),d===void 0&&(d=this.length),r<0||a>t.length||n<0||d>this.length)throw new RangeError("out of range index");if(n>=d&&r>=a)return 0;if(n>=d)return-1;if(r>=a)return 1;if(r>>>=0,a>>>=0,n>>>=0,d>>>=0,this===t)return 0;let m=d-n,b=a-r,A=Math.min(m,b),B=this.slice(n,d),C=t.slice(r,a);for(let D=0;D2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,gl(r)&&(r=n?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(n)return-1;r=e.length-1}else if(r<0)if(n)r=0;else return-1;if(typeof t=="string"&&(t=Tt.from(t,a)),Tt.isBuffer(t))return t.length===0?-1:t2(e,t,r,a,n);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?n?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):t2(e,[t],r,a,n);throw new TypeError("val must be string, number or Buffer")}function t2(e,t,r,a,n){let d=1,m=e.length,b=t.length;if(a!==void 0&&(a=String(a).toLowerCase(),a==="ucs2"||a==="ucs-2"||a==="utf16le"||a==="utf-16le")){if(e.length<2||t.length<2)return-1;d=2,m/=2,b/=2,r/=2}function A(C,D){return d===1?C[D]:C.readUInt16BE(D*d)}let B;if(n){let C=-1;for(B=r;Bm&&(r=m-b),B=r;B>=0;B--){let C=!0;for(let D=0;Dn&&(a=n)):a=n;let d=t.length;a>d/2&&(a=d/2);let m;for(m=0;m>>0,isFinite(a)?(a=a>>>0,n===void 0&&(n="utf8")):(n=a,a=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let d=this.length-r;if((a===void 0||a>d)&&(a=d),t.length>0&&(a<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let m=!1;for(;;)switch(n){case"hex":return aI(this,t,r,a);case"utf8":case"utf-8":return oI(this,t,r,a);case"ascii":case"latin1":case"binary":return sI(this,t,r,a);case"base64":return hI(this,t,r,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return uI(this,t,r,a);default:if(m)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),m=!0}};Tt.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function lI(e,t,r){return t===0&&r===e.length?hl.fromByteArray(e):hl.fromByteArray(e.slice(t,r))}function o2(e,t,r){r=Math.min(e.length,r);let a=[],n=t;for(;n239?4:d>223?3:d>191?2:1;if(n+b<=r){let A,B,C,D;switch(b){case 1:d<128&&(m=d);break;case 2:A=e[n+1],(A&192)===128&&(D=(d&31)<<6|A&63,D>127&&(m=D));break;case 3:A=e[n+1],B=e[n+2],(A&192)===128&&(B&192)===128&&(D=(d&15)<<12|(A&63)<<6|B&63,D>2047&&(D<55296||D>57343)&&(m=D));break;case 4:A=e[n+1],B=e[n+2],C=e[n+3],(A&192)===128&&(B&192)===128&&(C&192)===128&&(D=(d&15)<<18|(A&63)<<12|(B&63)<<6|C&63,D>65535&&D<1114112&&(m=D))}}m===null?(m=65533,b=1):m>65535&&(m-=65536,a.push(m>>>10&1023|55296),m=56320|m&1023),a.push(m),n+=b}return cI(a)}var e2=4096;function cI(e){let t=e.length;if(t<=e2)return String.fromCharCode.apply(String,e);let r="",a=0;for(;aa)&&(r=a);let n="";for(let d=t;da&&(t=a),r<0?(r+=a,r<0&&(r=0)):r>a&&(r=a),rr)throw new RangeError("Trying to access beyond buffer length")}Tt.prototype.readUintLE=Tt.prototype.readUIntLE=function(t,r,a){t=t>>>0,r=r>>>0,a||or(t,r,this.length);let n=this[t],d=1,m=0;for(;++m>>0,r=r>>>0,a||or(t,r,this.length);let n=this[t+--r],d=1;for(;r>0&&(d*=256);)n+=this[t+--r]*d;return n};Tt.prototype.readUint8=Tt.prototype.readUInt8=function(t,r){return t=t>>>0,r||or(t,1,this.length),this[t]};Tt.prototype.readUint16LE=Tt.prototype.readUInt16LE=function(t,r){return t=t>>>0,r||or(t,2,this.length),this[t]|this[t+1]<<8};Tt.prototype.readUint16BE=Tt.prototype.readUInt16BE=function(t,r){return t=t>>>0,r||or(t,2,this.length),this[t]<<8|this[t+1]};Tt.prototype.readUint32LE=Tt.prototype.readUInt32LE=function(t,r){return t=t>>>0,r||or(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};Tt.prototype.readUint32BE=Tt.prototype.readUInt32BE=function(t,r){return t=t>>>0,r||or(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};Tt.prototype.readBigUInt64LE=Tn(function(t){t=t>>>0,ha(t,"offset");let r=this[t],a=this[t+7];(r===void 0||a===void 0)&&co(t,this.length-8);let n=r+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,d=this[++t]+this[++t]*2**8+this[++t]*2**16+a*2**24;return BigInt(n)+(BigInt(d)<>>0,ha(t,"offset");let r=this[t],a=this[t+7];(r===void 0||a===void 0)&&co(t,this.length-8);let n=r*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],d=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+a;return(BigInt(n)<>>0,r=r>>>0,a||or(t,r,this.length);let n=this[t],d=1,m=0;for(;++m=d&&(n-=Math.pow(2,8*r)),n};Tt.prototype.readIntBE=function(t,r,a){t=t>>>0,r=r>>>0,a||or(t,r,this.length);let n=r,d=1,m=this[t+--n];for(;n>0&&(d*=256);)m+=this[t+--n]*d;return d*=128,m>=d&&(m-=Math.pow(2,8*r)),m};Tt.prototype.readInt8=function(t,r){return t=t>>>0,r||or(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};Tt.prototype.readInt16LE=function(t,r){t=t>>>0,r||or(t,2,this.length);let a=this[t]|this[t+1]<<8;return a&32768?a|4294901760:a};Tt.prototype.readInt16BE=function(t,r){t=t>>>0,r||or(t,2,this.length);let a=this[t+1]|this[t]<<8;return a&32768?a|4294901760:a};Tt.prototype.readInt32LE=function(t,r){return t=t>>>0,r||or(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};Tt.prototype.readInt32BE=function(t,r){return t=t>>>0,r||or(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};Tt.prototype.readBigInt64LE=Tn(function(t){t=t>>>0,ha(t,"offset");let r=this[t],a=this[t+7];(r===void 0||a===void 0)&&co(t,this.length-8);let n=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(a<<24);return(BigInt(n)<>>0,ha(t,"offset");let r=this[t],a=this[t+7];(r===void 0||a===void 0)&&co(t,this.length-8);let n=(r<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(n)<>>0,r||or(t,4,this.length),sa.read(this,t,!0,23,4)};Tt.prototype.readFloatBE=function(t,r){return t=t>>>0,r||or(t,4,this.length),sa.read(this,t,!1,23,4)};Tt.prototype.readDoubleLE=function(t,r){return t=t>>>0,r||or(t,8,this.length),sa.read(this,t,!0,52,8)};Tt.prototype.readDoubleBE=function(t,r){return t=t>>>0,r||or(t,8,this.length),sa.read(this,t,!1,52,8)};function Or(e,t,r,a,n,d){if(!Tt.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||te.length)throw new RangeError("Index out of range")}Tt.prototype.writeUintLE=Tt.prototype.writeUIntLE=function(t,r,a,n){if(t=+t,r=r>>>0,a=a>>>0,!n){let b=Math.pow(2,8*a)-1;Or(this,t,r,a,b,0)}let d=1,m=0;for(this[r]=t&255;++m>>0,a=a>>>0,!n){let b=Math.pow(2,8*a)-1;Or(this,t,r,a,b,0)}let d=a-1,m=1;for(this[r+d]=t&255;--d>=0&&(m*=256);)this[r+d]=t/m&255;return r+a};Tt.prototype.writeUint8=Tt.prototype.writeUInt8=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,1,255,0),this[r]=t&255,r+1};Tt.prototype.writeUint16LE=Tt.prototype.writeUInt16LE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,2,65535,0),this[r]=t&255,this[r+1]=t>>>8,r+2};Tt.prototype.writeUint16BE=Tt.prototype.writeUInt16BE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=t&255,r+2};Tt.prototype.writeUint32LE=Tt.prototype.writeUInt32LE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255,r+4};Tt.prototype.writeUint32BE=Tt.prototype.writeUInt32BE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};function s2(e,t,r,a,n){d2(t,a,n,e,r,7);let d=Number(t&BigInt(4294967295));e[r++]=d,d=d>>8,e[r++]=d,d=d>>8,e[r++]=d,d=d>>8,e[r++]=d;let m=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=m,m=m>>8,e[r++]=m,m=m>>8,e[r++]=m,m=m>>8,e[r++]=m,r}function h2(e,t,r,a,n){d2(t,a,n,e,r,7);let d=Number(t&BigInt(4294967295));e[r+7]=d,d=d>>8,e[r+6]=d,d=d>>8,e[r+5]=d,d=d>>8,e[r+4]=d;let m=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=m,m=m>>8,e[r+2]=m,m=m>>8,e[r+1]=m,m=m>>8,e[r]=m,r+8}Tt.prototype.writeBigUInt64LE=Tn(function(t,r=0){return s2(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});Tt.prototype.writeBigUInt64BE=Tn(function(t,r=0){return h2(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});Tt.prototype.writeIntLE=function(t,r,a,n){if(t=+t,r=r>>>0,!n){let A=Math.pow(2,8*a-1);Or(this,t,r,a,A-1,-A)}let d=0,m=1,b=0;for(this[r]=t&255;++d>0)-b&255;return r+a};Tt.prototype.writeIntBE=function(t,r,a,n){if(t=+t,r=r>>>0,!n){let A=Math.pow(2,8*a-1);Or(this,t,r,a,A-1,-A)}let d=a-1,m=1,b=0;for(this[r+d]=t&255;--d>=0&&(m*=256);)t<0&&b===0&&this[r+d+1]!==0&&(b=1),this[r+d]=(t/m>>0)-b&255;return r+a};Tt.prototype.writeInt8=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=t&255,r+1};Tt.prototype.writeInt16LE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,2,32767,-32768),this[r]=t&255,this[r+1]=t>>>8,r+2};Tt.prototype.writeInt16BE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=t&255,r+2};Tt.prototype.writeInt32LE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,4,2147483647,-2147483648),this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4};Tt.prototype.writeInt32BE=function(t,r,a){return t=+t,r=r>>>0,a||Or(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};Tt.prototype.writeBigInt64LE=Tn(function(t,r=0){return s2(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});Tt.prototype.writeBigInt64BE=Tn(function(t,r=0){return h2(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function u2(e,t,r,a,n,d){if(r+a>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function l2(e,t,r,a,n){return t=+t,r=r>>>0,n||u2(e,t,r,4,34028234663852886e22,-34028234663852886e22),sa.write(e,t,r,a,23,4),r+4}Tt.prototype.writeFloatLE=function(t,r,a){return l2(this,t,r,!0,a)};Tt.prototype.writeFloatBE=function(t,r,a){return l2(this,t,r,!1,a)};function c2(e,t,r,a,n){return t=+t,r=r>>>0,n||u2(e,t,r,8,17976931348623157e292,-17976931348623157e292),sa.write(e,t,r,a,52,8),r+8}Tt.prototype.writeDoubleLE=function(t,r,a){return c2(this,t,r,!0,a)};Tt.prototype.writeDoubleBE=function(t,r,a){return c2(this,t,r,!1,a)};Tt.prototype.copy=function(t,r,a,n){if(!Tt.isBuffer(t))throw new TypeError("argument should be a Buffer");if(a||(a=0),!n&&n!==0&&(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r>>0,a=a===void 0?this.length:a>>>0,t||(t=0);let d;if(typeof t=="number")for(d=r;d2**32?n=r2(String(r)):typeof r=="bigint"&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=r2(n)),n+="n"),a+=` It must be ${t}. Received ${n}`,a},RangeError);function r2(e){let t="",r=e.length,a=e[0]==="-"?1:0;for(;r>=a+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function mI(e,t,r){ha(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&co(t,e.length-(r+1))}function d2(e,t,r,a,n,d){if(e>r||e3?t===0||t===BigInt(0)?b=`>= 0${m} and < 2${m} ** ${(d+1)*8}${m}`:b=`>= -(2${m} ** ${(d+1)*8-1}${m}) and < 2 ** ${(d+1)*8-1}${m}`:b=`>= ${t}${m} and <= ${r}${m}`,new oa.ERR_OUT_OF_RANGE("value",b,e)}mI(a,n,d)}function ha(e,t){if(typeof e!="number")throw new oa.ERR_INVALID_ARG_TYPE(t,"number",e)}function co(e,t,r){throw Math.floor(e)!==e?(ha(e,r),new oa.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new oa.ERR_BUFFER_OUT_OF_BOUNDS:new oa.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var bI=/[^+/0-9A-Za-z-_]/g;function yI(e){if(e=e.split("=")[0],e=e.trim().replace(bI,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function cl(e,t){t=t||1/0;let r,a=e.length,n=null,d=[];for(let m=0;m55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&d.push(239,191,189);continue}else if(m+1===a){(t-=3)>-1&&d.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&d.push(239,191,189),n=r;continue}r=(n-55296<<10|r-56320)+65536}else n&&(t-=3)>-1&&d.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;d.push(r)}else if(r<2048){if((t-=2)<0)break;d.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;d.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;d.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return d}function xI(e){let t=[];for(let r=0;r>8,n=r%256,d.push(n),d.push(a);return d}function v2(e){return hl.toByteArray(yI(e))}function Ws(e,t,r,a){let n;for(n=0;n=t.length||n>=e.length);++n)t[n+r]=e[n];return n}function Ni(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function gl(e){return e!==e}var MI=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let a=r*16;for(let n=0;n<16;++n)t[a+n]=e[r]+e[n]}return t}();function Tn(e){return typeof BigInt>"u"?AI:e}function AI(){throw new Error("BigInt not supported")}});var U,M=j_(()=>{U=On().Buffer});var ml=P((fn,g2)=>{M();var p2=typeof self<"u"?self:fn,Js=function(){function e(){this.fetch=!1,this.DOMException=p2.DOMException}return e.prototype=p2,new e}();(function(e){var t=function(r){var a={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};function n(v){return v&&DataView.prototype.isPrototypeOf(v)}if(a.arrayBuffer)var d=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],m=ArrayBuffer.isView||function(v){return v&&d.indexOf(Object.prototype.toString.call(v))>-1};function b(v){if(typeof v!="string"&&(v=String(v)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(v))throw new TypeError("Invalid character in header field name");return v.toLowerCase()}function A(v){return typeof v!="string"&&(v=String(v)),v}function B(v){var i={next:function(){var o=v.shift();return{done:o===void 0,value:o}}};return a.iterable&&(i[Symbol.iterator]=function(){return i}),i}function C(v){this.map={},v instanceof C?v.forEach(function(i,o){this.append(o,i)},this):Array.isArray(v)?v.forEach(function(i){this.append(i[0],i[1])},this):v&&Object.getOwnPropertyNames(v).forEach(function(i){this.append(i,v[i])},this)}C.prototype.append=function(v,i){v=b(v),i=A(i);var o=this.map[v];this.map[v]=o?o+", "+i:i},C.prototype.delete=function(v){delete this.map[b(v)]},C.prototype.get=function(v){return v=b(v),this.has(v)?this.map[v]:null},C.prototype.has=function(v){return this.map.hasOwnProperty(b(v))},C.prototype.set=function(v,i){this.map[b(v)]=A(i)},C.prototype.forEach=function(v,i){for(var o in this.map)this.map.hasOwnProperty(o)&&v.call(i,this.map[o],o,this)},C.prototype.keys=function(){var v=[];return this.forEach(function(i,o){v.push(o)}),B(v)},C.prototype.values=function(){var v=[];return this.forEach(function(i){v.push(i)}),B(v)},C.prototype.entries=function(){var v=[];return this.forEach(function(i,o){v.push([o,i])}),B(v)},a.iterable&&(C.prototype[Symbol.iterator]=C.prototype.entries);function D(v){if(v.bodyUsed)return Promise.reject(new TypeError("Already read"));v.bodyUsed=!0}function K(v){return new Promise(function(i,o){v.onload=function(){i(v.result)},v.onerror=function(){o(v.error)}})}function j(v){var i=new FileReader,o=K(i);return i.readAsArrayBuffer(v),o}function Z(v){var i=new FileReader,o=K(i);return i.readAsText(v),o}function qt(v){for(var i=new Uint8Array(v),o=new Array(i.length),h=0;h-1?i:v}function Lt(v,i){i=i||{};var o=i.body;if(v instanceof Lt){if(v.bodyUsed)throw new TypeError("Already read");this.url=v.url,this.credentials=v.credentials,i.headers||(this.headers=new C(v.headers)),this.method=v.method,this.mode=v.mode,this.signal=v.signal,!o&&v._bodyInit!=null&&(o=v._bodyInit,v.bodyUsed=!0)}else this.url=String(v);if(this.credentials=i.credentials||this.credentials||"same-origin",(i.headers||!this.headers)&&(this.headers=new C(i.headers)),this.method=ht(i.method||this.method||"GET"),this.mode=i.mode||this.mode||null,this.signal=i.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&o)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(o)}Lt.prototype.clone=function(){return new Lt(this,{body:this._bodyInit})};function ee(v){var i=new FormData;return v.trim().split("&").forEach(function(o){if(o){var h=o.split("="),s=h.shift().replace(/\+/g," "),u=h.join("=").replace(/\+/g," ");i.append(decodeURIComponent(s),decodeURIComponent(u))}}),i}function $t(v){var i=new C,o=v.replace(/\r?\n[\t ]+/g," ");return o.split(/\r?\n/).forEach(function(h){var s=h.split(":"),u=s.shift().trim();if(u){var p=s.join(":").trim();i.append(u,p)}}),i}J.call(Lt.prototype);function Gt(v,i){i||(i={}),this.type="default",this.status=i.status===void 0?200:i.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in i?i.statusText:"OK",this.headers=new C(i.headers),this.url=i.url||"",this._initBody(v)}J.call(Gt.prototype),Gt.prototype.clone=function(){return new Gt(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new C(this.headers),url:this.url})},Gt.error=function(){var v=new Gt(null,{status:0,statusText:""});return v.type="error",v};var tt=[301,302,303,307,308];Gt.redirect=function(v,i){if(tt.indexOf(i)===-1)throw new RangeError("Invalid status code");return new Gt(null,{status:i,headers:{location:v}})},r.DOMException=e.DOMException;try{new r.DOMException}catch{r.DOMException=function(i,o){this.message=i,this.name=o;var h=Error(i);this.stack=h.stack},r.DOMException.prototype=Object.create(Error.prototype),r.DOMException.prototype.constructor=r.DOMException}function rt(v,i){return new Promise(function(o,h){var s=new Lt(v,i);if(s.signal&&s.signal.aborted)return h(new r.DOMException("Aborted","AbortError"));var u=new XMLHttpRequest;function p(){u.abort()}u.onload=function(){var g={status:u.status,statusText:u.statusText,headers:$t(u.getAllResponseHeaders()||"")};g.url="responseURL"in u?u.responseURL:g.headers.get("X-Request-URL");var l="response"in u?u.response:u.responseText;o(new Gt(l,g))},u.onerror=function(){h(new TypeError("Network request failed"))},u.ontimeout=function(){h(new TypeError("Network request failed"))},u.onabort=function(){h(new r.DOMException("Aborted","AbortError"))},u.open(s.method,s.url,!0),s.credentials==="include"?u.withCredentials=!0:s.credentials==="omit"&&(u.withCredentials=!1),"responseType"in u&&a.blob&&(u.responseType="blob"),s.headers.forEach(function(g,l){u.setRequestHeader(l,g)}),s.signal&&(s.signal.addEventListener("abort",p),u.onreadystatechange=function(){u.readyState===4&&s.signal.removeEventListener("abort",p)}),u.send(typeof s._bodyInit>"u"?null:s._bodyInit)})}return rt.polyfill=!0,e.fetch||(e.fetch=rt,e.Headers=C,e.Request=Lt,e.Response=Gt),r.Headers=C,r.Request=Lt,r.Response=Gt,r.fetch=rt,Object.defineProperty(r,"__esModule",{value:!0}),r}({})})(Js);Js.fetch.ponyfill=!0;delete Js.fetch.polyfill;var la=Js;fn=la.fetch;fn.default=la.fetch;fn.fetch=la.fetch;fn.Headers=la.Headers;fn.Request=la.Request;fn.Response=la.Response;g2.exports=fn});var xl=P((xz,x2)=>{M();var yl=Object.defineProperty,_I=Object.getOwnPropertyDescriptor,II=Object.getOwnPropertyNames,EI=Object.prototype.hasOwnProperty,SI=(e,t)=>{for(var r in t)yl(e,r,{get:t[r],enumerable:!0})},BI=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of II(t))!EI.call(e,n)&&n!==r&&yl(e,n,{get:()=>t[n],enumerable:!(a=_I(t,n))||a.enumerable});return e},CI=e=>BI(yl({},"__esModule",{value:!0}),e),m2={};SI(m2,{Channel:()=>y2,LongPoll:()=>t0,Presence:()=>po,Serializer:()=>go,Socket:()=>kI});x2.exports=CI(m2);var mo=e=>typeof e=="function"?e:function(){return e},qI=typeof self<"u"?self:null,vo=typeof window<"u"?window:null,bo=qI||vo||bo,RI="2.0.0",Fi={connecting:0,open:1,closing:2,closed:3},TI=1e4,OI=1e3,Kr={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},an={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},bl={longpoll:"longpoll",websocket:"websocket"},DI={complete:4},Xs=class{constructor(e,t,r,a){this.channel=e,this.event=t,this.payload=r||function(){return{}},this.receivedResp=null,this.timeout=a,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(e){this.timeout=e,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(e,t){return this.hasReceived(e)&&t(this.receivedResp.response),this.recHooks.push({status:e,callback:t}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:e,response:t,_ref:r}){this.recHooks.filter(a=>a.status===e).forEach(a=>a.callback(t))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,e=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=e,this.matchReceive(e)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}trigger(e,t){this.channel.trigger(this.refEvent,{status:e,response:t})}},b2=class{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},y2=class{constructor(e,t,r){this.state=Kr.closed,this.topic=e,this.params=mo(t||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new Xs(this,an.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new b2(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Kr.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(a=>a.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=Kr.closed,this.socket.remove(this)}),this.onError(a=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,a),this.isJoining()&&this.joinPush.reset(),this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new Xs(this,an.leave,mo({}),this.timeout).send(),this.state=Kr.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(an.reply,(a,n)=>{this.trigger(this.replyEventName(n),a)})}join(e=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=e,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(e){this.on(an.close,e)}onError(e){return this.on(an.error,t=>e(t))}on(e,t){let r=this.bindingRef++;return this.bindings.push({event:e,ref:r,callback:t}),r}off(e,t){this.bindings=this.bindings.filter(r=>!(r.event===e&&(typeof t>"u"||t===r.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,r=this.timeout){if(t=t||{},!this.joinedOnce)throw new Error(`tried to push '${e}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let a=new Xs(this,e,function(){return t},r);return this.canPush()?a.send():(a.startTimeout(),this.pushBuffer.push(a)),a}leave(e=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Kr.leaving;let t=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(an.close,"leave")},r=new Xs(this,an.leave,mo({}),e);return r.receive("ok",()=>t()).receive("timeout",()=>t()),r.send(),this.canPush()||r.trigger("ok",{}),r}onMessage(e,t,r){return t}isMember(e,t,r,a){return this.topic!==e?!1:a&&a!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:e,event:t,payload:r,joinRef:a}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Kr.joining,this.joinPush.resend(e))}trigger(e,t,r,a){let n=this.onMessage(e,t,r,a);if(t&&!n)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let d=this.bindings.filter(m=>m.event===e);for(let m=0;m{let b=this.parseJSON(e.responseText);m&&m(b)},d&&(e.ontimeout=d),e.onprogress=()=>{},e.send(a),e}static xhrRequest(e,t,r,a,n,d,m,b){return e.open(t,r,!0),e.timeout=d,e.setRequestHeader("Content-Type",a),e.onerror=()=>b&&b(null),e.onreadystatechange=()=>{if(e.readyState===DI.complete&&b){let A=this.parseJSON(e.responseText);b(A)}},m&&(e.ontimeout=m),e.send(n),e}static parseJSON(e){if(!e||e==="")return null;try{return JSON.parse(e)}catch{return console&&console.log("failed to parse JSON response",e),null}}static serialize(e,t){let r=[];for(var a in e){if(!Object.prototype.hasOwnProperty.call(e,a))continue;let n=t?`${t}[${a}]`:a,d=e[a];typeof d=="object"?r.push(this.serialize(d,n)):r.push(encodeURIComponent(n)+"="+encodeURIComponent(d))}return r.join("&")}static appendParams(e,t){if(Object.keys(t).length===0)return e;let r=e.match(/\?/)?"&":"?";return`${e}${r}${this.serialize(t)}`}},t0=class{constructor(e){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(e),this.readyState=Fi.connecting,this.poll()}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+bl.websocket),"$1/"+bl.longpoll)}endpointURL(){return e0.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,r){this.close(e,t,r),this.readyState=Fi.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===Fi.open||this.readyState===Fi.connecting}poll(){this.ajax("GET",null,()=>this.ontimeout(),e=>{if(e){var{status:t,token:r,messages:a}=e;this.token=r}else t=0;switch(t){case 200:a.forEach(n=>{setTimeout(()=>this.onmessage({data:n}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Fi.open,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${t}`)}})}send(e){this.ajax("POST",e,()=>this.onerror("timeout"),t=>{(!t||t.status!==200)&&(this.onerror(t&&t.status),this.closeAndRetry(1011,"internal server error",!1))})}close(e,t,r){for(let n of this.reqs)n.abort();this.readyState=Fi.closed;let a=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:e,reason:t,wasClean:r});typeof CloseEvent<"u"?this.onclose(new CloseEvent("close",a)):this.onclose(a)}ajax(e,t,r,a){let n,d=()=>{this.reqs.delete(n),r()};n=e0.request(e,this.endpointURL(),"application/json",t,this.timeout,d,m=>{this.reqs.delete(n),this.isActive()&&a(m)}),this.reqs.add(n)}},po=class{constructor(e,t={}){let r=t.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=e,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(r.state,a=>{let{onJoin:n,onLeave:d,onSync:m}=this.caller;this.joinRef=this.channel.joinRef(),this.state=po.syncState(this.state,a,n,d),this.pendingDiffs.forEach(b=>{this.state=po.syncDiff(this.state,b,n,d)}),this.pendingDiffs=[],m()}),this.channel.on(r.diff,a=>{let{onJoin:n,onLeave:d,onSync:m}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(a):(this.state=po.syncDiff(this.state,a,n,d),m())})}onJoin(e){this.caller.onJoin=e}onLeave(e){this.caller.onLeave=e}onSync(e){this.caller.onSync=e}list(e){return po.list(this.state,e)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(e,t,r,a){let n=this.clone(e),d={},m={};return this.map(n,(b,A)=>{t[b]||(m[b]=A)}),this.map(t,(b,A)=>{let B=n[b];if(B){let C=A.metas.map(Z=>Z.phx_ref),D=B.metas.map(Z=>Z.phx_ref),K=A.metas.filter(Z=>D.indexOf(Z.phx_ref)<0),j=B.metas.filter(Z=>C.indexOf(Z.phx_ref)<0);K.length>0&&(d[b]=A,d[b].metas=K),j.length>0&&(m[b]=this.clone(B),m[b].metas=j)}else d[b]=A}),this.syncDiff(n,{joins:d,leaves:m},r,a)}static syncDiff(e,t,r,a){let{joins:n,leaves:d}=this.clone(t);return r||(r=function(){}),a||(a=function(){}),this.map(n,(m,b)=>{let A=e[m];if(e[m]=this.clone(b),A){let B=e[m].metas.map(D=>D.phx_ref),C=A.metas.filter(D=>B.indexOf(D.phx_ref)<0);e[m].metas.unshift(...C)}r(m,A,b)}),this.map(d,(m,b)=>{let A=e[m];if(!A)return;let B=b.metas.map(C=>C.phx_ref);A.metas=A.metas.filter(C=>B.indexOf(C.phx_ref)<0),a(m,A,b),A.metas.length===0&&delete e[m]}),e}static list(e,t){return t||(t=function(r,a){return a}),this.map(e,(r,a)=>t(r,a))}static map(e,t){return Object.getOwnPropertyNames(e).map(r=>t(r,e[r]))}static clone(e){return JSON.parse(JSON.stringify(e))}},go={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(e,t){if(e.payload.constructor===ArrayBuffer)return t(this.binaryEncode(e));{let r=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(r))}},decode(e,t){if(e.constructor===ArrayBuffer)return t(this.binaryDecode(e));{let[r,a,n,d,m]=JSON.parse(e);return t({join_ref:r,ref:a,topic:n,event:d,payload:m})}},binaryEncode(e){let{join_ref:t,ref:r,event:a,topic:n,payload:d}=e,m=this.META_LENGTH+t.length+r.length+n.length+a.length,b=new ArrayBuffer(this.HEADER_LENGTH+m),A=new DataView(b),B=0;A.setUint8(B++,this.KINDS.push),A.setUint8(B++,t.length),A.setUint8(B++,r.length),A.setUint8(B++,n.length),A.setUint8(B++,a.length),Array.from(t,D=>A.setUint8(B++,D.charCodeAt(0))),Array.from(r,D=>A.setUint8(B++,D.charCodeAt(0))),Array.from(n,D=>A.setUint8(B++,D.charCodeAt(0))),Array.from(a,D=>A.setUint8(B++,D.charCodeAt(0)));var C=new Uint8Array(b.byteLength+d.byteLength);return C.set(new Uint8Array(b),0),C.set(new Uint8Array(d),b.byteLength),C.buffer},binaryDecode(e){let t=new DataView(e),r=t.getUint8(0),a=new TextDecoder;switch(r){case this.KINDS.push:return this.decodePush(e,t,a);case this.KINDS.reply:return this.decodeReply(e,t,a);case this.KINDS.broadcast:return this.decodeBroadcast(e,t,a)}},decodePush(e,t,r){let a=t.getUint8(1),n=t.getUint8(2),d=t.getUint8(3),m=this.HEADER_LENGTH+this.META_LENGTH-1,b=r.decode(e.slice(m,m+a));m=m+a;let A=r.decode(e.slice(m,m+n));m=m+n;let B=r.decode(e.slice(m,m+d));m=m+d;let C=e.slice(m,e.byteLength);return{join_ref:b,ref:null,topic:A,event:B,payload:C}},decodeReply(e,t,r){let a=t.getUint8(1),n=t.getUint8(2),d=t.getUint8(3),m=t.getUint8(4),b=this.HEADER_LENGTH+this.META_LENGTH,A=r.decode(e.slice(b,b+a));b=b+a;let B=r.decode(e.slice(b,b+n));b=b+n;let C=r.decode(e.slice(b,b+d));b=b+d;let D=r.decode(e.slice(b,b+m));b=b+m;let K=e.slice(b,e.byteLength),j={status:D,response:K};return{join_ref:A,ref:B,topic:C,event:an.reply,payload:j}},decodeBroadcast(e,t,r){let a=t.getUint8(1),n=t.getUint8(2),d=this.HEADER_LENGTH+2,m=r.decode(e.slice(d,d+a));d=d+a;let b=r.decode(e.slice(d,d+n));d=d+n;let A=e.slice(d,e.byteLength);return{join_ref:null,ref:null,topic:m,event:b,payload:A}}},kI=class{constructor(e,t={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=t.timeout||TI,this.transport=t.transport||bo.WebSocket||t0,this.establishedConnections=0,this.defaultEncoder=go.encode.bind(go),this.defaultDecoder=go.decode.bind(go),this.closeWasClean=!1,this.binaryType=t.binaryType||"arraybuffer",this.connectClock=1,this.transport!==t0?(this.encode=t.encode||this.defaultEncoder,this.decode=t.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let r=null;vo&&vo.addEventListener&&(vo.addEventListener("pagehide",a=>{this.conn&&(this.disconnect(),r=this.connectClock)}),vo.addEventListener("pageshow",a=>{r===this.connectClock&&(r=null,this.connect())})),this.heartbeatIntervalMs=t.heartbeatIntervalMs||3e4,this.rejoinAfterMs=a=>t.rejoinAfterMs?t.rejoinAfterMs(a):[1e3,2e3,5e3][a-1]||1e4,this.reconnectAfterMs=a=>t.reconnectAfterMs?t.reconnectAfterMs(a):[10,50,100,150,200,250,500,1e3,2e3][a-1]||5e3,this.logger=t.logger||null,this.longpollerTimeout=t.longpollerTimeout||2e4,this.params=mo(t.params||{}),this.endPoint=`${e}/${bl.websocket}`,this.vsn=t.vsn||RI,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new b2(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}getLongPollTransport(){return t0}replaceTransport(e){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.sendBuffer=[],this.conn&&(this.conn.close(),this.conn=null),this.transport=e}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let e=e0.appendParams(e0.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return e.charAt(0)!=="/"?e:e.charAt(1)==="/"?`${this.protocol()}:${e}`:`${this.protocol()}://${location.host}${e}`}disconnect(e,t,r){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(e,t,r)}connect(e){e&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=mo(e)),!this.conn&&(this.connectClock++,this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=t=>this.onConnError(t),this.conn.onmessage=t=>this.onConnMessage(t),this.conn.onclose=t=>this.onConnClose(t))}log(e,t,r){this.logger(e,t,r)}hasLogger(){return this.logger!==null}onOpen(e){let t=this.makeRef();return this.stateChangeCallbacks.open.push([t,e]),t}onClose(e){let t=this.makeRef();return this.stateChangeCallbacks.close.push([t,e]),t}onError(e){let t=this.makeRef();return this.stateChangeCallbacks.error.push([t,e]),t}onMessage(e){let t=this.makeRef();return this.stateChangeCallbacks.message.push([t,e]),t}ping(e){if(!this.isConnected())return!1;let t=this.makeRef(),r=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:t});let a=this.onMessage(n=>{n.ref===t&&(this.off([a]),e(Date.now()-r))});return!0}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,e])=>e())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.triggerChanError(),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),OI,"heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(e,t,r){if(!this.conn)return e&&e();this.waitForBufferDone(()=>{this.conn&&(t?this.conn.close(t,r||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null),e&&e()})})}waitForBufferDone(e,t=1){if(t===5||!this.conn||!this.conn.bufferedAmount){e();return}setTimeout(()=>{this.waitForBufferDone(e,t+1)},150*t)}waitForSocketClosed(e,t=1){if(t===5||!this.conn||this.conn.readyState===Fi.closed){e();return}setTimeout(()=>{this.waitForSocketClosed(e,t+1)},150*t)}onConnClose(e){let t=e&&e.code;this.hasLogger()&&this.log("transport","close",e),this.triggerChanError(),this.clearHeartbeats(),!this.closeWasClean&&t!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,r])=>r(e))}onConnError(e){this.hasLogger()&&this.log("transport",e);let t=this.transport,r=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,a])=>{a(e,t,r)}),(t===this.transport||r>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(e=>{e.isErrored()||e.isLeaving()||e.isClosed()||e.trigger(an.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case Fi.connecting:return"connecting";case Fi.open:return"open";case Fi.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(e){this.off(e.stateChangeRefs),this.channels=this.channels.filter(t=>t.joinRef()!==e.joinRef())}off(e){for(let t in this.stateChangeCallbacks)this.stateChangeCallbacks[t]=this.stateChangeCallbacks[t].filter(([r])=>e.indexOf(r)===-1)}channel(e,t={}){let r=new y2(e,t,this);return this.channels.push(r),r}push(e){if(this.hasLogger()){let{topic:t,event:r,payload:a,ref:n,join_ref:d}=e;this.log("push",`${t} ${r} (${d}, ${n})`,a)}this.isConnected()?this.encode(e,t=>this.conn.send(t)):this.sendBuffer.push(()=>this.encode(e,t=>this.conn.send(t)))}makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(e=>e()),this.sendBuffer=[])}onConnMessage(e){this.decode(e.data,t=>{let{topic:r,event:a,payload:n,ref:d,join_ref:m}=t;d&&d===this.pendingHeartbeatRef&&(this.clearHeartbeats(),this.pendingHeartbeatRef=null,this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${n.status||""} ${r} ${a} ${d&&"("+d+")"||""}`,n);for(let b=0;br.topic===e&&(r.isJoined()||r.isJoining()));t&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${e}"`),t.leave())}}});var M2=P((Cz,w2)=>{M();var ca=null;typeof WebSocket<"u"?ca=WebSocket:typeof MozWebSocket<"u"?ca=MozWebSocket:typeof window<"u"||typeof window<"u"?ca=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(ca=self.WebSocket||self.MozWebSocket);w2.exports=ca});var Dn=P((Rz,A2)=>{M();var PI=A2.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=PI)});var r0=P((Oz,_2)=>{M();var UI=_2.exports={version:"2.6.0"};typeof __e=="number"&&(__e=UI)});var pf=P((kz,I2)=>{M();I2.exports=function(e){return typeof e=="object"?e!==null:typeof e=="function"}});var da=P((Uz,E2)=>{M();var LI=pf();E2.exports=function(e){if(!LI(e))throw TypeError(e+" is not an object!");return e}});var yo=P((Nz,S2)=>{M();S2.exports=function(e){try{return!!e()}catch{return!0}}});var va=P((Kz,B2)=>{M();B2.exports=!yo()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Ml=P((Hz,q2)=>{M();var C2=pf(),wl=Dn().document,NI=C2(wl)&&C2(wl.createElement);q2.exports=function(e){return NI?wl.createElement(e):{}}});var T2=P((zz,R2)=>{M();R2.exports=!va()&&!yo()(function(){return Object.defineProperty(Ml()("div"),"a",{get:function(){return 7}}).a!=7})});var D2=P((Yz,O2)=>{M();var i0=pf();O2.exports=function(e,t){if(!i0(e))return e;var r,a;if(t&&typeof(r=e.toString)=="function"&&!i0(a=r.call(e))||typeof(r=e.valueOf)=="function"&&!i0(a=r.call(e))||!t&&typeof(r=e.toString)=="function"&&!i0(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}});var xo=P(P2=>{M();var k2=da(),FI=T2(),KI=D2(),QI=Object.defineProperty;P2.f=va()?Object.defineProperty:function(t,r,a){if(k2(t),r=KI(r,!0),k2(a),FI)try{return QI(t,r,a)}catch{}if("get"in a||"set"in a)throw TypeError("Accessors not supported!");return"value"in a&&(t[r]=a.value),t}});var Al=P((Wz,U2)=>{M();U2.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}});var kn=P((Xz,L2)=>{M();var HI=xo(),jI=Al();L2.exports=va()?function(e,t,r){return HI.f(e,t,jI(1,r))}:function(e,t,r){return e[t]=r,e}});var wo=P((eV,N2)=>{M();var zI={}.hasOwnProperty;N2.exports=function(e,t){return zI.call(e,t)}});var n0=P((iV,F2)=>{M();var VI=0,YI=Math.random();F2.exports=function(e){return"Symbol(".concat(e===void 0?"":e,")_",(++VI+YI).toString(36))}});var Mo=P((fV,Q2)=>{M();var GI=Dn(),f0=kn(),K2=wo(),_l=n0()("src"),Il="toString",El=Function[Il],$I=(""+El).split(Il);r0().inspectSource=function(e){return El.call(e)};(Q2.exports=function(e,t,r,a){var n=typeof r=="function";n&&(K2(r,"name")||f0(r,"name",t)),e[t]!==r&&(n&&(K2(r,_l)||f0(r,_l,e[t]?""+e[t]:$I.join(String(t)))),e===GI?e[t]=r:a?e[t]?e[t]=r:f0(e,t,r):(delete e[t],f0(e,t,r)))})(Function.prototype,Il,function(){return typeof this=="function"&&this[_l]||El.call(this)})});var Sl=P((oV,H2)=>{M();H2.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}});var Bl=P((hV,j2)=>{M();var ZI=Sl();j2.exports=function(e,t,r){if(ZI(e),t===void 0)return e;switch(r){case 1:return function(a){return e.call(t,a)};case 2:return function(a,n){return e.call(t,a,n)};case 3:return function(a,n,d){return e.call(t,a,n,d)}}return function(){return e.apply(t,arguments)}}});var Wr=P((lV,V2)=>{M();var pa=Dn(),a0=r0(),WI=kn(),JI=Mo(),z2=Bl(),Cl="prototype",Br=function(e,t,r){var a=e&Br.F,n=e&Br.G,d=e&Br.S,m=e&Br.P,b=e&Br.B,A=n?pa:d?pa[t]||(pa[t]={}):(pa[t]||{})[Cl],B=n?a0:a0[t]||(a0[t]={}),C=B[Cl]||(B[Cl]={}),D,K,j,Z;n&&(r=t);for(D in r)K=!a&&A&&A[D]!==void 0,j=(K?A:r)[D],Z=b&&K?z2(j,pa):m&&typeof j=="function"?z2(Function.call,j):j,A&&JI(A,D,j,e&Br.U),B[D]!=j&&WI(B,D,Z),m&&C[D]!=j&&(C[D]=j)};pa.core=a0;Br.F=1;Br.G=2;Br.S=4;Br.P=8;Br.B=16;Br.W=32;Br.U=64;Br.R=128;V2.exports=Br});var Ao=P((dV,Y2)=>{M();var XI={}.toString;Y2.exports=function(e){return XI.call(e).slice(8,-1)}});var ql=P((pV,G2)=>{M();var tE=Ao();G2.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return tE(e)=="String"?e.split(""):Object(e)}});var ga=P((mV,$2)=>{M();$2.exports=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e}});var Rl=P((yV,Z2)=>{M();var eE=ga();Z2.exports=function(e){return Object(eE(e))}});var o0=P((wV,W2)=>{M();var rE=Math.ceil,iE=Math.floor;W2.exports=function(e){return isNaN(e=+e)?0:(e>0?iE:rE)(e)}});var s0=P((AV,J2)=>{M();var nE=o0(),fE=Math.min;J2.exports=function(e){return e>0?fE(nE(e),9007199254740991):0}});var tg=P((IV,X2)=>{M();var aE=Ao();X2.exports=Array.isArray||function(t){return aE(t)=="Array"}});var Tl=P((SV,eg)=>{M();eg.exports=!1});var Ol=P((CV,fg)=>{M();var oE=r0(),rg=Dn(),ig="__core-js_shared__",ng=rg[ig]||(rg[ig]={});(fg.exports=function(e,t){return ng[e]||(ng[e]=t!==void 0?t:{})})("versions",[]).push({version:oE.version,mode:Tl()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var mi=P((RV,og)=>{M();var Dl=Ol()("wks"),sE=n0(),kl=Dn().Symbol,ag=typeof kl=="function",hE=og.exports=function(e){return Dl[e]||(Dl[e]=ag&&kl[e]||(ag?kl:sE)("Symbol."+e))};hE.store=Dl});var ug=P((OV,hg)=>{M();var uE=pf(),sg=tg(),lE=mi()("species");hg.exports=function(e){var t;return sg(e)&&(t=e.constructor,typeof t=="function"&&(t===Array||sg(t.prototype))&&(t=void 0),uE(t)&&(t=t[lE],t===null&&(t=void 0))),t===void 0?Array:t}});var cg=P((kV,lg)=>{M();var cE=ug();lg.exports=function(e,t){return new(cE(e))(t)}});var ma=P((UV,dg)=>{M();var dE=Bl(),vE=ql(),pE=Rl(),gE=s0(),mE=cg();dg.exports=function(e,t){var r=e==1,a=e==2,n=e==3,d=e==4,m=e==6,b=e==5||m,A=t||mE;return function(B,C,D){for(var K=pE(B),j=vE(K),Z=dE(C,D,3),qt=gE(j.length),Rt=0,J=r?A(B,qt):a?A(B,0):void 0,Ot,ht;qt>Rt;Rt++)if((b||Rt in j)&&(Ot=j[Rt],ht=Z(Ot,Rt,K),e)){if(r)J[Rt]=ht;else if(ht)switch(e){case 3:return!0;case 5:return Ot;case 6:return Rt;case 2:J.push(Ot)}else if(d)return!1}return m?-1:n||d?d:J}}});var _o=P((NV,vg)=>{M();var Pl=mi()("unscopables"),Ul=Array.prototype;Ul[Pl]==null&&kn()(Ul,Pl,{});vg.exports=function(e){Ul[Pl][e]=!0}});var gg=P(()=>{"use strict";M();var Ll=Wr(),bE=ma()(6),Nl="findIndex",pg=!0;Nl in[]&&Array(1)[Nl](function(){pg=!1});Ll(Ll.P+Ll.F*pg,"Array",{findIndex:function(t){return bE(this,t,arguments.length>1?arguments[1]:void 0)}});_o()(Nl)});var bg=P(()=>{"use strict";M();var Fl=Wr(),yE=ma()(5),Kl="find",mg=!0;Kl in[]&&Array(1)[Kl](function(){mg=!1});Fl(Fl.P+Fl.F*mg,"Array",{find:function(t){return yE(this,t,arguments.length>1?arguments[1]:void 0)}});_o()(Kl)});var wg=P(()=>{M();var xE=xo().f,yg=Function.prototype,wE=/^\s*function ([^ (]*)/,xg="name";xg in yg||va()&&xE(yg,xg,{configurable:!0,get:function(){try{return(""+this).match(wE)[1]}catch{return""}}})});var Hl=P(Ql=>{"use strict";M();Ql.__esModule=!0;Ql.default=function(e,t){if(e!==t)throw new TypeError("Cannot instantiate an arrow function")}});var Ag=P(Pn=>{"use strict";M();Object.defineProperty(Pn,"__esModule",{value:!0});Pn.flip=ME;Pn.constant=AE;Pn.on=_E;Pn.compose=IE;Pn.pipe=EE;Pn.curry=SE;function ME(e){return function(t,r){return e(r,t)}}function AE(e){return function(){return e}}function _E(e,t){return function(r,a){return e(t(r),t(a))}}function IE(){for(var e=this,t=arguments.length,r=Array(t),a=0;a-1;b--)m=r[b].call(e,m);return m}}function EE(){for(var e=this,t=arguments.length,r=Array(t),a=0;a=t?e.apply(this,a):Mg(e,t,a)}}function SE(e){return Mg(e,e.length,[])}});var h0=P((tY,_g)=>{M();var BE=Math.ceil,CE=Math.floor;_g.exports=function(e){return isNaN(e=+e)?0:(e>0?CE:BE)(e)}});var u0=P((rY,Ig)=>{M();Ig.exports=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e}});var Sg=P((nY,Eg)=>{M();var qE=h0(),RE=u0();Eg.exports=function(e){return function(t,r){var a=String(RE(t)),n=qE(r),d=a.length,m,b;return n<0||n>=d?e?"":void 0:(m=a.charCodeAt(n),m<55296||m>56319||n+1===d||(b=a.charCodeAt(n+1))<56320||b>57343?e?a.charAt(n):m:e?a.slice(n,n+2):(m-55296<<10)+(b-56320)+65536)}}});var Io=P((aY,Bg)=>{M();Bg.exports=!0});var on=P((sY,Cg)=>{M();var TE=Cg.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=TE)});var Cr=P((uY,qg)=>{M();var OE=qg.exports={version:"2.6.0"};typeof __e=="number"&&(__e=OE)});var Tg=P((cY,Rg)=>{M();Rg.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}});var jl=P((vY,Og)=>{M();var DE=Tg();Og.exports=function(e,t,r){if(DE(e),t===void 0)return e;switch(r){case 1:return function(a){return e.call(t,a)};case 2:return function(a,n){return e.call(t,a,n)};case 3:return function(a,n,d){return e.call(t,a,n,d)}}return function(){return e.apply(t,arguments)}}});var gf=P((gY,Dg)=>{M();Dg.exports=function(e){return typeof e=="object"?e!==null:typeof e=="function"}});var mf=P((bY,kg)=>{M();var kE=gf();kg.exports=function(e){if(!kE(e))throw TypeError(e+" is not an object!");return e}});var bf=P((xY,Pg)=>{M();Pg.exports=function(e){try{return!!e()}catch{return!0}}});var Un=P((MY,Ug)=>{M();Ug.exports=!bf()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Vl=P((_Y,Ng)=>{M();var Lg=gf(),zl=on().document,PE=Lg(zl)&&Lg(zl.createElement);Ng.exports=function(e){return PE?zl.createElement(e):{}}});var Yl=P((EY,Fg)=>{M();Fg.exports=!Un()&&!bf()(function(){return Object.defineProperty(Vl()("div"),"a",{get:function(){return 7}}).a!=7})});var c0=P((BY,Kg)=>{M();var l0=gf();Kg.exports=function(e,t){if(!l0(e))return e;var r,a;if(t&&typeof(r=e.toString)=="function"&&!l0(a=r.call(e))||typeof(r=e.valueOf)=="function"&&!l0(a=r.call(e))||!t&&typeof(r=e.toString)=="function"&&!l0(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}});var sn=P(Hg=>{M();var Qg=mf(),UE=Yl(),LE=c0(),NE=Object.defineProperty;Hg.f=Un()?Object.defineProperty:function(t,r,a){if(Qg(t),r=LE(r,!0),Qg(a),UE)try{return NE(t,r,a)}catch{}if("get"in a||"set"in a)throw TypeError("Accessors not supported!");return"value"in a&&(t[r]=a.value),t}});var ba=P((TY,jg)=>{M();jg.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}});var yf=P((DY,zg)=>{M();var FE=sn(),KE=ba();zg.exports=Un()?function(e,t,r){return FE.f(e,t,KE(1,r))}:function(e,t,r){return e[t]=r,e}});var Ln=P((PY,Vg)=>{M();var QE={}.hasOwnProperty;Vg.exports=function(e,t){return QE.call(e,t)}});var hn=P((LY,Gg)=>{M();var d0=on(),Gl=Cr(),Yg=jl(),HE=yf(),jE=Ln(),v0="prototype",xr=function(e,t,r){var a=e&xr.F,n=e&xr.G,d=e&xr.S,m=e&xr.P,b=e&xr.B,A=e&xr.W,B=n?Gl:Gl[t]||(Gl[t]={}),C=B[v0],D=n?d0:d?d0[t]:(d0[t]||{})[v0],K,j,Z;n&&(r=t);for(K in r)j=!a&&D&&D[K]!==void 0,!(j&&jE(B,K))&&(Z=j?D[K]:r[K],B[K]=n&&typeof D[K]!="function"?r[K]:b&&j?Yg(Z,d0):A&&D[K]==Z?function(qt){var Rt=function(J,Ot,ht){if(this instanceof qt){switch(arguments.length){case 0:return new qt;case 1:return new qt(J);case 2:return new qt(J,Ot)}return new qt(J,Ot,ht)}return qt.apply(this,arguments)};return Rt[v0]=qt[v0],Rt}(Z):m&&typeof Z=="function"?Yg(Function.call,Z):Z,m&&((B.virtual||(B.virtual={}))[K]=Z,e&xr.R&&C&&!C[K]&&HE(C,K,Z)))};xr.F=1;xr.G=2;xr.S=4;xr.P=8;xr.B=16;xr.W=32;xr.U=64;xr.R=128;Gg.exports=xr});var $l=P((FY,$g)=>{M();$g.exports=yf()});var xf=P((QY,Zg)=>{M();Zg.exports={}});var p0=P((jY,Wg)=>{M();var zE={}.toString;Wg.exports=function(e){return zE.call(e).slice(8,-1)}});var Zl=P((VY,Jg)=>{M();var VE=p0();Jg.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return VE(e)=="String"?e.split(""):Object(e)}});var Nn=P((GY,Xg)=>{M();var YE=Zl(),GE=u0();Xg.exports=function(e){return YE(GE(e))}});var Wl=P((ZY,tm)=>{M();var $E=h0(),ZE=Math.min;tm.exports=function(e){return e>0?ZE($E(e),9007199254740991):0}});var rm=P((JY,em)=>{M();var WE=h0(),JE=Math.max,XE=Math.min;em.exports=function(e,t){return e=WE(e),e<0?JE(e+t,0):XE(e,t)}});var nm=P((tG,im)=>{M();var tS=Nn(),eS=Wl(),rS=rm();im.exports=function(e){return function(t,r,a){var n=tS(t),d=eS(n.length),m=rS(a,d),b;if(e&&r!=r){for(;d>m;)if(b=n[m++],b!=b)return!0}else for(;d>m;m++)if((e||m in n)&&n[m]===r)return e||m||0;return!e&&-1}}});var g0=P((rG,sm)=>{M();var iS=Cr(),fm=on(),am="__core-js_shared__",om=fm[am]||(fm[am]={});(sm.exports=function(e,t){return om[e]||(om[e]=t!==void 0?t:{})})("versions",[]).push({version:iS.version,mode:Io()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var Eo=P((nG,hm)=>{M();var nS=0,fS=Math.random();hm.exports=function(e){return"Symbol(".concat(e===void 0?"":e,")_",(++nS+fS).toString(36))}});var m0=P((aG,lm)=>{M();var um=g0()("keys"),aS=Eo();lm.exports=function(e){return um[e]||(um[e]=aS(e))}});var Jl=P((sG,dm)=>{M();var cm=Ln(),oS=Nn(),sS=nm()(!1),hS=m0()("IE_PROTO");dm.exports=function(e,t){var r=oS(e),a=0,n=[],d;for(d in r)d!=hS&&cm(r,d)&&n.push(d);for(;t.length>a;)cm(r,d=t[a++])&&(~sS(n,d)||n.push(d));return n}});var b0=P((uG,vm)=>{M();vm.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var wf=P((cG,pm)=>{M();var uS=Jl(),lS=b0();pm.exports=Object.keys||function(t){return uS(t,lS)}});var mm=P((vG,gm)=>{M();var cS=sn(),dS=mf(),vS=wf();gm.exports=Un()?Object.defineProperties:function(t,r){dS(t);for(var a=vS(r),n=a.length,d=0,m;n>d;)cS.f(t,m=a[d++],r[m]);return t}});var xm=P((gG,ym)=>{M();var bm=on().document;ym.exports=bm&&bm.documentElement});var ec=P((bG,Mm)=>{M();var pS=mf(),gS=mm(),wm=b0(),mS=m0()("IE_PROTO"),Xl=function(){},tc="prototype",y0=function(){var e=Vl()("iframe"),t=wm.length,r="<",a=">",n;for(e.style.display="none",xm().appendChild(e),e.src="javascript:",n=e.contentWindow.document,n.open(),n.write(r+"script"+a+"document.F=Object"+r+"/script"+a),n.close(),y0=n.F;t--;)delete y0[tc][wm[t]];return y0()};Mm.exports=Object.create||function(t,r){var a;return t!==null?(Xl[tc]=pS(t),a=new Xl,Xl[tc]=null,a[mS]=t):a=y0(),r===void 0?a:gS(a,r)}});var Jr=P((xG,_m)=>{M();var rc=g0()("wks"),bS=Eo(),ic=on().Symbol,Am=typeof ic=="function",yS=_m.exports=function(e){return rc[e]||(rc[e]=Am&&ic[e]||(Am?ic:bS)("Symbol."+e))};yS.store=rc});var x0=P((MG,Em)=>{M();var xS=sn().f,wS=Ln(),Im=Jr()("toStringTag");Em.exports=function(e,t,r){e&&!wS(e=r?e:e.prototype,Im)&&xS(e,Im,{configurable:!0,value:t})}});var Cm=P((_G,Bm)=>{"use strict";M();var MS=ec(),AS=ba(),_S=x0(),Sm={};yf()(Sm,Jr()("iterator"),function(){return this});Bm.exports=function(e,t,r){e.prototype=MS(Sm,{next:AS(1,r)}),_S(e,t+" Iterator")}});var So=P((EG,qm)=>{M();var IS=u0();qm.exports=function(e){return Object(IS(e))}});var Om=P((BG,Tm)=>{M();var ES=Ln(),SS=So(),Rm=m0()("IE_PROTO"),BS=Object.prototype;Tm.exports=Object.getPrototypeOf||function(e){return e=SS(e),ES(e,Rm)?e[Rm]:typeof e.constructor=="function"&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?BS:null}});var ac=P((qG,Nm)=>{"use strict";M();var Dm=Io(),nc=hn(),CS=$l(),km=yf(),Pm=xf(),qS=Cm(),RS=x0(),TS=Om(),Bo=Jr()("iterator"),fc=!([].keys&&"next"in[].keys()),OS="@@iterator",Um="keys",w0="values",Lm=function(){return this};Nm.exports=function(e,t,r,a,n,d,m){qS(r,t,a);var b=function(ht){if(!fc&&ht in D)return D[ht];switch(ht){case Um:return function(){return new r(this,ht)};case w0:return function(){return new r(this,ht)}}return function(){return new r(this,ht)}},A=t+" Iterator",B=n==w0,C=!1,D=e.prototype,K=D[Bo]||D[OS]||n&&D[n],j=K||b(n),Z=n?B?b("entries"):j:void 0,qt=t=="Array"&&D.entries||K,Rt,J,Ot;if(qt&&(Ot=TS(qt.call(new e)),Ot!==Object.prototype&&Ot.next&&(RS(Ot,A,!0),!Dm&&typeof Ot[Bo]!="function"&&km(Ot,Bo,Lm))),B&&K&&K.name!==w0&&(C=!0,j=function(){return K.call(this)}),(!Dm||m)&&(fc||C||!D[Bo])&&km(D,Bo,j),Pm[t]=j,Pm[A]=Lm,n)if(Rt={values:B?j:b(w0),keys:d?j:b(Um),entries:Z},m)for(J in Rt)J in D||CS(D,J,Rt[J]);else nc(nc.P+nc.F*(fc||C),t,Rt);return Rt}});var Co=P(()=>{"use strict";M();var DS=Sg()(!0);ac()(String,"String",function(e){this._t=String(e),this._i=0},function(){var e=this._t,t=this._i,r;return t>=e.length?{value:void 0,done:!0}:(r=DS(e,t),this._i+=r.length,{value:r,done:!1})})});var Km=P((kG,Fm)=>{M();Fm.exports=function(){}});var Hm=P((UG,Qm)=>{M();Qm.exports=function(e,t){return{value:t,done:!!e}}});var Vm=P((NG,zm)=>{"use strict";M();var oc=Km(),M0=Hm(),jm=xf(),kS=Nn();zm.exports=ac()(Array,"Array",function(e,t){this._t=kS(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,M0(1)):t=="keys"?M0(0,r):t=="values"?M0(0,e[r]):M0(0,[r,e[r]])},"values");jm.Arguments=jm.Array;oc("keys");oc("values");oc("entries")});var E0=P(()=>{M();Vm();var PS=on(),US=yf(),Ym=xf(),Gm=Jr()("toStringTag"),$m="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(A0=0;A0<$m.length;A0++)_0=$m[A0],sc=PS[_0],I0=sc&&sc.prototype,I0&&!I0[Gm]&&US(I0,Gm,_0),Ym[_0]=Ym.Array;var _0,sc,I0,A0});var S0=P(Zm=>{M();Zm.f=Jr()});var Jm=P((VG,Wm)=>{M();Co();E0();Wm.exports=S0().f("iterator")});var tb=P((GG,Xm)=>{M();Xm.exports={default:Jm(),__esModule:!0}});var rb=P((ZG,eb)=>{M();var Mf=Eo()("meta"),LS=gf(),hc=Ln(),NS=sn().f,FS=0,B0=Object.isExtensible||function(){return!0},KS=!bf()(function(){return B0(Object.preventExtensions({}))}),uc=function(e){NS(e,Mf,{value:{i:"O"+ ++FS,w:{}}})},QS=function(e,t){if(!LS(e))return typeof e=="symbol"?e:(typeof e=="string"?"S":"P")+e;if(!hc(e,Mf)){if(!B0(e))return"F";if(!t)return"E";uc(e)}return e[Mf].i},HS=function(e,t){if(!hc(e,Mf)){if(!B0(e))return!0;if(!t)return!1;uc(e)}return e[Mf].w},jS=function(e){return KS&&zS.NEED&&B0(e)&&!hc(e,Mf)&&uc(e),e},zS=eb.exports={KEY:Mf,NEED:!1,fastKey:QS,getWeak:HS,onFreeze:jS}});var C0=P((JG,nb)=>{M();var VS=on(),ib=Cr(),YS=Io(),GS=S0(),$S=sn().f;nb.exports=function(e){var t=ib.Symbol||(ib.Symbol=YS?{}:VS.Symbol||{});e.charAt(0)!="_"&&!(e in t)&&$S(t,e,{value:GS.f(e)})}});var q0=P(fb=>{M();fb.f=Object.getOwnPropertySymbols});var ya=P(ab=>{M();ab.f={}.propertyIsEnumerable});var sb=P((n$,ob)=>{M();var ZS=wf(),WS=q0(),JS=ya();ob.exports=function(e){var t=ZS(e),r=WS.f;if(r)for(var a=r(e),n=JS.f,d=0,m;a.length>d;)n.call(e,m=a[d++])&&t.push(m);return t}});var ub=P((a$,hb)=>{M();var XS=p0();hb.exports=Array.isArray||function(t){return XS(t)=="Array"}});var lc=P(lb=>{M();var tB=Jl(),eB=b0().concat("length","prototype");lb.f=Object.getOwnPropertyNames||function(t){return tB(t,eB)}});var pb=P((u$,vb)=>{M();var rB=Nn(),cb=lc().f,iB={}.toString,db=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],nB=function(e){try{return cb(e)}catch{return db.slice()}};vb.exports.f=function(t){return db&&iB.call(t)=="[object Window]"?nB(t):cb(rB(t))}});var bb=P(mb=>{M();var fB=ya(),aB=ba(),oB=Nn(),sB=c0(),hB=Ln(),uB=Yl(),gb=Object.getOwnPropertyDescriptor;mb.f=Un()?gb:function(t,r){if(t=oB(t),r=sB(r,!0),uB)try{return gb(t,r)}catch{}if(hB(t,r))return aB(!fB.f.call(t,r),t[r])}});var Ob=P(()=>{"use strict";M();var O0=on(),sr=Ln(),mc=Un(),Qr=hn(),yb=$l(),lB=rb().KEY,Ab=bf(),Ac=g0(),_c=x0(),cB=Eo(),To=Jr(),dB=S0(),vB=C0(),pB=sb(),gB=ub(),bc=mf(),mB=gf(),D0=Nn(),Ic=c0(),yc=ba(),Ro=ec(),_b=pb(),Ib=bb(),Eb=sn(),bB=wf(),Sb=Ib.f,Af=Eb.f,Bb=_b.f,kr=O0.Symbol,T0=O0.JSON,R0=T0&&T0.stringify,Fn="prototype",Dr=To("_hidden"),xb=To("toPrimitive"),yB={}.propertyIsEnumerable,qo=Ac("symbol-registry"),un=Ac("symbols"),Oo=Ac("op-symbols"),Xr=Object[Fn],xa=typeof kr=="function",cc=O0.QObject,xc=!cc||!cc[Fn]||!cc[Fn].findChild,wc=mc&&Ab(function(){return Ro(Af({},"a",{get:function(){return Af(this,"a",{value:7}).a}})).a!=7})?function(e,t,r){var a=Sb(Xr,t);a&&delete Xr[t],Af(e,t,r),a&&e!==Xr&&Af(Xr,t,a)}:Af,wb=function(e){var t=un[e]=Ro(kr[Fn]);return t._k=e,t},Mc=xa&&typeof kr.iterator=="symbol"?function(e){return typeof e=="symbol"}:function(e){return e instanceof kr},k0=function(t,r,a){return t===Xr&&k0(Oo,r,a),bc(t),r=Ic(r,!0),bc(a),sr(un,r)?(a.enumerable?(sr(t,Dr)&&t[Dr][r]&&(t[Dr][r]=!1),a=Ro(a,{enumerable:yc(0,!1)})):(sr(t,Dr)||Af(t,Dr,yc(1,{})),t[Dr][r]=!0),wc(t,r,a)):Af(t,r,a)},Cb=function(t,r){bc(t);for(var a=pB(r=D0(r)),n=0,d=a.length,m;d>n;)k0(t,m=a[n++],r[m]);return t},xB=function(t,r){return r===void 0?Ro(t):Cb(Ro(t),r)},Mb=function(t){var r=yB.call(this,t=Ic(t,!0));return this===Xr&&sr(un,t)&&!sr(Oo,t)?!1:r||!sr(this,t)||!sr(un,t)||sr(this,Dr)&&this[Dr][t]?r:!0},qb=function(t,r){if(t=D0(t),r=Ic(r,!0),!(t===Xr&&sr(un,r)&&!sr(Oo,r))){var a=Sb(t,r);return a&&sr(un,r)&&!(sr(t,Dr)&&t[Dr][r])&&(a.enumerable=!0),a}},Rb=function(t){for(var r=Bb(D0(t)),a=[],n=0,d;r.length>n;)!sr(un,d=r[n++])&&d!=Dr&&d!=lB&&a.push(d);return a},Tb=function(t){for(var r=t===Xr,a=Bb(r?Oo:D0(t)),n=[],d=0,m;a.length>d;)sr(un,m=a[d++])&&(r?sr(Xr,m):!0)&&n.push(un[m]);return n};xa||(kr=function(){if(this instanceof kr)throw TypeError("Symbol is not a constructor!");var t=cB(arguments.length>0?arguments[0]:void 0),r=function(a){this===Xr&&r.call(Oo,a),sr(this,Dr)&&sr(this[Dr],t)&&(this[Dr][t]=!1),wc(this,t,yc(1,a))};return mc&&xc&&wc(Xr,t,{configurable:!0,set:r}),wb(t)},yb(kr[Fn],"toString",function(){return this._k}),Ib.f=qb,Eb.f=k0,lc().f=_b.f=Rb,ya().f=Mb,q0().f=Tb,mc&&!Io()&&yb(Xr,"propertyIsEnumerable",Mb,!0),dB.f=function(e){return wb(To(e))});Qr(Qr.G+Qr.W+Qr.F*!xa,{Symbol:kr});for(dc="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),vc=0;dc.length>vc;)To(dc[vc++]);var dc,vc;for(pc=bB(To.store),gc=0;pc.length>gc;)vB(pc[gc++]);var pc,gc;Qr(Qr.S+Qr.F*!xa,"Symbol",{for:function(e){return sr(qo,e+="")?qo[e]:qo[e]=kr(e)},keyFor:function(t){if(!Mc(t))throw TypeError(t+" is not a symbol!");for(var r in qo)if(qo[r]===t)return r},useSetter:function(){xc=!0},useSimple:function(){xc=!1}});Qr(Qr.S+Qr.F*!xa,"Object",{create:xB,defineProperty:k0,defineProperties:Cb,getOwnPropertyDescriptor:qb,getOwnPropertyNames:Rb,getOwnPropertySymbols:Tb});T0&&Qr(Qr.S+Qr.F*(!xa||Ab(function(){var e=kr();return R0([e])!="[null]"||R0({a:e})!="{}"||R0(Object(e))!="{}"})),"JSON",{stringify:function(t){for(var r=[t],a=1,n,d;arguments.length>a;)r.push(arguments[a++]);if(d=n=r[1],!(!mB(n)&&t===void 0||Mc(t)))return gB(n)||(n=function(m,b){if(typeof d=="function"&&(b=d.call(this,m,b)),!Mc(b))return b}),r[1]=n,R0.apply(T0,r)}});kr[Fn][xb]||yf()(kr[Fn],xb,kr[Fn].valueOf);_c(kr,"Symbol");_c(Math,"Math",!0);_c(O0.JSON,"JSON",!0)});var Db=P(()=>{M()});var kb=P(()=>{M();C0()("asyncIterator")});var Pb=P(()=>{M();C0()("observable")});var Lb=P((E$,Ub)=>{M();Ob();Db();kb();Pb();Ub.exports=Cr().Symbol});var Ec=P((B$,Nb)=>{M();Nb.exports={default:Lb(),__esModule:!0}});var Qb=P(Bc=>{"use strict";M();Bc.__esModule=!0;var wB=tb(),Fb=Kb(wB),MB=Ec(),Kn=Kb(MB),Sc=typeof Kn.default=="function"&&typeof Fb.default=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Kn.default=="function"&&e.constructor===Kn.default&&e!==Kn.default.prototype?"symbol":typeof e};function Kb(e){return e&&e.__esModule?e:{default:e}}Bc.default=typeof Kn.default=="function"&&Sc(Fb.default)==="symbol"?function(e){return typeof e>"u"?"undefined":Sc(e)}:function(e){return e&&typeof Kn.default=="function"&&e.constructor===Kn.default&&e!==Kn.default.prototype?"symbol":typeof e>"u"?"undefined":Sc(e)}});var zb=P((T$,jb)=>{M();var Hb=mf();jb.exports=function(e,t,r,a){try{return a?t(Hb(r)[0],r[1]):t(r)}catch(d){var n=e.return;throw n!==void 0&&Hb(n.call(e)),d}}});var Yb=P((D$,Vb)=>{M();var AB=xf(),_B=Jr()("iterator"),IB=Array.prototype;Vb.exports=function(e){return e!==void 0&&(AB.Array===e||IB[_B]===e)}});var $b=P((P$,Gb)=>{"use strict";M();var EB=sn(),SB=ba();Gb.exports=function(e,t,r){t in e?EB.f(e,t,SB(0,r)):e[t]=r}});var qc=P((L$,Zb)=>{M();var Cc=p0(),BB=Jr()("toStringTag"),CB=Cc(function(){return arguments}())=="Arguments",qB=function(e,t){try{return e[t]}catch{}};Zb.exports=function(e){var t,r,a;return e===void 0?"Undefined":e===null?"Null":typeof(r=qB(t=Object(e),BB))=="string"?r:CB?Cc(t):(a=Cc(t))=="Object"&&typeof t.callee=="function"?"Arguments":a}});var Rc=P((F$,Wb)=>{M();var RB=qc(),TB=Jr()("iterator"),OB=xf();Wb.exports=Cr().getIteratorMethod=function(e){if(e!=null)return e[TB]||e["@@iterator"]||OB[RB(e)]}});var t6=P((Q$,Xb)=>{M();var Oc=Jr()("iterator"),Jb=!1;try{Tc=[7][Oc](),Tc.return=function(){Jb=!0},Array.from(Tc,function(){throw 2})}catch{}var Tc;Xb.exports=function(e,t){if(!t&&!Jb)return!1;var r=!1;try{var a=[7],n=a[Oc]();n.next=function(){return{done:r=!0}},a[Oc]=function(){return n},e(a)}catch{}return r}});var r6=P(()=>{"use strict";M();var DB=jl(),Dc=hn(),kB=So(),PB=zb(),UB=Yb(),LB=Wl(),e6=$b(),NB=Rc();Dc(Dc.S+Dc.F*!t6()(function(e){Array.from(e)}),"Array",{from:function(t){var r=kB(t),a=typeof this=="function"?this:Array,n=arguments.length,d=n>1?arguments[1]:void 0,m=d!==void 0,b=0,A=NB(r),B,C,D,K;if(m&&(d=DB(d,n>2?arguments[2]:void 0,2)),A!=null&&!(a==Array&&UB(A)))for(K=A.call(r),C=new a;!(D=K.next()).done;b++)e6(C,b,m?PB(K,d,[D.value,b],!0):D.value);else for(B=LB(r.length),C=new a(B);B>b;b++)e6(C,b,m?d(r[b],b):r[b]);return C.length=b,C}})});var n6=P((Y$,i6)=>{M();Co();r6();i6.exports=Cr().Array.from});var kc=P(($$,f6)=>{M();f6.exports={default:n6(),__esModule:!0}});var Uc=P(Pc=>{"use strict";M();Pc.__esModule=!0;var FB=kc(),KB=QB(FB);function QB(e){return e&&e.__esModule?e:{default:e}}Pc.default=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t{"use strict";M();Object.defineProperty(Qn,"__esModule",{value:!0});Qn.flip=HB;Qn.constant=jB;Qn.on=zB;Qn.compose=VB;Qn.pipe=YB;Qn.curry=GB;function HB(e){return function(t,r){return e(r,t)}}function jB(e){return function(){return e}}function zB(e,t){return function(r,a){return e(t(r),t(a))}}function VB(){for(var e=this,t=arguments.length,r=Array(t),a=0;a-1;b--)m=r[b].call(e,m);return m}}function YB(){for(var e=this,t=arguments.length,r=Array(t),a=0;a=t?e.apply(this,a):a6(e,t,a)}}function GB(e){return a6(e,e.length,[])}});var u6=P((eZ,h6)=>{"use strict";M();var s6=wf(),$B=q0(),ZB=ya(),WB=So(),JB=Zl(),P0=Object.assign;h6.exports=!P0||bf()(function(){var e={},t={},r=Symbol(),a="abcdefghijklmnopqrst";return e[r]=7,a.split("").forEach(function(n){t[n]=n}),P0({},e)[r]!=7||Object.keys(P0({},t)).join("")!=a})?function(t,r){for(var a=WB(t),n=arguments.length,d=1,m=$B.f,b=ZB.f;n>d;)for(var A=JB(arguments[d++]),B=m?s6(A).concat(m(A)):s6(A),C=B.length,D=0,K;C>D;)b.call(A,K=B[D++])&&(a[K]=A[K]);return a}:P0});var l6=P(()=>{M();var Lc=hn();Lc(Lc.S+Lc.F,"Object",{assign:u6()})});var d6=P((aZ,c6)=>{M();l6();c6.exports=Cr().Object.assign});var p6=P((sZ,v6)=>{M();v6.exports={default:d6(),__esModule:!0}});var Fc=P(Nc=>{"use strict";M();Nc.__esModule=!0;var XB=p6(),tC=eC(XB);function eC(e){return e&&e.__esModule?e:{default:e}}Nc.default=tC.default||function(e){for(var t=1;t{M();var Kc=hn(),rC=Cr(),iC=bf();g6.exports=function(e,t){var r=(rC.Object||{})[e]||Object[e],a={};a[e]=t(r),Kc(Kc.S+Kc.F*iC(function(){r(1)}),"Object",a)}});var b6=P(()=>{M();var nC=So(),fC=wf();m6()("keys",function(){return function(t){return fC(nC(t))}})});var x6=P((mZ,y6)=>{M();b6();y6.exports=Cr().Object.keys});var Qc=P((yZ,w6)=>{M();w6.exports={default:x6(),__esModule:!0}});var A6=P((wZ,M6)=>{M();var aC=gf(),oC=Math.floor;M6.exports=function(t){return!aC(t)&&isFinite(t)&&oC(t)===t}});var I6=P(()=>{M();var _6=hn();_6(_6.S,"Number",{isInteger:A6()})});var S6=P((EZ,E6)=>{M();I6();E6.exports=Cr().Number.isInteger});var C6=P((BZ,B6)=>{M();B6.exports={default:S6(),__esModule:!0}});var jc=P(Hc=>{"use strict";M();Hc.__esModule=!0;Hc.default=function(e,t){var r={};for(var a in e)t.indexOf(a)>=0||!Object.prototype.hasOwnProperty.call(e,a)||(r[a]=e[a]);return r}});var zc=P(dr=>{"use strict";M();Object.defineProperty(dr,"__esModule",{value:!0});function _f(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Pr=_f(Uc()),rr=_f(Hl()),bi=o6(),sC=_f(Fc()),hC=_f(kc()),O6=_f(Qc()),uC=_f(C6()),lC=_f(jc()),cC=void 0,dC=function(e,t){return rr(this,cC),[].concat(Pr(t),Pr(e))}.bind(void 0),vC=bi.curry(dC),pC=void 0,gC=function(e){return rr(this,pC),Array.isArray(e)?e:[e]}.bind(void 0),mC=void 0,bC=function(e,t){return rr(this,mC),t===e.length-1}.bind(void 0),D6=bi.curry(bC),yC=void 0,xC=function(e,t){return rr(this,yC),D6(e,t)?0:t+1}.bind(void 0),wC=bi.curry(xC),k6=void 0,MC=function(e){return rr(this,k6),Math.max.apply(Math,Pr(O6(e)))+1}.bind(void 0),AC=function(e){return rr(this,k6),hC("length"in e?e:sC({},e,{length:MC(e)}))}.bind(void 0),_C=void 0,IC=function(e,t,r){return rr(this,_C),[].concat(Pr(r.slice(0,e)),Pr(t),Pr(r.slice(e+1)))}.bind(void 0),EC=bi.curry(IC),P6=void 0,SC=function(e,t){return rr(this,P6),uC(e)&&e>=t}.bind(void 0),U6=function(e){return rr(this,P6),SC(Number(e),0)}.bind(void 0),BC=void 0,CC=function(e){var t=e.length,r=lC(e,["length"]);return rr(this,BC),O6(r).every(U6)}.bind(void 0),qC=void 0,RC=function(e,t){return rr(this,qC),[].concat(Pr(e),Pr(t))}.bind(void 0),TC=bi.curry(RC),q6=void 0,OC=function(e,t,r,a){return rr(this,q6),a.reduce(function(n,d,m){return rr(this,q6),e(d,m,n)?t(n,d,m):n}.bind(this),r)}.bind(void 0),DC=bi.curry(OC),R6=void 0,kC=function(e,t,r,a){rr(this,R6);var n=r;return a.every(function(d,m){rr(this,R6);var b=e(d,m,n);return b&&(n=t(n,d,m)),b}.bind(this)),n}.bind(void 0),PC=bi.curry(kC),UC=void 0,LC=function(e,t,r){return rr(this,UC),[].concat(Pr(r.slice(0,e)),Pr(r.slice(e+t)))}.bind(void 0),NC=bi.curry(LC),T6=void 0,FC=function(e,t){return rr(this,T6),[].concat(Pr(Array(e))).map(function(){return rr(this,T6),t}.bind(this))}.bind(void 0),KC=bi.curry(FC),QC=void 0,HC=function(e,t,r){return rr(this,QC),[].concat(Pr(r.slice(0,e)),Pr(t),Pr(r.slice(e+t.length)))}.bind(void 0),jC=bi.curry(HC),zC=void 0,VC=function(e,t){return rr(this,zC),t<0?e.length-t:t}.bind(void 0),YC=bi.curry(VC);dr.append=vC;dr.convertIfNot=gC;dr.cycleNext=wC;dr.fromObject=AC;dr.insert=EC;dr.isKey=U6;dr.isLastIndex=D6;dr.isPossibleFromObject=CC;dr.prepend=TC;dr.reduceIf=DC;dr.reduceWhile=PC;dr.remove=NC;dr.repeat=KC;dr.replace=jC;dr.resolveIndex=YC});var N6=P((DZ,L6)=>{"use strict";M();L6.exports=function e(t,r){if(t===r)return!0;var a=Array.isArray(t),n=Array.isArray(r),d;if(a&&n){if(t.length!=r.length)return!1;for(d=0;d{M();var Vc=hn();Vc(Vc.S+Vc.F*!Un(),"Object",{defineProperty:sn().f})});var Q6=P((NZ,K6)=>{M();F6();var GC=Cr().Object;K6.exports=function(t,r,a){return GC.defineProperty(t,r,a)}});var j6=P((KZ,H6)=>{M();H6.exports={default:Q6(),__esModule:!0}});var z6=P(Yc=>{"use strict";M();Yc.__esModule=!0;var $C=j6(),ZC=WC($C);function WC(e){return e&&e.__esModule?e:{default:e}}Yc.default=function(e,t,r){return t in e?(0,ZC.default)(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}});var Y6=P((zZ,V6)=>{M();var JC=qc(),XC=Jr()("iterator"),tq=xf();V6.exports=Cr().isIterable=function(e){var t=Object(e);return t[XC]!==void 0||"@@iterator"in t||tq.hasOwnProperty(JC(t))}});var $6=P((YZ,G6)=>{M();E0();Co();G6.exports=Y6()});var W6=P(($Z,Z6)=>{M();Z6.exports={default:$6(),__esModule:!0}});var X6=P((WZ,J6)=>{M();var eq=mf(),rq=Rc();J6.exports=Cr().getIterator=function(e){var t=rq(e);if(typeof t!="function")throw TypeError(e+" is not iterable!");return eq(t.call(e))}});var ey=P((XZ,ty)=>{M();E0();Co();ty.exports=X6()});var iy=P((eW,ry)=>{M();ry.exports={default:ey(),__esModule:!0}});var fy=P(Gc=>{"use strict";M();Gc.__esModule=!0;var iq=W6(),nq=ny(iq),fq=iy(),aq=ny(fq);function ny(e){return e&&e.__esModule?e:{default:e}}Gc.default=function(){function e(t,r){var a=[],n=!0,d=!1,m=void 0;try{for(var b=(0,aq.default)(t),A;!(n=(A=b.next()).done)&&(a.push(A.value),!(r&&a.length===r));n=!0);}catch(B){d=!0,m=B}finally{try{!n&&b.return&&b.return()}finally{if(d)throw m}}return a}return function(t,r){if(Array.isArray(t))return t;if((0,nq.default)(Object(t)))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var oy=P((fW,ay)=>{M();var oq=wf(),sq=Nn(),hq=ya().f;ay.exports=function(e){return function(t){for(var r=sq(t),a=oq(r),n=a.length,d=0,m=[],b;n>d;)hq.call(r,b=a[d++])&&m.push(e?[b,r[b]]:r[b]);return m}}});var hy=P(()=>{M();var sy=hn(),uq=oy()(!0);sy(sy.S,"Object",{entries:function(t){return uq(t)}})});var ly=P((uW,uy)=>{M();hy();uy.exports=Cr().Object.entries});var dy=P((cW,cy)=>{M();cy.exports={default:ly(),__esModule:!0}});var qy=P(fr=>{"use strict";M();function xi(e){return e&&typeof e=="object"&&"default"in e?e.default:e}Object.defineProperty(fr,"__esModule",{value:!0});var ye=xi(Hl()),ti=Ag(),gy=xi(Qb()),Zc=zc(),lq=xi(Qc()),my=xi(Uc()),cq=xi(N6()),dq=xi(z6()),Do=xi(Fc()),vq=xi(fy()),pq=xi(dy()),gq=xi(jc()),mq=xi(Ec()),bq=void 0,yq=function(e,t){return ye(this,bq),t[e]}.bind(void 0),If=ti.curry(yq),by=void 0,xq=function(e){return ye(this,by),e!==null&&(e===void 0?"undefined":gy(e))==="object"}.bind(void 0),yy=function(e){return ye(this,by),Array.isArray(e)||xq(e)}.bind(void 0),ko=void 0,wq=function(e,t,r){return ye(this,ko),Zc.isLastIndex(t,e)?r:xy(e+1,t,r)}.bind(void 0),Mq=function(e,t,r){return ye(this,ko),"Expected to find a composite at ["+String(t.join(", "))+"]["+String(e)+"], but instead got: "+(r===void 0?"undefined":gy(r))}.bind(void 0),Aq=function(e,t,r){if(ye(this,ko),yy(r))return r;throw new Error(Mq(e,t,r))}.bind(void 0),xy=function(e,t,r){return ye(this,ko),r===void 0?void 0:wq(e,t,If(t[e],Aq(e,t,r)))}.bind(void 0),_q=function(e,t){return ye(this,ko),e.length===0?void 0:xy(0,e,t)}.bind(void 0),wy=ti.curry(_q),Iq=void 0,U0=function(e){return ye(this,Iq),Array.isArray(e)?[].concat(my(e.keys())):lq(e)}.bind(void 0),Eq=void 0,Sq=function(e,t,r){return ye(this,Eq),cq(wy(e,r),t)}.bind(void 0),Bq=ti.curry(Sq),Cq=void 0,qq=function(e,t){return ye(this,Cq),Object.prototype.hasOwnProperty.call(t,e)}.bind(void 0),Wc=ti.curry(qq),vy=void 0,Rq=function(e,t){ye(this,vy);var r=U0(e);return r.length===U0(t).length&&r.every(function(a){return ye(this,vy),Wc(a,t)&&If(a,e)===If(a,t)}.bind(this))}.bind(void 0),My=ti.curry(Rq),Tq=void 0,Ay=function(e){return ye(this,Tq),U0(e).length===0}.bind(void 0),$c=void 0,Oq=function(e,t){return ye(this,$c),pq(t).reduce(function(r,a){var n=vq(a,2),d=n[0],m=n[1];return ye(this,$c),Do({},r,dq({},d,e(m,d,t)))}.bind(this),{})}.bind(void 0),Dq=function(e,t){return ye(this,$c),Array.isArray(t)?t.map(e):Oq(e,t)}.bind(void 0),kq=ti.curry(Dq),_y=void 0,Pq=function(e,t){t[e];var r=gq(t,[e]);return ye(this,_y),r}.bind(void 0),Uq=function(e,t){return ye(this,_y),Array.isArray(t)?Zc.remove(e,1,t):Pq(e,t)}.bind(void 0),Iy=ti.curry(Uq),Lq=void 0,L0=function(e){return ye(this,Lq),Array.isArray(e)?[].concat(my(e)):Do({},e)}.bind(void 0),yi=void 0,Nq=function(e){ye(this,yi);var t=L0(e);return{origin:t,current:t,previous:void 0}}.bind(void 0),Ey=function(e,t,r){return ye(this,yi),r[e]=t,If(e,r)}.bind(void 0),Fq=function(e,t,r,a){return ye(this,yi),Do({},a,{current:Ey(e[t],r,a.current),previous:a.current})}.bind(void 0),Kq=function(e,t,r){ye(this,yi);var a=Iy(e[t],r.current);return t===0?Do({},r,{current:a,origin:a}):Do({},r,{previous:Ey(e[t-1],a,r.previous)})}.bind(void 0),Sy=mq("composite.updateIn.removeAction"),Qq=function(e,t,r,a){return ye(this,yi),r===Sy?Kq(e,t,a):Fq(e,t,r,a)}.bind(void 0),Hq=function(e){return ye(this,yi),typeof e=="number"?[]:{}}.bind(void 0),jq=function(e,t,r){return ye(this,yi),Wc(e,r)?L0(If(e,r)):Hq(t)}.bind(void 0),zq=function(e,t,r,a){return ye(this,yi),Zc.isLastIndex(e,r)?t(If(e[r],a)):jq(e[r],e[r+1],a)}.bind(void 0),Vq=function(e,t){return ye(this,yi),function(r,a,n){return ye(this,yi),Qq(e,n,zq(e,t,n,r.current),r)}.bind(this)}.bind(void 0),Yq=function(e,t,r){return ye(this,yi),e.length===0?r:e.reduce(Vq(e,t),Nq(r)).origin}.bind(void 0),Po=ti.curry(Yq);Po.remove=Sy;var By=void 0,Gq=function(){return ye(this,By),Po.remove}.bind(void 0),$q=function(e,t){return ye(this,By),Po(e,Gq,t)}.bind(void 0),Zq=ti.curry($q),Wq=void 0,Jq=function(e,t,r){ye(this,Wq);var a=L0(r);return a[e]=t,a}.bind(void 0),Xq=ti.curry(Jq),py=void 0,tR=function(e,t,r){return ye(this,py),Po(e,function(){return ye(this,py),t}.bind(this),r)}.bind(void 0),eR=ti.curry(tR),Cy=void 0,rR=function(e,t){return ye(this,Cy),Boolean(Number(e)^Number(t))}.bind(void 0),iR=function(e,t){return ye(this,Cy),e===t||!rR(Array.isArray(e),Array.isArray(t))&&My(e,t)}.bind(void 0),nR=ti.curry(iR),fR=void 0,aR=function(e){return ye(this,fR),Ay(e)?void 0:e}.bind(void 0);fr.get=If,fr.getIn=wy,fr.getKeys=U0,fr.hasIn=Bq,fr.hasKey=Wc,fr.haveSameProps=My,fr.is=yy,fr.isEmpty=Ay,fr.map=kq,fr.remove=Iy,fr.removeIn=Zq,fr.set=Xq,fr.setIn=eR,fr.shallowCopy=L0,fr.shallowEqual=nR,fr.toUndefinedIfEmpty=aR,fr.updateIn=Po});var Ty=P((gW,Ry)=>{M();Ry.exports=function(e,t){return{value:t,done:!!e}}});var N0=P((bW,Oy)=>{M();Oy.exports={}});var F0=P((xW,Dy)=>{M();var oR=ql(),sR=ga();Dy.exports=function(e){return oR(sR(e))}});var Py=P((MW,ky)=>{M();var hR=o0(),uR=Math.max,lR=Math.min;ky.exports=function(e,t){return e=hR(e),e<0?uR(e+t,0):lR(e,t)}});var K0=P((_W,Uy)=>{M();var cR=F0(),dR=s0(),vR=Py();Uy.exports=function(e){return function(t,r,a){var n=cR(t),d=dR(n.length),m=vR(a,d),b;if(e&&r!=r){for(;d>m;)if(b=n[m++],b!=b)return!0}else for(;d>m;m++)if((e||m in n)&&n[m]===r)return e||m||0;return!e&&-1}}});var Q0=P((EW,Ny)=>{M();var Ly=Ol()("keys"),pR=n0();Ny.exports=function(e){return Ly[e]||(Ly[e]=pR(e))}});var Qy=P((BW,Ky)=>{M();var Fy=wo(),gR=F0(),mR=K0()(!1),bR=Q0()("IE_PROTO");Ky.exports=function(e,t){var r=gR(e),a=0,n=[],d;for(d in r)d!=bR&&Fy(r,d)&&n.push(d);for(;t.length>a;)Fy(r,d=t[a++])&&(~mR(n,d)||n.push(d));return n}});var Jc=P((qW,Hy)=>{M();Hy.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var Xc=P((TW,jy)=>{M();var yR=Qy(),xR=Jc();jy.exports=Object.keys||function(t){return yR(t,xR)}});var Vy=P((DW,zy)=>{M();var wR=xo(),MR=da(),AR=Xc();zy.exports=va()?Object.defineProperties:function(t,r){MR(t);for(var a=AR(r),n=a.length,d=0,m;n>d;)wR.f(t,m=a[d++],r[m]);return t}});var $y=P((PW,Gy)=>{M();var Yy=Dn().document;Gy.exports=Yy&&Yy.documentElement});var Jy=P((LW,Wy)=>{M();var _R=da(),IR=Vy(),Zy=Jc(),ER=Q0()("IE_PROTO"),td=function(){},ed="prototype",H0=function(){var e=Ml()("iframe"),t=Zy.length,r="<",a=">",n;for(e.style.display="none",$y().appendChild(e),e.src="javascript:",n=e.contentWindow.document,n.open(),n.write(r+"script"+a+"document.F=Object"+r+"/script"+a),n.close(),H0=n.F;t--;)delete H0[ed][Zy[t]];return H0()};Wy.exports=Object.create||function(t,r){var a;return t!==null?(td[ed]=_R(t),a=new td,td[ed]=null,a[ER]=t):a=H0(),r===void 0?a:IR(a,r)}});var rd=P((FW,t3)=>{M();var SR=xo().f,BR=wo(),Xy=mi()("toStringTag");t3.exports=function(e,t,r){e&&!BR(e=r?e:e.prototype,Xy)&&SR(e,Xy,{configurable:!0,value:t})}});var i3=P((QW,r3)=>{"use strict";M();var CR=Jy(),qR=Al(),RR=rd(),e3={};kn()(e3,mi()("iterator"),function(){return this});r3.exports=function(e,t,r){e.prototype=CR(e3,{next:qR(1,r)}),RR(e,t+" Iterator")}});var a3=P((jW,f3)=>{M();var TR=wo(),OR=Rl(),n3=Q0()("IE_PROTO"),DR=Object.prototype;f3.exports=Object.getPrototypeOf||function(e){return e=OR(e),TR(e,n3)?e[n3]:typeof e.constructor=="function"&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?DR:null}});var d3=P((VW,c3)=>{"use strict";M();var o3=Tl(),id=Wr(),kR=Mo(),s3=kn(),h3=N0(),PR=i3(),UR=rd(),LR=a3(),Uo=mi()("iterator"),nd=!([].keys&&"next"in[].keys()),NR="@@iterator",u3="keys",j0="values",l3=function(){return this};c3.exports=function(e,t,r,a,n,d,m){PR(r,t,a);var b=function(ht){if(!nd&&ht in D)return D[ht];switch(ht){case u3:return function(){return new r(this,ht)};case j0:return function(){return new r(this,ht)}}return function(){return new r(this,ht)}},A=t+" Iterator",B=n==j0,C=!1,D=e.prototype,K=D[Uo]||D[NR]||n&&D[n],j=K||b(n),Z=n?B?b("entries"):j:void 0,qt=t=="Array"&&D.entries||K,Rt,J,Ot;if(qt&&(Ot=LR(qt.call(new e)),Ot!==Object.prototype&&Ot.next&&(UR(Ot,A,!0),!o3&&typeof Ot[Uo]!="function"&&s3(Ot,Uo,l3))),B&&K&&K.name!==j0&&(C=!0,j=function(){return K.call(this)}),(!o3||m)&&(nd||C||!D[Uo])&&s3(D,Uo,j),h3[t]=j,h3[A]=l3,n)if(Rt={values:B?j:b(j0),keys:d?j:b(u3),entries:Z},m)for(J in Rt)J in D||kR(D,J,Rt[J]);else id(id.P+id.F*(nd||C),t,Rt);return Rt}});var g3=P((GW,p3)=>{"use strict";M();var fd=_o(),z0=Ty(),v3=N0(),FR=F0();p3.exports=d3()(Array,"Array",function(e,t){this._t=FR(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,z0(1)):t=="keys"?z0(0,r):t=="values"?z0(0,e[r]):z0(0,[r,e[r]])},"values");v3.Arguments=v3.Array;fd("keys");fd("values");fd("entries")});var E3=P(()=>{M();var m3=g3(),KR=Xc(),QR=Mo(),HR=Dn(),b3=kn(),_3=N0(),I3=mi(),y3=I3("iterator"),x3=I3("toStringTag"),w3=_3.Array,M3={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(ad=KR(M3),V0=0;V0{"use strict";M();var jR=yo();S3.exports=function(e,t){return!!e&&jR(function(){t?e.call(null,function(){},1):e.call(null)})}});var B3=P(()=>{"use strict";M();var sd=Wr(),zR=ma()(0),VR=Fo()([].forEach,!0);sd(sd.P+sd.F*!VR,"Array",{forEach:function(t){return zR(this,t,arguments[1])}})});var q3=P((nJ,C3)=>{M();function YR(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t{M();function GR(e){if(Symbol.iterator in Object(e)||Object.prototype.toString.call(e)==="[object Arguments]")return Array.from(e)}R3.exports=GR});var D3=P((sJ,O3)=>{M();function $R(){throw new TypeError("Invalid attempt to spread non-iterable instance")}O3.exports=$R});var P3=P((uJ,k3)=>{M();var ZR=q3(),WR=T3(),JR=D3();function XR(e){return ZR(e)||WR(e)||JR()}k3.exports=XR});var U3=P(()=>{"use strict";M();var hd=Wr(),tT=ma()(1);hd(hd.P+hd.F*!Fo()([].map,!0),"Array",{map:function(t){return tT(this,t,arguments[1])}})});var N3=P((pJ,L3)=>{M();var eT=o0(),rT=ga();L3.exports=function(e){return function(t,r){var a=String(rT(t)),n=eT(r),d=a.length,m,b;return n<0||n>=d?e?"":void 0:(m=a.charCodeAt(n),m<55296||m>56319||n+1===d||(b=a.charCodeAt(n+1))<56320||b>57343?e?a.charAt(n):m:e?a.slice(n,n+2):(m-55296<<10)+(b-56320)+65536)}}});var K3=P((mJ,F3)=>{"use strict";M();var iT=N3()(!0);F3.exports=function(e,t,r){return t+(r?iT(e,t).length:1)}});var H3=P((yJ,Q3)=>{M();var ud=Ao(),nT=mi()("toStringTag"),fT=ud(function(){return arguments}())=="Arguments",aT=function(e,t){try{return e[t]}catch{}};Q3.exports=function(e){var t,r,a;return e===void 0?"Undefined":e===null?"Null":typeof(r=aT(t=Object(e),nT))=="string"?r:fT?ud(t):(a=ud(t))=="Object"&&typeof t.callee=="function"?"Arguments":a}});var z3=P((wJ,j3)=>{"use strict";M();var oT=H3(),sT=RegExp.prototype.exec;j3.exports=function(e,t){var r=e.exec;if(typeof r=="function"){var a=r.call(e,t);if(typeof a!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return a}if(oT(e)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return sT.call(e,t)}});var Y3=P((AJ,V3)=>{"use strict";M();var hT=da();V3.exports=function(){var e=hT(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}});var dd=P((IJ,$3)=>{"use strict";M();var uT=Y3(),Y0=RegExp.prototype.exec,lT=String.prototype.replace,G3=Y0,G0="lastIndex",ld=function(){var e=/a/,t=/b*/g;return Y0.call(e,"a"),Y0.call(t,"a"),e[G0]!==0||t[G0]!==0}(),cd=/()??/.exec("")[1]!==void 0,cT=ld||cd;cT&&(G3=function(t){var r=this,a,n,d,m;return cd&&(n=new RegExp("^"+r.source+"$(?!\\s)",uT.call(r))),ld&&(a=r[G0]),d=Y0.call(r,t),ld&&d&&(r[G0]=r.global?d.index+d[0].length:a),cd&&d&&d.length>1&&lT.call(d[0],n,function(){for(m=1;m{"use strict";M();var Z3=dd();Wr()({target:"RegExp",proto:!0,forced:Z3!==/./.exec},{exec:Z3})});var t4=P((qJ,X3)=>{"use strict";M();W3();var dT=Mo(),vT=kn(),vd=yo(),pT=ga(),J3=mi(),gT=dd(),mT=J3("species"),bT=!vd(function(){var e=/./;return e.exec=function(){var t=[];return t.groups={a:"7"},t},"".replace(e,"$")!=="7"}),yT=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return r.length===2&&r[0]==="a"&&r[1]==="b"}();X3.exports=function(e,t,r){var a=J3(e),n=!vd(function(){var C={};return C[a]=function(){return 7},""[e](C)!=7}),d=n?!vd(function(){var C=!1,D=/a/;return D.exec=function(){return C=!0,null},e==="split"&&(D.constructor={},D.constructor[mT]=function(){return D}),D[a](""),!C}):void 0;if(!n||!d||e==="replace"&&!bT||e==="split"&&!yT){var m=/./[a],b=r(pT,a,""[e],function(D,K,j,Z,qt){return K.exec===gT?n&&!qt?{done:!0,value:m.call(K,j,Z)}:{done:!0,value:D.call(j,K,Z)}:{done:!1}}),A=b[0],B=b[1];dT(String.prototype,e,A),vT(RegExp.prototype,a,t==2?function(C,D){return B.call(C,this,D)}:function(C){return B.call(C,this)})}}});var r4=P(()=>{"use strict";M();var xT=da(),wT=s0(),MT=K3(),e4=z3();t4()("match",1,function(e,t,r,a){return[function(d){var m=e(this),b=d?.[t];return b!==void 0?b.call(d,m):new RegExp(d)[t](String(m))},function(n){var d=a(r,n,this);if(d.done)return d.value;var m=xT(n),b=String(this);if(!m.global)return e4(m,b);var A=m.unicode;m.lastIndex=0;for(var B=[],C=0,D;(D=e4(m,b))!==null;){var K=String(D[0]);B[C]=K,K===""&&(m.lastIndex=MT(b,wT(m.lastIndex),A)),C++}return C===0?null:B}]})});var i4=P(()=>{"use strict";M();var pd=Wr(),AT=ma()(3);pd(pd.P+pd.F*!Fo()([].some,!0),"Array",{some:function(t){return AT(this,t,arguments[1])}})});var f4=P((LJ,n4)=>{M();n4.exports=function(e,t,r){var a=r===void 0;switch(t.length){case 0:return a?e():e.call(r);case 1:return a?e(t[0]):e.call(r,t[0]);case 2:return a?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return a?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return a?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}});var s4=P((FJ,o4)=>{"use strict";M();var _T=Sl(),IT=pf(),ET=f4(),a4=[].slice,gd={},ST=function(e,t,r){if(!(t in gd)){for(var a=[],n=0;n{M();var h4=Wr();h4(h4.P,"Function",{bind:s4()})});var bd=P((zJ,u4)=>{M();function BT(e,t){if(e!==t)throw new TypeError("Cannot instantiate an arrow function")}u4.exports=BT});var d4=P(Ef=>{"use strict";M();Object.defineProperty(Ef,"__esModule",{value:!0});function CT(e){return e&&typeof e=="object"&&"default"in e?e.default:e}U3();r4();i4();md();var Ki=CT(bd()),yd=void 0,qT=function(t){var r=this;return Ki(this,yd),t.map(function(a){var n=a.column,d=a.line;return Ki(this,r),"".concat(d,":").concat(n)}.bind(this)).join("; ")}.bind(void 0),RT=function(t){var r=t.message,a=t.locations;return Ki(this,yd),r+(a?" (".concat(qT(a),")"):"")}.bind(void 0),TT=function(t){return Ki(this,yd),t.map(RT).join(` +`)}.bind(void 0),l4=void 0,OT=/^\s*(query|mutation|subscription|\{)/,DT=function(t){return Ki(this,l4),t==="{"?"query":t}.bind(void 0),kT=function(t){Ki(this,l4);var r=t.match(OT);if(!r)throw new TypeError(`Invalid operation: +`.concat(t));return DT(r[1])}.bind(void 0),c4=void 0,PT=function(t){return Ki(this,c4),t.kind==="OperationDefinition"&&t.operation==="subscription"}.bind(void 0),UT=function(t){return Ki(this,c4),t.definitions.some(PT)}.bind(void 0),LT=void 0,NT=function(t){var r=t.query,a=t.variables;return Ki(this,LT),a?{operation:r,variables:a}:{operation:r}}.bind(void 0),FT=void 0,KT=function(t){var r=t.operation,a=t.variables;return Ki(this,FT),a?{query:r,variables:a}:{query:r}}.bind(void 0);Ef.errorsToString=TT;Ef.getOperationType=kT;Ef.hasSubscription=UT;Ef.requestFromCompat=NT;Ef.requestToCompat=KT});var m4=P(Cd=>{"use strict";M();Object.defineProperty(Cd,"__esModule",{value:!0});var Ad=function(){function e(t,r){for(var a=0;a1,m=!1,b=arguments[1],A=b;return new n(function(B){return a.subscribe({next:function(C){var D=!m;if(m=!0,!D||d)try{A=r(A,C)}catch(K){return B.error(K)}else A=C},error:function(C){B.error(C)},complete:function(){if(!m&&!d)return B.error(new TypeError("Cannot reduce an empty sequence"));B.next(A),B.complete()}})})}},{key:"concat",value:function(){for(var r=this,a=arguments.length,n=Array(a),d=0;d=0&&m.splice(D,1),A()}});m.push(C)},error:function(B){d.error(B)},complete:function(){A()}});function A(){b.closed&&m.length===0&&d.complete()}return function(){m.forEach(function(B){return B.unsubscribe()}),b.unsubscribe()}})}},{key:wd,value:function(){return this}}],[{key:"from",value:function(r){var a=typeof this=="function"?this:e;if(r==null)throw new TypeError(r+" is not an object");var n=Z0(r,wd);if(n){var d=n.call(r);if(Object(d)!==d)throw new TypeError(d+" is not an object");return HT(d)&&d.constructor===a?d:new a(function(m){return d.subscribe(m)})}if(Ed("iterator")&&(n=Z0(r,QT),n))return new a(function(m){$0(function(){if(!m.closed){var b=!0,A=!1,B=void 0;try{for(var C=n.call(r)[Symbol.iterator](),D;!(b=(D=C.next()).done);b=!0){var K=D.value;if(m.next(K),m.closed)return}}catch(j){A=!0,B=j}finally{try{!b&&C.return&&C.return()}finally{if(A)throw B}}m.complete()}})});if(Array.isArray(r))return new a(function(m){$0(function(){if(!m.closed){for(var b=0;b{M();b4.exports=m4().Observable});var w4=P(()=>{"use strict";M();var x4=Wr(),YT=K0()(!0);x4(x4.P,"Array",{includes:function(t){return YT(this,t,arguments.length>1?arguments[1]:void 0)}});_o()("includes")});var A4=P((rX,M4)=>{M();var GT=pf(),$T=Ao(),ZT=mi()("match");M4.exports=function(e){var t;return GT(e)&&((t=e[ZT])!==void 0?!!t:$T(e)=="RegExp")}});var I4=P((nX,_4)=>{M();var WT=A4(),JT=ga();_4.exports=function(e,t,r){if(WT(t))throw TypeError("String#"+r+" doesn't accept regex!");return String(JT(e))}});var S4=P((aX,E4)=>{M();var XT=mi()("match");E4.exports=function(e){var t=/./;try{"/./"[e](t)}catch{try{return t[XT]=!1,!"/./"[e](t)}catch{}}return!0}});var C4=P(()=>{"use strict";M();var qd=Wr(),tO=I4(),B4="includes";qd(qd.P+qd.F*S4()(B4),"String",{includes:function(t){return!!~tO(this,t,B4).indexOf(t,arguments.length>1?arguments[1]:void 0)}})});var R4=P((lX,q4)=>{M();function eO(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}q4.exports=eO});var O4=P((dX,T4)=>{M();var rO=R4();function iO(e){for(var t=1;t{M();function nO(e,t){if(e==null)return{};var r={},a=Object.keys(e),n,d;for(d=0;d=0)&&(r[n]=e[n]);return r}D4.exports=nO});var U4=P((mX,P4)=>{M();var fO=k4();function aO(e,t){if(e==null)return{};var r=fO(e,t),a,n;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&(!Object.prototype.propertyIsEnumerable.call(e,a)||(r[a]=e[a]))}return r}P4.exports=aO});var N4=P(()=>{"use strict";M();var Rd=Wr(),oO=K0()(!1),Td=[].indexOf,L4=!!Td&&1/[1].indexOf(1,-0)<0;Rd(Rd.P+Rd.F*(L4||!Fo()(Td)),"Array",{indexOf:function(t){return L4?Td.apply(this,arguments)||0:oO(this,t,arguments[1])}})});var b8=P(vn=>{"use strict";M();Object.defineProperty(vn,"__esModule",{value:!0});function Ho(e){return e&&typeof e=="object"&&"default"in e?e.default:e}gg();bg();wg();var Od=qy();xl();E3();B3();var Qo=Ho(P3()),Dd=d4(),sO=Ho(y4());w4();C4();var wi=Ho(O4()),W0=Ho(U4());N4();var J0=zc();md();var Pt=Ho(bd()),hO=void 0,kd=function(t){var r=t.activeObservers,a=t.canceledObservers,n=W0(t,["activeObservers","canceledObservers"]);return Pt(this,hO),wi({},n,{isActive:!1,activeObservers:[],canceledObservers:Qo(r).concat(Qo(a))})}.bind(void 0),Pd=void 0,uO=function(t,r){var a=this;return Pt(this,Pd),function(n){return Pt(this,a),n[t]&&n[t](r)}.bind(this)}.bind(void 0),lO=function(t){var r=t.name;return Pt(this,Pd),"on".concat(r)}.bind(void 0),Ud=function(t,r){return Pt(this,Pd),t.forEach(uO(lO(r),r.payload))}.bind(void 0),cO=void 0,H4=function(t,r){return Pt(this,cO),Ud(t.canceledObservers,r),t}.bind(void 0),jo={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},zo=void 0,dO=function(t){return Pt(this,zo),{payload:t,name:jo.start}}.bind(void 0),vO=function(t){return Pt(this,zo),{payload:t,name:jo.result}}.bind(void 0),X0=function(t){return Pt(this,zo),{payload:t,name:jo.error}}.bind(void 0),pO=function(){return Pt(this,zo),{name:jo.cancel,payload:void 0}}.bind(void 0),gO=function(t){return Pt(this,zo),{payload:t,name:jo.abort}}.bind(void 0),j4=void 0,mO=function(t){return Pt(this,j4),wi({},t,{canceledObservers:[]})}.bind(void 0),Vo=function(t){return Pt(this,j4),t.canceledObservers.length>0?mO(H4(t,pO())):t}.bind(void 0),bO=void 0,z4=function(t,r,a){return Pt(this,bO),t.findIndex(Od.hasIn([r],a))}.bind(void 0),yO=void 0,Ld=function(t){var r=this;return Pt(this,yO),function(a){return Pt(this,r),J0.replace(z4(a,"request",t.request),[t],a)}.bind(this)}.bind(void 0),xO=void 0,Yo=function(t){var r=this;return Pt(this,xO),function(a){return Pt(this,r),J0.remove(z4(a,"request",t.request),1,a)}.bind(this)}.bind(void 0),wO=void 0,ln=function(t,r){return Pt(this,wO),t.notifiers=r(t.notifiers),t}.bind(void 0),MO=void 0,cn=function(t,r){return Pt(this,MO),ln(t,Ld(r)),r}.bind(void 0),Mi={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},V4=void 0,AO=function(t){var r=t.activeObservers,a=t.canceledObservers;return Pt(this,V4),Qo(r).concat(Qo(a))}.bind(void 0),Y4=function(t,r){return Pt(this,V4),Ud(AO(t),r),t}.bind(void 0),_O=void 0,Nd=function(t,r,a){return Pt(this,_O),ln(t,Yo(Y4(r,gO(a))))}.bind(void 0),IO=void 0,th=function(t,r,a){return Pt(this,IO),t.find(Od.hasIn([r],a))}.bind(void 0),EO=void 0,eh=function(t,r){return Pt(this,EO),Ud(t.activeObservers,r),t}.bind(void 0),SO=void 0,G4=function(t,r){return Pt(this,SO),eh(t,vO(r))}.bind(void 0),BO=void 0,$4=function(t){return Pt(this,BO),eh(t,dO(t))}.bind(void 0),CO=void 0,Z4=function(t){return Pt(this,CO),Vo(wi({},t,{isActive:!0,requestStatus:Mi.pending,subscriptionId:void 0}))}.bind(void 0),qO=void 0,W4=function(t,r){return Pt(this,qO),t.receive("ok",r.onSucceed).receive("error",r.onError).receive("timeout",r.onTimeout)}.bind(void 0),Fd=void 0,RO=function(t,r){var a=this;return Pt(this,Fd),function(n){var d=this;return Pt(this,a),function(){Pt(this,d);var m=th(t.notifiers,"request",r);if(m){for(var b=arguments.length,A=new Array(b),B=0;B0}.bind(void 0),cD=function(t){var r=this;return Pt(this,Qi),function(){Pt(this,r),lD(t)&&h8(t)}.bind(this)}.bind(void 0),dD="__absinthe__:control",vD=function(t){Pt(this,Qi);var r={phoenixSocket:t,channel:t.channel(dD),channelJoinCreated:!1,notifiers:[]};return t.onOpen(cD(r)),t.onClose(uD(r)),t.onMessage(aD(r)),r}.bind(void 0),pD=void 0,gD=function(t,r){var a=t.activeObservers,n=W0(t,["activeObservers"]);return Pt(this,pD),wi({},n,{activeObservers:Qo(a).concat([r]),isActive:!0})}.bind(void 0),mD=void 0,c8=function(t,r,a){return Pt(this,mD),cn(t,gD(r,a))}.bind(void 0),d8=void 0,bD=function(t,r){return Pt(this,d8),{operationType:r,request:t,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:Mi.pending,subscriptionId:void 0}}.bind(void 0),yD=function(t){return Pt(this,d8),bD(t,Dd.getOperationType(t.operation))}.bind(void 0),xD=void 0,wD=function(t){return Pt(this,xD),t.isActive?t:wi({},t,{isActive:!0})}.bind(void 0),Bf=void 0,MD=function(t){Pt(this,Bf),t.phoenixSocket.isConnected()?h8(t):t.phoenixSocket.connect()}.bind(void 0),AD=function(t,r){Pt(this,Bf);var a=yD(r);return ln(t,J0.append([a])),t.channelJoinCreated?s8(t,a):MD(t),a}.bind(void 0),Q4=function(t,r){return Pt(this,Bf),cn(t,wD(r))}.bind(void 0),_D=function(t,r){return Pt(this,Bf),r.requestStatus===Mi.sending?Q4(t,Vo(r)):Q4(t,r)}.bind(void 0),ID=function(t,r){return Pt(this,Bf),r.isActive?r:_D(t,r)}.bind(void 0),ED=function(t,r){Pt(this,Bf);var a=th(t.notifiers,"request",r);return a&&ID(t,a)}.bind(void 0),SD=function(t,r){return Pt(this,Bf),ED(t,r)||AD(t,r)}.bind(void 0),nh=void 0,BD=function(t,r,a,n){var d=this,m=r.request;return Pt(this,nh),function(){Pt(this,d);var b=th(t.notifiers,"request",m);n(t,b,b?a:void 0)}.bind(this)}.bind(void 0),CD=function(t,r){var a=this,n=t.operationType;return Pt(this,nh),function(d){Pt(this,a),r.next(d),n!=="subscription"&&r.complete()}.bind(this)}.bind(void 0),qD=function(t,r,a){return Pt(this,nh),wi({},r,{onAbort:a.error.bind(a),onResult:CD(t,a)})}.bind(void 0),RD=function(t,r){var a=this,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},d=n.unsubscribe,m=W0(n,["unsubscribe"]);return Pt(this,nh),new sO(function(b){Pt(this,a);var A=qD(r,m,b);return c8(t,r,A),d&&BD(t,r,A,d)}.bind(this))}.bind(void 0),v8=void 0,TD=function(t,r){return Pt(this,v8),J0.remove(t.indexOf(r),1,t)}.bind(void 0),OD=function(t,r){var a=t.activeObservers,n=W0(t,["activeObservers"]);return Pt(this,v8),wi({},n,{activeObservers:TD(a,r)})}.bind(void 0),p8=void 0,DD=function(t,r){if(Pt(this,p8),t.activeObservers.includes(r))return t;throw new Error("Observer is not attached to notifier")}.bind(void 0),g8=function(t,r,a){return Pt(this,p8),ln(t,Ld(OD(DD(r,a),a)))}.bind(void 0),m8=void 0,kD=function(t,r,a){return Pt(this,m8),r.activeObservers.length===1?o8(t,r):g8(t,r,a)}.bind(void 0),PD=function(t,r,a){return Pt(this,m8),r.isActive?kD(t,r,a):t}.bind(void 0);vn.cancel=o8;vn.create=vD;vn.observe=c8;vn.send=SD;vn.toObservable=RD;vn.unobserve=g8;vn.unobserveOrCancel=PD});var Kd=P((_X,$o)=>{M();var{Socket:UD}=xl(),LD=M2(),Go=b8();$o.exports.absintheCreate=function(e){let t=new UD(e,{transport:LD});return Go.create(t)};$o.exports.absintheSend=function(e,t){return Go.send(e,{operation:t})};$o.exports.absintheObserve=function(e,t,r){return new Promise((a,n)=>{Go.observe(e,t,{onStart:function(){a(t)},onError:function(d){Go.cancel(e,t),n(d)},onResult:function(d){r(d)}})})};$o.exports.absintheCancel=function(e,t){Go.cancel(e,t)}});var ve=P((jd,R8)=>{M();var ah=On(),ji=ah.Buffer;function q8(e,t){for(var r in e)t[r]=e[r]}ji.from&&ji.alloc&&ji.allocUnsafe&&ji.allocUnsafeSlow?R8.exports=ah:(q8(ah,jd),jd.Buffer=Cf);function Cf(e,t,r){return ji(e,t,r)}Cf.prototype=Object.create(ji.prototype);q8(ji,Cf);Cf.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ji(e,t,r)};Cf.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var a=ji(e);return t!==void 0?typeof r=="string"?a.fill(t,r):a.fill(t):a.fill(0),a};Cf.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ji(e)};Cf.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ah.SlowBuffer(e)}});var qf=P((qX,Vd)=>{"use strict";M();var zd=65536,QD=4294967295;function HD(){throw new Error(`Secure random number generation is not supported by this browser. +Use Chrome, Firefox or Internet Explorer 11`)}var jD=ve().Buffer,oh=window.crypto||window.msCrypto;oh&&oh.getRandomValues?Vd.exports=zD:Vd.exports=HD;function zD(e,t){if(e>QD)throw new RangeError("requested too many random bytes");var r=jD.allocUnsafe(e);if(e>0)if(e>zd)for(var a=0;a{M();typeof Object.create=="function"?Yd.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Yd.exports=function(t,r){if(r){t.super_=r;var a=function(){};a.prototype=r.prototype,t.prototype=new a,t.prototype.constructor=t}}});var uh=P((DX,Gd)=>{"use strict";M();var Aa=typeof Reflect=="object"?Reflect:null,T8=Aa&&typeof Aa.apply=="function"?Aa.apply:function(t,r,a){return Function.prototype.apply.call(t,r,a)},sh;Aa&&typeof Aa.ownKeys=="function"?sh=Aa.ownKeys:Object.getOwnPropertySymbols?sh=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:sh=function(t){return Object.getOwnPropertyNames(t)};function VD(e){console&&console.warn&&console.warn(e)}var D8=Number.isNaN||function(t){return t!==t};function He(){He.init.call(this)}Gd.exports=He;Gd.exports.once=ZD;He.EventEmitter=He;He.prototype._events=void 0;He.prototype._eventsCount=0;He.prototype._maxListeners=void 0;var O8=10;function hh(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(He,"defaultMaxListeners",{enumerable:!0,get:function(){return O8},set:function(e){if(typeof e!="number"||e<0||D8(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");O8=e}});He.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};He.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||D8(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function k8(e){return e._maxListeners===void 0?He.defaultMaxListeners:e._maxListeners}He.prototype.getMaxListeners=function(){return k8(this)};He.prototype.emit=function(t){for(var r=[],a=1;a0&&(m=r[0]),m instanceof Error)throw m;var b=new Error("Unhandled error."+(m?" ("+m.message+")":""));throw b.context=m,b}var A=d[t];if(A===void 0)return!1;if(typeof A=="function")T8(A,this,r);else for(var B=A.length,C=F8(A,B),a=0;a0&&m.length>n&&!m.warned){m.warned=!0;var b=new Error("Possible EventEmitter memory leak detected. "+m.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");b.name="MaxListenersExceededWarning",b.emitter=e,b.type=t,b.count=m.length,VD(b)}return e}He.prototype.addListener=function(t,r){return P8(this,t,r,!1)};He.prototype.on=He.prototype.addListener;He.prototype.prependListener=function(t,r){return P8(this,t,r,!0)};function YD(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function U8(e,t,r){var a={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},n=YD.bind(a);return n.listener=r,a.wrapFn=n,n}He.prototype.once=function(t,r){return hh(r),this.on(t,U8(this,t,r)),this};He.prototype.prependOnceListener=function(t,r){return hh(r),this.prependListener(t,U8(this,t,r)),this};He.prototype.removeListener=function(t,r){var a,n,d,m,b;if(hh(r),n=this._events,n===void 0)return this;if(a=n[t],a===void 0)return this;if(a===r||a.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete n[t],n.removeListener&&this.emit("removeListener",t,a.listener||r));else if(typeof a!="function"){for(d=-1,m=a.length-1;m>=0;m--)if(a[m]===r||a[m].listener===r){b=a[m].listener,d=m;break}if(d<0)return this;d===0?a.shift():GD(a,d),a.length===1&&(n[t]=a[0]),n.removeListener!==void 0&&this.emit("removeListener",t,b||r)}return this};He.prototype.off=He.prototype.removeListener;He.prototype.removeAllListeners=function(t){var r,a,n;if(a=this._events,a===void 0)return this;if(a.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):a[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete a[t]),this;if(arguments.length===0){var d=Object.keys(a),m;for(n=0;n=0;n--)this.removeListener(t,r[n]);return this};function L8(e,t,r){var a=e._events;if(a===void 0)return[];var n=a[t];return n===void 0?[]:typeof n=="function"?r?[n.listener||n]:[n]:r?$D(n):F8(n,n.length)}He.prototype.listeners=function(t){return L8(this,t,!0)};He.prototype.rawListeners=function(t){return L8(this,t,!1)};He.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):N8.call(e,t)};He.prototype.listenerCount=N8;function N8(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}He.prototype.eventNames=function(){return this._eventsCount>0?sh(this._events):[]};function F8(e,t){for(var r=new Array(t),a=0;a{M();Q8.exports=uh().EventEmitter});var Zd=P(()=>{M()});var V8=P((KX,z8)=>{"use strict";M();function H8(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),r.push.apply(r,a)}return r}function JD(e){for(var t=1;t0?this.tail.next=a:this.head=a,this.tail=a,++this.length}},{key:"unshift",value:function(r){var a={data:r,next:this.head};this.length===0&&(this.tail=a),this.head=a,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var a=this.head,n=""+a.data;a=a.next;)n+=r+a.data;return n}},{key:"concat",value:function(r){if(this.length===0)return lh.alloc(0);for(var a=lh.allocUnsafe(r>>>0),n=this.head,d=0;n;)fk(n.data,a,d),d+=n.data.length,n=n.next;return a}},{key:"consume",value:function(r,a){var n;return rm.length?m.length:r;if(b===m.length?d+=m:d+=m.slice(0,r),r-=b,r===0){b===m.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=m.slice(b));break}++n}return this.length-=n,d}},{key:"_getBuffer",value:function(r){var a=lh.allocUnsafe(r),n=this.head,d=1;for(n.data.copy(a),r-=n.data.length;n=n.next;){var m=n.data,b=r>m.length?m.length:r;if(m.copy(a,a.length-r,0,b),r-=b,r===0){b===m.length?(++d,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=m.slice(b));break}++d}return this.length-=d,a}},{key:nk,value:function(r,a){return Wd(this,JD({},a,{depth:0,customInspect:!1}))}}]),e}()});var Xd=P((HX,G8)=>{"use strict";M();function ak(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return a||n?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(Jd,this,e)):process.nextTick(Jd,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(d){!t&&d?r._writableState?r._writableState.errorEmitted?process.nextTick(ch,r):(r._writableState.errorEmitted=!0,process.nextTick(Y8,r,d)):process.nextTick(Y8,r,d):t?(process.nextTick(ch,r),t(d)):process.nextTick(ch,r)}),this)}function Y8(e,t){Jd(e,t),ch(e)}function ch(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function ok(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Jd(e,t){e.emit("error",t)}function sk(e,t){var r=e._readableState,a=e._writableState;r&&r.autoDestroy||a&&a.autoDestroy?e.destroy(t):e.emit("error",t)}G8.exports={destroy:ak,undestroy:ok,errorOrDestroy:sk}});var Rf=P((zX,W8)=>{"use strict";M();function hk(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var Z8={};function ei(e,t,r){r||(r=Error);function a(d,m,b){return typeof t=="string"?t:t(d,m,b)}var n=function(d){hk(m,d);function m(b,A,B){return d.call(this,a(b,A,B))||this}return m}(r);n.prototype.name=r.name,n.prototype.code=e,Z8[e]=n}function $8(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(a){return String(a)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function uk(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function lk(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function ck(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}ei("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);ei("ERR_INVALID_ARG_TYPE",function(e,t,r){var a;typeof t=="string"&&uk(t,"not ")?(a="must not be",t=t.replace(/^not /,"")):a="must be";var n;if(lk(e," argument"))n="The ".concat(e," ").concat(a," ").concat($8(t,"type"));else{var d=ck(e,".")?"property":"argument";n='The "'.concat(e,'" ').concat(d," ").concat(a," ").concat($8(t,"type"))}return n+=". Received type ".concat(typeof r),n},TypeError);ei("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");ei("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});ei("ERR_STREAM_PREMATURE_CLOSE","Premature close");ei("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});ei("ERR_MULTIPLE_CALLBACK","Callback called multiple times");ei("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");ei("ERR_STREAM_WRITE_AFTER_END","write after end");ei("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);ei("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);ei("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");W8.exports.codes=Z8});var t1=P((YX,J8)=>{"use strict";M();var dk=Rf().codes.ERR_INVALID_OPT_VALUE;function vk(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function pk(e,t,r,a){var n=vk(t,a,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var d=a?r:"highWaterMark";throw new dk(d,n)}return Math.floor(n)}return e.objectMode?16:16*1024}J8.exports={getHighWaterMark:pk}});var tx=P(($X,X8)=>{M();X8.exports=gk;function gk(e,t){if(e1("noDeprecation"))return e;var r=!1;function a(){if(!r){if(e1("throwDeprecation"))throw new Error(t);e1("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return a}function e1(e){try{if(!window.localStorage)return!1}catch{return!1}var t=window.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var ph=P((WX,ax)=>{"use strict";M();ax.exports=Xe;function rx(e){var t=this;this.next=null,this.entry=null,this.finish=function(){Hk(t,e)}}var _a;Xe.WritableState=Wo;var mk={deprecate:tx()},ix=$d(),vh=On().Buffer,bk=window.Uint8Array||function(){};function yk(e){return vh.from(e)}function xk(e){return vh.isBuffer(e)||e instanceof bk}var i1=Xd(),wk=t1(),Mk=wk.getHighWaterMark,Vn=Rf().codes,Ak=Vn.ERR_INVALID_ARG_TYPE,_k=Vn.ERR_METHOD_NOT_IMPLEMENTED,Ik=Vn.ERR_MULTIPLE_CALLBACK,Ek=Vn.ERR_STREAM_CANNOT_PIPE,Sk=Vn.ERR_STREAM_DESTROYED,Bk=Vn.ERR_STREAM_NULL_VALUES,Ck=Vn.ERR_STREAM_WRITE_AFTER_END,qk=Vn.ERR_UNKNOWN_ENCODING,Ia=i1.errorOrDestroy;ge()(Xe,ix);function Rk(){}function Wo(e,t,r){_a=_a||Yn(),e=e||{},typeof r!="boolean"&&(r=t instanceof _a),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Mk(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=e.decodeStrings===!1;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){Lk(t,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new rx(this)}Wo.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(Wo.prototype,"buffer",{get:mk.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var dh;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(dh=Function.prototype[Symbol.hasInstance],Object.defineProperty(Xe,Symbol.hasInstance,{value:function(t){return dh.call(this,t)?!0:this!==Xe?!1:t&&t._writableState instanceof Wo}})):dh=function(t){return t instanceof this};function Xe(e){_a=_a||Yn();var t=this instanceof _a;if(!t&&!dh.call(Xe,this))return new Xe(e);this._writableState=new Wo(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),ix.call(this)}Xe.prototype.pipe=function(){Ia(this,new Ek)};function Tk(e,t){var r=new Ck;Ia(e,r),process.nextTick(t,r)}function Ok(e,t,r,a){var n;return r===null?n=new Bk:typeof r!="string"&&!t.objectMode&&(n=new Ak("chunk",["string","Buffer"],r)),n?(Ia(e,n),process.nextTick(a,n),!1):!0}Xe.prototype.write=function(e,t,r){var a=this._writableState,n=!1,d=!a.objectMode&&xk(e);return d&&!vh.isBuffer(e)&&(e=yk(e)),typeof t=="function"&&(r=t,t=null),d?t="buffer":t||(t=a.defaultEncoding),typeof r!="function"&&(r=Rk),a.ending?Tk(this,r):(d||Ok(this,a,e,r))&&(a.pendingcb++,n=kk(this,a,d,e,t,r)),n};Xe.prototype.cork=function(){this._writableState.corked++};Xe.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&nx(this,e))};Xe.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new qk(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(Xe.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Dk(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=vh.from(t,r)),t}Object.defineProperty(Xe.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function kk(e,t,r,a,n,d){if(!r){var m=Dk(t,a,n);a!==m&&(r=!0,n="buffer",a=m)}var b=t.objectMode?1:a.length;t.length+=b;var A=t.length{"use strict";M();var jk=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};sx.exports=zi;var ox=bh(),f1=ph();ge()(zi,ox);for(n1=jk(f1.prototype),gh=0;gh{"use strict";M();var o1=ve().Buffer,hx=o1.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Yk(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function Gk(e){var t=Yk(e);if(typeof t!="string"&&(o1.isEncoding===hx||!hx(e)))throw new Error("Unknown encoding: "+e);return t||e}ux.StringDecoder=Jo;function Jo(e){this.encoding=Gk(e);var t;switch(this.encoding){case"utf16le":this.text=tP,this.end=eP,t=4;break;case"utf8":this.fillLast=Wk,t=4;break;case"base64":this.text=rP,this.end=iP,t=3;break;default:this.write=nP,this.end=fP;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=o1.allocUnsafe(t)}Jo.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function $k(e,t,r){var a=t.length-1;if(a=0?(n>0&&(e.lastNeed=n-1),n):--a=0?(n>0&&(e.lastNeed=n-2),n):--a=0?(n>0&&(n===2?n=0:e.lastNeed=n-3),n):0))}function Zk(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function Wk(e){var t=this.lastTotal-this.lastNeed,r=Zk(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function Jk(e,t){var r=$k(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var a=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,a),e.toString("utf8",t,a)}function Xk(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function tP(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var a=r.charCodeAt(r.length-1);if(a>=55296&&a<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function eP(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function rP(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function iP(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function nP(e){return e.toString(this.encoding)}function fP(e){return e&&e.length?this.write(e):""}});var Xo=P((itt,dx)=>{"use strict";M();var lx=Rf().codes.ERR_STREAM_PREMATURE_CLOSE;function aP(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,a=new Array(r),n=0;n{"use strict";M();var xh;function Gn(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var hP=Xo(),$n=Symbol("lastResolve"),Tf=Symbol("lastReject"),ts=Symbol("error"),wh=Symbol("ended"),Of=Symbol("lastPromise"),s1=Symbol("handlePromise"),Df=Symbol("stream");function Zn(e,t){return{value:e,done:t}}function uP(e){var t=e[$n];if(t!==null){var r=e[Df].read();r!==null&&(e[Of]=null,e[$n]=null,e[Tf]=null,t(Zn(r,!1)))}}function lP(e){process.nextTick(uP,e)}function cP(e,t){return function(r,a){e.then(function(){if(t[wh]){r(Zn(void 0,!0));return}t[s1](r,a)},a)}}var dP=Object.getPrototypeOf(function(){}),vP=Object.setPrototypeOf((xh={get stream(){return this[Df]},next:function(){var t=this,r=this[ts];if(r!==null)return Promise.reject(r);if(this[wh])return Promise.resolve(Zn(void 0,!0));if(this[Df].destroyed)return new Promise(function(m,b){process.nextTick(function(){t[ts]?b(t[ts]):m(Zn(void 0,!0))})});var a=this[Of],n;if(a)n=new Promise(cP(a,this));else{var d=this[Df].read();if(d!==null)return Promise.resolve(Zn(d,!1));n=new Promise(this[s1])}return this[Of]=n,n}},Gn(xh,Symbol.asyncIterator,function(){return this}),Gn(xh,"return",function(){var t=this;return new Promise(function(r,a){t[Df].destroy(null,function(n){if(n){a(n);return}r(Zn(void 0,!0))})})}),xh),dP),pP=function(t){var r,a=Object.create(vP,(r={},Gn(r,Df,{value:t,writable:!0}),Gn(r,$n,{value:null,writable:!0}),Gn(r,Tf,{value:null,writable:!0}),Gn(r,ts,{value:null,writable:!0}),Gn(r,wh,{value:t._readableState.endEmitted,writable:!0}),Gn(r,s1,{value:function(d,m){var b=a[Df].read();b?(a[Of]=null,a[$n]=null,a[Tf]=null,d(Zn(b,!1))):(a[$n]=d,a[Tf]=m)},writable:!0}),r));return a[Of]=null,hP(t,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var d=a[Tf];d!==null&&(a[Of]=null,a[$n]=null,a[Tf]=null,d(n)),a[ts]=n;return}var m=a[$n];m!==null&&(a[Of]=null,a[$n]=null,a[Tf]=null,m(Zn(void 0,!0))),a[wh]=!0}),t.on("readable",lP.bind(null,a)),a};vx.exports=pP});var mx=P((ott,gx)=>{M();gx.exports=function(){throw new Error("Readable.from is not available in the browser")}});var bh=P((utt,Sx)=>{"use strict";M();Sx.exports=Be;var Ea;Be.ReadableState=wx;var htt=uh().EventEmitter,xx=function(t,r){return t.listeners(r).length},rs=$d(),Mh=On().Buffer,gP=window.Uint8Array||function(){};function mP(e){return Mh.from(e)}function bP(e){return Mh.isBuffer(e)||e instanceof gP}var h1=Zd(),xe;h1&&h1.debuglog?xe=h1.debuglog("stream"):xe=function(){};var yP=V8(),g1=Xd(),xP=t1(),wP=xP.getHighWaterMark,Ah=Rf().codes,MP=Ah.ERR_INVALID_ARG_TYPE,AP=Ah.ERR_STREAM_PUSH_AFTER_EOF,_P=Ah.ERR_METHOD_NOT_IMPLEMENTED,IP=Ah.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Sa,u1,l1;ge()(Be,rs);var es=g1.errorOrDestroy,c1=["error","close","destroy","pause","resume"];function EP(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function wx(e,t,r){Ea=Ea||Yn(),e=e||{},typeof r!="boolean"&&(r=t instanceof Ea),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=wP(this,e,"readableHighWaterMark",r),this.buffer=new yP,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Sa||(Sa=yh().StringDecoder),this.decoder=new Sa(e.encoding),this.encoding=e.encoding)}function Be(e){if(Ea=Ea||Yn(),!(this instanceof Be))return new Be(e);var t=this instanceof Ea;this._readableState=new wx(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),rs.call(this)}Object.defineProperty(Be.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){!this._readableState||(this._readableState.destroyed=t)}});Be.prototype.destroy=g1.destroy;Be.prototype._undestroy=g1.undestroy;Be.prototype._destroy=function(e,t){t(e)};Be.prototype.push=function(e,t){var r=this._readableState,a;return r.objectMode?a=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=Mh.from(e,t),t=""),a=!0),Mx(this,e,t,!1,a)};Be.prototype.unshift=function(e){return Mx(this,e,null,!0,!1)};function Mx(e,t,r,a,n){xe("readableAddChunk",t);var d=e._readableState;if(t===null)d.reading=!1,CP(e,d);else{var m;if(n||(m=SP(d,t)),m)es(e,m);else if(d.objectMode||t&&t.length>0)if(typeof t!="string"&&!d.objectMode&&Object.getPrototypeOf(t)!==Mh.prototype&&(t=mP(t)),a)d.endEmitted?es(e,new IP):d1(e,d,t,!0);else if(d.ended)es(e,new AP);else{if(d.destroyed)return!1;d.reading=!1,d.decoder&&!r?(t=d.decoder.write(t),d.objectMode||t.length!==0?d1(e,d,t,!1):p1(e,d)):d1(e,d,t,!1)}else a||(d.reading=!1,p1(e,d))}return!d.ended&&(d.length=bx?e=bx:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function yx(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=BP(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}Be.prototype.read=function(e){xe("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return xe("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?v1(this):_h(this),null;if(e=yx(e,t),e===0&&t.ended)return t.length===0&&v1(this),null;var a=t.needReadable;xe("need readable",a),(t.length===0||t.length-e0?n=Ix(e,t):n=null,n===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&v1(this)),n!==null&&this.emit("data",n),n};function CP(e,t){if(xe("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?_h(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,Ax(e)))}}function _h(e){var t=e._readableState;xe("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xe("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(Ax,e))}function Ax(e){var t=e._readableState;xe("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,m1(e)}function p1(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(qP,e,t))}function qP(e,t){for(;!t.reading&&!t.ended&&(t.length1&&Ex(a.pipes,e)!==-1)&&!B&&(xe("false write response, pause",a.awaitDrain),a.awaitDrain++),r.pause())}function K(Rt){xe("onerror",Rt),qt(),e.removeListener("error",K),xx(e,"error")===0&&es(e,Rt)}EP(e,"error",K);function j(){e.removeListener("finish",Z),qt()}e.once("close",j);function Z(){xe("onfinish"),e.removeListener("close",j),qt()}e.once("finish",Z);function qt(){xe("unpipe"),r.unpipe(e)}return e.emit("pipe",r),a.flowing||(xe("pipe resume"),r.resume()),e};function RP(e){return function(){var r=e._readableState;xe("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&xx(e,"data")&&(r.flowing=!0,m1(e))}}Be.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var a=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var d=0;d0,a.flowing!==!1&&this.resume()):e==="readable"&&!a.endEmitted&&!a.readableListening&&(a.readableListening=a.needReadable=!0,a.flowing=!1,a.emittedReadable=!1,xe("on readable",a.length,a.reading),a.length?_h(this):a.reading||process.nextTick(TP,this)),r};Be.prototype.addListener=Be.prototype.on;Be.prototype.removeListener=function(e,t){var r=rs.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(_x,this),r};Be.prototype.removeAllListeners=function(e){var t=rs.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(_x,this),t};function _x(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function TP(e){xe("readable nexttick read 0"),e.read(0)}Be.prototype.resume=function(){var e=this._readableState;return e.flowing||(xe("resume"),e.flowing=!e.readableListening,OP(this,e)),e.paused=!1,this};function OP(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(DP,e,t))}function DP(e,t){xe("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),m1(e),t.flowing&&!t.reading&&e.read(0)}Be.prototype.pause=function(){return xe("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(xe("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function m1(e){var t=e._readableState;for(xe("flow",t.flowing);t.flowing&&e.read()!==null;);}Be.prototype.wrap=function(e){var t=this,r=this._readableState,a=!1;e.on("end",function(){if(xe("wrapped end"),r.decoder&&!r.ended){var m=r.decoder.end();m&&m.length&&t.push(m)}t.push(null)}),e.on("data",function(m){if(xe("wrapped data"),r.decoder&&(m=r.decoder.write(m)),!(r.objectMode&&m==null)&&!(!r.objectMode&&(!m||!m.length))){var b=t.push(m);b||(a=!0,e.pause())}});for(var n in e)this[n]===void 0&&typeof e[n]=="function"&&(this[n]=function(b){return function(){return e[b].apply(e,arguments)}}(n));for(var d=0;d=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function v1(e){var t=e._readableState;xe("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(kP,t,e))}function kP(e,t){if(xe("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(Be.from=function(e,t){return l1===void 0&&(l1=mx()),l1(Be,e,t)});function Ex(e,t){for(var r=0,a=e.length;r{"use strict";M();Cx.exports=gn;var Ih=Rf().codes,PP=Ih.ERR_METHOD_NOT_IMPLEMENTED,UP=Ih.ERR_MULTIPLE_CALLBACK,LP=Ih.ERR_TRANSFORM_ALREADY_TRANSFORMING,NP=Ih.ERR_TRANSFORM_WITH_LENGTH_0,Eh=Yn();ge()(gn,Eh);function FP(e,t){var r=this._transformState;r.transforming=!1;var a=r.writecb;if(a===null)return this.emit("error",new UP);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),a(e);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";M();Rx.exports=is;var qx=Sh();ge()(is,qx);function is(e){if(!(this instanceof is))return new is(e);qx.call(this,e)}is.prototype._transform=function(e,t,r){r(null,e)}});var x1=P((gtt,kx)=>{"use strict";M();var y1;function QP(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var Dx=Rf().codes,HP=Dx.ERR_MISSING_ARGS,jP=Dx.ERR_STREAM_DESTROYED;function Tx(e){if(e)throw e}function zP(e){return e.setHeader&&typeof e.abort=="function"}function VP(e,t,r,a){a=QP(a);var n=!1;e.on("close",function(){n=!0}),y1===void 0&&(y1=Xo()),y1(e,{readable:t,writable:r},function(m){if(m)return a(m);n=!0,a()});var d=!1;return function(m){if(!n&&!d){if(d=!0,zP(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();a(m||new jP("pipe"))}}}function Ox(e){e()}function YP(e,t){return e.pipe(t)}function GP(e){return!e.length||typeof e[e.length-1]!="function"?Tx:e.pop()}function $P(){for(var e=arguments.length,t=new Array(e),r=0;r0;return VP(m,A,B,function(C){n||(n=C),C&&d.forEach(Ox),!A&&(d.forEach(Ox),a(n))})});return t.reduce(YP)}kx.exports=$P});var w1=P((ri,Px)=>{M();ri=Px.exports=bh();ri.Stream=ri;ri.Readable=ri;ri.Writable=ph();ri.Duplex=Yn();ri.Transform=Sh();ri.PassThrough=b1();ri.finished=Xo();ri.pipeline=x1()});var M1=P((ytt,Lx)=>{"use strict";M();var Bh=ve().Buffer,Ux=w1().Transform,ZP=ge();function WP(e,t){if(!Bh.isBuffer(e)&&typeof e!="string")throw new TypeError(t+" must be a string or a buffer")}function Wn(e){Ux.call(this),this._block=Bh.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}ZP(Wn,Ux);Wn.prototype._transform=function(e,t,r){var a=null;try{this.update(e,t)}catch(n){a=n}r(a)};Wn.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(r){t=r}e(t)};Wn.prototype.update=function(e,t){if(WP(e,"Data"),this._finalized)throw new Error("Digest already called");Bh.isBuffer(e)||(e=Bh.from(e,t));for(var r=this._block,a=0;this._blockOffset+e.length-a>=this._blockSize;){for(var n=this._blockOffset;n0;++d)this._length[d]+=m,m=this._length[d]/4294967296|0,m>0&&(this._length[d]-=4294967296*m);return this};Wn.prototype._update=function(){throw new Error("_update is not implemented")};Wn.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();e!==void 0&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t};Wn.prototype._digest=function(){throw new Error("_digest is not implemented")};Lx.exports=Wn});var Rh=P((wtt,Fx)=>{"use strict";M();var JP=ge(),Nx=M1(),XP=ve().Buffer,tU=new Array(16);function Ch(){Nx.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}JP(Ch,Nx);Ch.prototype._update=function(){for(var e=tU,t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);var r=this._a,a=this._b,n=this._c,d=this._d;r=wr(r,a,n,d,e[0],3614090360,7),d=wr(d,r,a,n,e[1],3905402710,12),n=wr(n,d,r,a,e[2],606105819,17),a=wr(a,n,d,r,e[3],3250441966,22),r=wr(r,a,n,d,e[4],4118548399,7),d=wr(d,r,a,n,e[5],1200080426,12),n=wr(n,d,r,a,e[6],2821735955,17),a=wr(a,n,d,r,e[7],4249261313,22),r=wr(r,a,n,d,e[8],1770035416,7),d=wr(d,r,a,n,e[9],2336552879,12),n=wr(n,d,r,a,e[10],4294925233,17),a=wr(a,n,d,r,e[11],2304563134,22),r=wr(r,a,n,d,e[12],1804603682,7),d=wr(d,r,a,n,e[13],4254626195,12),n=wr(n,d,r,a,e[14],2792965006,17),a=wr(a,n,d,r,e[15],1236535329,22),r=Mr(r,a,n,d,e[1],4129170786,5),d=Mr(d,r,a,n,e[6],3225465664,9),n=Mr(n,d,r,a,e[11],643717713,14),a=Mr(a,n,d,r,e[0],3921069994,20),r=Mr(r,a,n,d,e[5],3593408605,5),d=Mr(d,r,a,n,e[10],38016083,9),n=Mr(n,d,r,a,e[15],3634488961,14),a=Mr(a,n,d,r,e[4],3889429448,20),r=Mr(r,a,n,d,e[9],568446438,5),d=Mr(d,r,a,n,e[14],3275163606,9),n=Mr(n,d,r,a,e[3],4107603335,14),a=Mr(a,n,d,r,e[8],1163531501,20),r=Mr(r,a,n,d,e[13],2850285829,5),d=Mr(d,r,a,n,e[2],4243563512,9),n=Mr(n,d,r,a,e[7],1735328473,14),a=Mr(a,n,d,r,e[12],2368359562,20),r=Ar(r,a,n,d,e[5],4294588738,4),d=Ar(d,r,a,n,e[8],2272392833,11),n=Ar(n,d,r,a,e[11],1839030562,16),a=Ar(a,n,d,r,e[14],4259657740,23),r=Ar(r,a,n,d,e[1],2763975236,4),d=Ar(d,r,a,n,e[4],1272893353,11),n=Ar(n,d,r,a,e[7],4139469664,16),a=Ar(a,n,d,r,e[10],3200236656,23),r=Ar(r,a,n,d,e[13],681279174,4),d=Ar(d,r,a,n,e[0],3936430074,11),n=Ar(n,d,r,a,e[3],3572445317,16),a=Ar(a,n,d,r,e[6],76029189,23),r=Ar(r,a,n,d,e[9],3654602809,4),d=Ar(d,r,a,n,e[12],3873151461,11),n=Ar(n,d,r,a,e[15],530742520,16),a=Ar(a,n,d,r,e[2],3299628645,23),r=_r(r,a,n,d,e[0],4096336452,6),d=_r(d,r,a,n,e[7],1126891415,10),n=_r(n,d,r,a,e[14],2878612391,15),a=_r(a,n,d,r,e[5],4237533241,21),r=_r(r,a,n,d,e[12],1700485571,6),d=_r(d,r,a,n,e[3],2399980690,10),n=_r(n,d,r,a,e[10],4293915773,15),a=_r(a,n,d,r,e[1],2240044497,21),r=_r(r,a,n,d,e[8],1873313359,6),d=_r(d,r,a,n,e[15],4264355552,10),n=_r(n,d,r,a,e[6],2734768916,15),a=_r(a,n,d,r,e[13],1309151649,21),r=_r(r,a,n,d,e[4],4149444226,6),d=_r(d,r,a,n,e[11],3174756917,10),n=_r(n,d,r,a,e[2],718787259,15),a=_r(a,n,d,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+a|0,this._c=this._c+n|0,this._d=this._d+d|0};Ch.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=XP.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};function qh(e,t){return e<>>32-t}function wr(e,t,r,a,n,d,m){return qh(e+(t&r|~t&a)+n+d|0,m)+t|0}function Mr(e,t,r,a,n,d,m){return qh(e+(t&a|r&~a)+n+d|0,m)+t|0}function Ar(e,t,r,a,n,d,m){return qh(e+(t^r^a)+n+d|0,m)+t|0}function _r(e,t,r,a,n,d,m){return qh(e+(r^(t|~a))+n+d|0,m)+t|0}Fx.exports=Ch});var Oh=P((Att,Yx)=>{"use strict";M();var A1=On().Buffer,eU=ge(),Vx=M1(),rU=new Array(16),ns=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],fs=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],as=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],os=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],ss=[0,1518500249,1859775393,2400959708,2840853838],hs=[1352829926,1548603684,1836072691,2053994217,0];function Th(){Vx.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}eU(Th,Vx);Th.prototype._update=function(){for(var e=rU,t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);for(var r=this._a|0,a=this._b|0,n=this._c|0,d=this._d|0,m=this._e|0,b=this._a|0,A=this._b|0,B=this._c|0,C=this._d|0,D=this._e|0,K=0;K<80;K+=1){var j,Z;K<16?(j=Kx(r,a,n,d,m,e[ns[K]],ss[0],as[K]),Z=zx(b,A,B,C,D,e[fs[K]],hs[0],os[K])):K<32?(j=Qx(r,a,n,d,m,e[ns[K]],ss[1],as[K]),Z=jx(b,A,B,C,D,e[fs[K]],hs[1],os[K])):K<48?(j=Hx(r,a,n,d,m,e[ns[K]],ss[2],as[K]),Z=Hx(b,A,B,C,D,e[fs[K]],hs[2],os[K])):K<64?(j=jx(r,a,n,d,m,e[ns[K]],ss[3],as[K]),Z=Qx(b,A,B,C,D,e[fs[K]],hs[3],os[K])):(j=zx(r,a,n,d,m,e[ns[K]],ss[4],as[K]),Z=Kx(b,A,B,C,D,e[fs[K]],hs[4],os[K])),r=m,m=d,d=kf(n,10),n=a,a=j,b=D,D=C,C=kf(B,10),B=A,A=Z}var qt=this._b+n+C|0;this._b=this._c+d+D|0,this._c=this._d+m+b|0,this._d=this._e+r+A|0,this._e=this._a+a+B|0,this._a=qt};Th.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=A1.alloc?A1.alloc(20):new A1(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};function kf(e,t){return e<>>32-t}function Kx(e,t,r,a,n,d,m,b){return kf(e+(t^r^a)+d+m|0,b)+n|0}function Qx(e,t,r,a,n,d,m,b){return kf(e+(t&r|~t&a)+d+m|0,b)+n|0}function Hx(e,t,r,a,n,d,m,b){return kf(e+((t|~r)^a)+d+m|0,b)+n|0}function jx(e,t,r,a,n,d,m,b){return kf(e+(t&a|r&~a)+d+m|0,b)+n|0}function zx(e,t,r,a,n,d,m,b){return kf(e+(t^(r|~a))+d+m|0,b)+n|0}Yx.exports=Th});var Pf=P((Itt,$x)=>{M();var Gx=ve().Buffer;function Dh(e,t){this._block=Gx.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}Dh.prototype.update=function(e,t){typeof e=="string"&&(t=t||"utf8",e=Gx.from(e,t));for(var r=this._block,a=this._blockSize,n=e.length,d=this._len,m=0;m=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var a=(r&4294967295)>>>0,n=(r-a)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(a,this._blockSize-4)}this._update(this._block);var d=this._hash();return e?d.toString(e):d};Dh.prototype._update=function(){throw new Error("_update must be implemented by subclass")};$x.exports=Dh});var Jx=P((Stt,Wx)=>{M();var iU=ge(),Zx=Pf(),nU=ve().Buffer,fU=[1518500249,1859775393,-1894007588,-899497514],aU=new Array(80);function us(){this.init(),this._w=aU,Zx.call(this,64,56)}iU(us,Zx);us.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function oU(e){return e<<5|e>>>27}function sU(e){return e<<30|e>>>2}function hU(e,t,r,a){return e===0?t&r|~t&a:e===2?t&r|t&a|r&a:t^r^a}us.prototype._update=function(e){for(var t=this._w,r=this._a|0,a=this._b|0,n=this._c|0,d=this._d|0,m=this._e|0,b=0;b<16;++b)t[b]=e.readInt32BE(b*4);for(;b<80;++b)t[b]=t[b-3]^t[b-8]^t[b-14]^t[b-16];for(var A=0;A<80;++A){var B=~~(A/20),C=oU(r)+hU(B,a,n,d)+m+t[A]+fU[B]|0;m=d,d=n,n=sU(a),a=r,r=C}this._a=r+this._a|0,this._b=a+this._b|0,this._c=n+this._c|0,this._d=d+this._d|0,this._e=m+this._e|0};us.prototype._hash=function(){var e=nU.allocUnsafe(20);return e.writeInt32BE(this._a|0,0),e.writeInt32BE(this._b|0,4),e.writeInt32BE(this._c|0,8),e.writeInt32BE(this._d|0,12),e.writeInt32BE(this._e|0,16),e};Wx.exports=us});var ew=P((Ctt,tw)=>{M();var uU=ge(),Xx=Pf(),lU=ve().Buffer,cU=[1518500249,1859775393,-1894007588,-899497514],dU=new Array(80);function ls(){this.init(),this._w=dU,Xx.call(this,64,56)}uU(ls,Xx);ls.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function vU(e){return e<<1|e>>>31}function pU(e){return e<<5|e>>>27}function gU(e){return e<<30|e>>>2}function mU(e,t,r,a){return e===0?t&r|~t&a:e===2?t&r|t&a|r&a:t^r^a}ls.prototype._update=function(e){for(var t=this._w,r=this._a|0,a=this._b|0,n=this._c|0,d=this._d|0,m=this._e|0,b=0;b<16;++b)t[b]=e.readInt32BE(b*4);for(;b<80;++b)t[b]=vU(t[b-3]^t[b-8]^t[b-14]^t[b-16]);for(var A=0;A<80;++A){var B=~~(A/20),C=pU(r)+mU(B,a,n,d)+m+t[A]+cU[B]|0;m=d,d=n,n=gU(a),a=r,r=C}this._a=r+this._a|0,this._b=a+this._b|0,this._c=n+this._c|0,this._d=d+this._d|0,this._e=m+this._e|0};ls.prototype._hash=function(){var e=lU.allocUnsafe(20);return e.writeInt32BE(this._a|0,0),e.writeInt32BE(this._b|0,4),e.writeInt32BE(this._c|0,8),e.writeInt32BE(this._d|0,12),e.writeInt32BE(this._e|0,16),e};tw.exports=ls});var _1=P((Rtt,iw)=>{M();var bU=ge(),rw=Pf(),yU=ve().Buffer,xU=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],wU=new Array(64);function cs(){this.init(),this._w=wU,rw.call(this,64,56)}bU(cs,rw);cs.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function MU(e,t,r){return r^e&(t^r)}function AU(e,t,r){return e&t|r&(e|t)}function _U(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function IU(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function EU(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}function SU(e){return(e>>>17|e<<15)^(e>>>19|e<<13)^e>>>10}cs.prototype._update=function(e){for(var t=this._w,r=this._a|0,a=this._b|0,n=this._c|0,d=this._d|0,m=this._e|0,b=this._f|0,A=this._g|0,B=this._h|0,C=0;C<16;++C)t[C]=e.readInt32BE(C*4);for(;C<64;++C)t[C]=SU(t[C-2])+t[C-7]+EU(t[C-15])+t[C-16]|0;for(var D=0;D<64;++D){var K=B+IU(m)+MU(m,b,A)+xU[D]+t[D]|0,j=_U(r)+AU(r,a,n)|0;B=A,A=b,b=m,m=d+K|0,d=n,n=a,a=r,r=K+j|0}this._a=r+this._a|0,this._b=a+this._b|0,this._c=n+this._c|0,this._d=d+this._d|0,this._e=m+this._e|0,this._f=b+this._f|0,this._g=A+this._g|0,this._h=B+this._h|0};cs.prototype._hash=function(){var e=yU.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};iw.exports=cs});var fw=P((Ott,nw)=>{M();var BU=ge(),CU=_1(),qU=Pf(),RU=ve().Buffer,TU=new Array(64);function kh(){this.init(),this._w=TU,qU.call(this,64,56)}BU(kh,CU);kh.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this};kh.prototype._hash=function(){var e=RU.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};nw.exports=kh});var I1=P((ktt,cw)=>{M();var OU=ge(),lw=Pf(),DU=ve().Buffer,aw=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],kU=new Array(160);function ds(){this.init(),this._w=kU,lw.call(this,128,112)}OU(ds,lw);ds.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function ow(e,t,r){return r^e&(t^r)}function sw(e,t,r){return e&t|r&(e|t)}function hw(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function uw(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function PU(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function UU(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function LU(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function NU(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hr(e,t){return e>>>0>>0?1:0}ds.prototype._update=function(e){for(var t=this._w,r=this._ah|0,a=this._bh|0,n=this._ch|0,d=this._dh|0,m=this._eh|0,b=this._fh|0,A=this._gh|0,B=this._hh|0,C=this._al|0,D=this._bl|0,K=this._cl|0,j=this._dl|0,Z=this._el|0,qt=this._fl|0,Rt=this._gl|0,J=this._hl|0,Ot=0;Ot<32;Ot+=2)t[Ot]=e.readInt32BE(Ot*4),t[Ot+1]=e.readInt32BE(Ot*4+4);for(;Ot<160;Ot+=2){var ht=t[Ot-30],Lt=t[Ot-15*2+1],ee=PU(ht,Lt),$t=UU(Lt,ht);ht=t[Ot-2*2],Lt=t[Ot-2*2+1];var Gt=LU(ht,Lt),tt=NU(Lt,ht),rt=t[Ot-7*2],v=t[Ot-7*2+1],i=t[Ot-16*2],o=t[Ot-16*2+1],h=$t+v|0,s=ee+rt+hr(h,$t)|0;h=h+tt|0,s=s+Gt+hr(h,tt)|0,h=h+o|0,s=s+i+hr(h,o)|0,t[Ot]=s,t[Ot+1]=h}for(var u=0;u<160;u+=2){s=t[u],h=t[u+1];var p=sw(r,a,n),g=sw(C,D,K),l=hw(r,C),f=hw(C,r),c=uw(m,Z),I=uw(Z,m),w=aw[u],S=aw[u+1],k=ow(m,b,A),E=ow(Z,qt,Rt),L=J+I|0,$=B+c+hr(L,J)|0;L=L+E|0,$=$+k+hr(L,E)|0,L=L+S|0,$=$+w+hr(L,S)|0,L=L+h|0,$=$+s+hr(L,h)|0;var F=f+g|0,Q=l+p+hr(F,f)|0;B=A,J=Rt,A=b,Rt=qt,b=m,qt=Z,Z=j+L|0,m=d+$+hr(Z,j)|0,d=n,j=K,n=a,K=D,a=r,D=C,C=L+F|0,r=$+Q+hr(C,L)|0}this._al=this._al+C|0,this._bl=this._bl+D|0,this._cl=this._cl+K|0,this._dl=this._dl+j|0,this._el=this._el+Z|0,this._fl=this._fl+qt|0,this._gl=this._gl+Rt|0,this._hl=this._hl+J|0,this._ah=this._ah+r+hr(this._al,C)|0,this._bh=this._bh+a+hr(this._bl,D)|0,this._ch=this._ch+n+hr(this._cl,K)|0,this._dh=this._dh+d+hr(this._dl,j)|0,this._eh=this._eh+m+hr(this._el,Z)|0,this._fh=this._fh+b+hr(this._fl,qt)|0,this._gh=this._gh+A+hr(this._gl,Rt)|0,this._hh=this._hh+B+hr(this._hl,J)|0};ds.prototype._hash=function(){var e=DU.allocUnsafe(64);function t(r,a,n){e.writeInt32BE(r,n),e.writeInt32BE(a,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};cw.exports=ds});var vw=P((Utt,dw)=>{M();var FU=ge(),KU=I1(),QU=Pf(),HU=ve().Buffer,jU=new Array(160);function Ph(){this.init(),this._w=jU,QU.call(this,128,112)}FU(Ph,KU);Ph.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this};Ph.prototype._hash=function(){var e=HU.allocUnsafe(48);function t(r,a,n){e.writeInt32BE(r,n),e.writeInt32BE(a,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};dw.exports=Ph});var Uh=P((mn,pw)=>{M();var mn=pw.exports=function(t){t=t.toLowerCase();var r=mn[t];if(!r)throw new Error(t+" is not supported (we accept pull requests)");return new r};mn.sha=Jx();mn.sha1=ew();mn.sha224=fw();mn.sha256=_1();mn.sha384=vw();mn.sha512=I1()});var mw=P((Ftt,gw)=>{M();gw.exports=ii;var E1=uh().EventEmitter,zU=ge();zU(ii,E1);ii.Readable=bh();ii.Writable=ph();ii.Duplex=Yn();ii.Transform=Sh();ii.PassThrough=b1();ii.finished=Xo();ii.pipeline=x1();ii.Stream=ii;function ii(){E1.call(this)}ii.prototype.pipe=function(e,t){var r=this;function a(C){e.writable&&e.write(C)===!1&&r.pause&&r.pause()}r.on("data",a);function n(){r.readable&&r.resume&&r.resume()}e.on("drain",n),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",m),r.on("close",b));var d=!1;function m(){d||(d=!0,e.end())}function b(){d||(d=!0,typeof e.destroy=="function"&&e.destroy())}function A(C){if(B(),E1.listenerCount(this,"error")===0)throw C}r.on("error",A),e.on("error",A);function B(){r.removeListener("data",a),e.removeListener("drain",n),r.removeListener("end",m),r.removeListener("close",b),r.removeListener("error",A),e.removeListener("error",A),r.removeListener("end",B),r.removeListener("close",B),e.removeListener("close",B)}return r.on("end",B),r.on("close",B),e.on("close",B),e.emit("pipe",r),e}});var bn=P((Qtt,xw)=>{M();var bw=ve().Buffer,yw=mw().Transform,VU=yh().StringDecoder,YU=ge();function Ai(e){yw.call(this),this.hashMode=typeof e=="string",this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}YU(Ai,yw);Ai.prototype.update=function(e,t,r){typeof e=="string"&&(e=bw.from(e,t));var a=this._update(e);return this.hashMode?this:(r&&(a=this._toString(a,r)),a)};Ai.prototype.setAutoPadding=function(){};Ai.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")};Ai.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")};Ai.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")};Ai.prototype._transform=function(e,t,r){var a;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(n){a=n}finally{r(a)}};Ai.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(r){t=r}e(t)};Ai.prototype._finalOrDigest=function(e){var t=this.__final()||bw.alloc(0);return e&&(t=this._toString(t,e,!0)),t};Ai.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new VU(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var a=this._decoder.write(e);return r&&(a+=this._decoder.end()),a};xw.exports=Ai});var Ba=P((jtt,Mw)=>{"use strict";M();var GU=ge(),$U=Rh(),ZU=Oh(),WU=Uh(),ww=bn();function Lh(e){ww.call(this,"digest"),this._hash=e}GU(Lh,ww);Lh.prototype._update=function(e){this._hash.update(e)};Lh.prototype._final=function(){return this._hash.digest()};Mw.exports=function(t){return t=t.toLowerCase(),t==="md5"?new $U:t==="rmd160"||t==="ripemd160"?new ZU:new Lh(WU(t))}});var Iw=P((Vtt,_w)=>{"use strict";M();var JU=ge(),Uf=ve().Buffer,Aw=bn(),XU=Uf.alloc(128),Ca=64;function Nh(e,t){Aw.call(this,"digest"),typeof t=="string"&&(t=Uf.from(t)),this._alg=e,this._key=t,t.length>Ca?t=e(t):t.length{M();var tL=Rh();Ew.exports=function(e){return new tL().update(e).digest()}});var q1=P((Ztt,Bw)=>{"use strict";M();var eL=ge(),rL=Iw(),Sw=bn(),vs=ve().Buffer,iL=S1(),B1=Oh(),C1=Uh(),nL=vs.alloc(128);function ps(e,t){Sw.call(this,"digest"),typeof t=="string"&&(t=vs.from(t));var r=e==="sha512"||e==="sha384"?128:64;if(this._alg=e,this._key=t,t.length>r){var a=e==="rmd160"?new B1:C1(e);t=a.update(t).digest()}else t.length{fL.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}});var qw=P((Xtt,Cw)=>{M();Cw.exports=R1()});var T1=P((eet,Rw)=>{M();var aL=Math.pow(2,30)-1;Rw.exports=function(e,t){if(typeof e!="number")throw new TypeError("Iterations not a number");if(e<0)throw new TypeError("Bad iterations");if(typeof t!="number")throw new TypeError("Key length not a number");if(t<0||t>aL||t!==t)throw new TypeError("Bad key length")}});var O1=P((iet,Ow)=>{M();var Fh;window.process&&window.process.browser?Fh="utf-8":window.process&&window.process.version?(Tw=parseInt(process.version.split(".")[0].slice(1),10),Fh=Tw>=6?"utf-8":"binary"):Fh="utf-8";var Tw;Ow.exports=Fh});var k1=P((fet,Dw)=>{M();var D1=ve().Buffer;Dw.exports=function(e,t,r){if(D1.isBuffer(e))return e;if(typeof e=="string")return D1.from(e,t);if(ArrayBuffer.isView(e))return D1.from(e.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}});var P1=P((oet,Lw)=>{M();var oL=S1(),sL=Oh(),hL=Uh(),Lf=ve().Buffer,uL=T1(),kw=O1(),Pw=k1(),lL=Lf.alloc(128),Kh={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function Uw(e,t,r){var a=cL(e),n=e==="sha512"||e==="sha384"?128:64;t.length>n?t=a(t):t.length{M();var Qw=ve().Buffer,vL=T1(),Nw=O1(),Fw=P1(),Kw=k1(),Qh,gs=window.crypto&&window.crypto.subtle,pL={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},U1=[];function gL(e){if(window.process&&!window.process.browser||!gs||!gs.importKey||!gs.deriveBits)return Promise.resolve(!1);if(U1[e]!==void 0)return U1[e];Qh=Qh||Qw.alloc(8);var t=Hw(Qh,Qh,10,128,e).then(function(){return!0}).catch(function(){return!1});return U1[e]=t,t}var Nf;function L1(){return Nf||(window.process&&window.process.nextTick?Nf=window.process.nextTick:window.queueMicrotask?Nf=window.queueMicrotask:window.setImmediate?Nf=window.setImmediate:Nf=window.setTimeout,Nf)}function Hw(e,t,r,a,n){return gs.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then(function(d){return gs.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:{name:n}},d,a<<3)}).then(function(d){return Qw.from(d)})}function mL(e,t){e.then(function(r){L1()(function(){t(null,r)})},function(r){L1()(function(){t(r)})})}jw.exports=function(e,t,r,a,n,d){typeof n=="function"&&(d=n,n=void 0),n=n||"sha1";var m=pL[n.toLowerCase()];if(!m||typeof window.Promise!="function"){L1()(function(){var b;try{b=Fw(e,t,r,a,n)}catch(A){return d(A)}d(null,b)});return}if(vL(r,a),e=Kw(e,Nw,"Password"),t=Kw(t,Nw,"Salt"),typeof d!="function")throw new Error("No callback provided to pbkdf2");mL(gL(m).then(function(b){return b?Hw(e,t,r,a,m):Fw(e,t,r,a,n)}),d)}});var F1=P(N1=>{M();N1.pbkdf2=zw();N1.pbkdf2Sync=P1()});var K1=P(ni=>{"use strict";M();ni.readUInt32BE=function(t,r){var a=t[0+r]<<24|t[1+r]<<16|t[2+r]<<8|t[3+r];return a>>>0};ni.writeUInt32BE=function(t,r,a){t[0+a]=r>>>24,t[1+a]=r>>>16&255,t[2+a]=r>>>8&255,t[3+a]=r&255};ni.ip=function(t,r,a,n){for(var d=0,m=0,b=6;b>=0;b-=2){for(var A=0;A<=24;A+=8)d<<=1,d|=r>>>A+b&1;for(var A=0;A<=24;A+=8)d<<=1,d|=t>>>A+b&1}for(var b=6;b>=0;b-=2){for(var A=1;A<=25;A+=8)m<<=1,m|=r>>>A+b&1;for(var A=1;A<=25;A+=8)m<<=1,m|=t>>>A+b&1}a[n+0]=d>>>0,a[n+1]=m>>>0};ni.rip=function(t,r,a,n){for(var d=0,m=0,b=0;b<4;b++)for(var A=24;A>=0;A-=8)d<<=1,d|=r>>>A+b&1,d<<=1,d|=t>>>A+b&1;for(var b=4;b<8;b++)for(var A=24;A>=0;A-=8)m<<=1,m|=r>>>A+b&1,m<<=1,m|=t>>>A+b&1;a[n+0]=d>>>0,a[n+1]=m>>>0};ni.pc1=function(t,r,a,n){for(var d=0,m=0,b=7;b>=5;b--){for(var A=0;A<=24;A+=8)d<<=1,d|=r>>A+b&1;for(var A=0;A<=24;A+=8)d<<=1,d|=t>>A+b&1}for(var A=0;A<=24;A+=8)d<<=1,d|=r>>A+b&1;for(var b=1;b<=3;b++){for(var A=0;A<=24;A+=8)m<<=1,m|=r>>A+b&1;for(var A=0;A<=24;A+=8)m<<=1,m|=t>>A+b&1}for(var A=0;A<=24;A+=8)m<<=1,m|=t>>A+b&1;a[n+0]=d>>>0,a[n+1]=m>>>0};ni.r28shl=function(t,r){return t<>>28-r};var Hh=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];ni.pc2=function(t,r,a,n){for(var d=0,m=0,b=Hh.length>>>1,A=0;A>>Hh[A]&1;for(var A=b;A>>Hh[A]&1;a[n+0]=d>>>0,a[n+1]=m>>>0};ni.expand=function(t,r,a){var n=0,d=0;n=(t&1)<<5|t>>>27;for(var m=23;m>=15;m-=4)n<<=6,n|=t>>>m&63;for(var m=11;m>=3;m-=4)d|=t>>>m&63,d<<=6;d|=(t&31)<<1|t>>>31,r[a+0]=n>>>0,r[a+1]=d>>>0};var Vw=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];ni.substitute=function(t,r){for(var a=0,n=0;n<4;n++){var d=t>>>18-n*6&63,m=Vw[n*64+d];a<<=4,a|=m}for(var n=0;n<4;n++){var d=r>>>18-n*6&63,m=Vw[4*64+n*64+d];a<<=4,a|=m}return a>>>0};var Yw=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];ni.permute=function(t){for(var r=0,a=0;a>>Yw[a]&1;return r>>>0};ni.padSplit=function(t,r,a){for(var n=t.toString(2);n.length{M();$w.exports=Gw;function Gw(e,t){if(!e)throw new Error(t||"Assertion failed")}Gw.equal=function(t,r,a){if(t!=r)throw new Error(a||"Assertion failed: "+t+" != "+r)}});var jh=P((bet,Zw)=>{"use strict";M();var bL=jr();function fi(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}Zw.exports=fi;fi.prototype._init=function(){};fi.prototype.update=function(t){return t.length===0?[]:this.type==="decrypt"?this._updateDecrypt(t):this._updateEncrypt(t)};fi.prototype._buffer=function(t,r){for(var a=Math.min(this.buffer.length-this.bufferOff,t.length-r),n=0;n0;n--)r+=this._buffer(t,r),a+=this._flushBuffer(d,a);return r+=this._buffer(t,r),d};fi.prototype.final=function(t){var r;t&&(r=this.update(t));var a;return this.type==="encrypt"?a=this._finalEncrypt():a=this._finalDecrypt(),r?r.concat(a):a};fi.prototype._pad=function(t,r){if(r===0)return!1;for(;r{"use strict";M();var Ww=jr(),yL=ge(),ar=K1(),Jw=jh();function xL(){this.tmp=new Array(2),this.keys=null}function Vi(e){Jw.call(this,e);var t=new xL;this._desState=t,this.deriveKeys(t,e.key)}yL(Vi,Jw);Xw.exports=Vi;Vi.create=function(t){return new Vi(t)};var wL=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];Vi.prototype.deriveKeys=function(t,r){t.keys=new Array(16*2),Ww.equal(r.length,this.blockSize,"Invalid key length");var a=ar.readUInt32BE(r,0),n=ar.readUInt32BE(r,4);ar.pc1(a,n,t.tmp,0),a=t.tmp[0],n=t.tmp[1];for(var d=0;d>>1];a=ar.r28shl(a,m),n=ar.r28shl(n,m),ar.pc2(a,n,t.keys,d)}};Vi.prototype._update=function(t,r,a,n){var d=this._desState,m=ar.readUInt32BE(t,r),b=ar.readUInt32BE(t,r+4);ar.ip(m,b,d.tmp,0),m=d.tmp[0],b=d.tmp[1],this.type==="encrypt"?this._encrypt(d,m,b,d.tmp,0):this._decrypt(d,m,b,d.tmp,0),m=d.tmp[0],b=d.tmp[1],ar.writeUInt32BE(a,m,n),ar.writeUInt32BE(a,b,n+4)};Vi.prototype._pad=function(t,r){for(var a=t.length-r,n=r;n>>0,m=j}ar.rip(b,m,n,d)};Vi.prototype._decrypt=function(t,r,a,n,d){for(var m=a,b=r,A=t.keys.length-2;A>=0;A-=2){var B=t.keys[A],C=t.keys[A+1];ar.expand(m,t.tmp,0),B^=t.tmp[0],C^=t.tmp[1];var D=ar.substitute(B,C),K=ar.permute(D),j=m;m=(b^K)>>>0,b=j}ar.rip(m,b,n,d)}});var e5=P(t5=>{"use strict";M();var ML=jr(),AL=ge(),zh={};function _L(e){ML.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t{"use strict";M();var EL=jr(),SL=ge(),r5=jh(),Jn=Q1();function BL(e,t){EL.equal(t.length,24,"Invalid key length");var r=t.slice(0,8),a=t.slice(8,16),n=t.slice(16,24);e==="encrypt"?this.ciphers=[Jn.create({type:"encrypt",key:r}),Jn.create({type:"decrypt",key:a}),Jn.create({type:"encrypt",key:n})]:this.ciphers=[Jn.create({type:"decrypt",key:n}),Jn.create({type:"encrypt",key:a}),Jn.create({type:"decrypt",key:r})]}function Ff(e){r5.call(this,e);var t=new BL(this.type,this.options.key);this._edeState=t}SL(Ff,r5);i5.exports=Ff;Ff.create=function(t){return new Ff(t)};Ff.prototype._update=function(t,r,a,n){var d=this._edeState;d.ciphers[0]._update(t,r,a,n),d.ciphers[1]._update(a,n,a,n),d.ciphers[2]._update(a,n,a,n)};Ff.prototype._pad=Jn.prototype._pad;Ff.prototype._unpad=Jn.prototype._unpad});var f5=P(qa=>{"use strict";M();qa.utils=K1();qa.Cipher=jh();qa.DES=Q1();qa.CBC=e5();qa.EDE=n5()});var s5=P((Cet,o5)=>{M();var a5=bn(),yn=f5(),CL=ge(),Kf=ve().Buffer,ms={"des-ede3-cbc":yn.CBC.instantiate(yn.EDE),"des-ede3":yn.EDE,"des-ede-cbc":yn.CBC.instantiate(yn.EDE),"des-ede":yn.EDE,"des-cbc":yn.CBC.instantiate(yn.DES),"des-ecb":yn.DES};ms.des=ms["des-cbc"];ms.des3=ms["des-ede3-cbc"];o5.exports=Vh;CL(Vh,a5);function Vh(e){a5.call(this);var t=e.mode.toLowerCase(),r=ms[t],a;e.decrypt?a="decrypt":a="encrypt";var n=e.key;Kf.isBuffer(n)||(n=Kf.from(n)),(t==="des-ede"||t==="des-ede-cbc")&&(n=Kf.concat([n,n.slice(0,8)]));var d=e.iv;Kf.isBuffer(d)||(d=Kf.from(d)),this._des=r.create({key:n,iv:d,type:a})}Vh.prototype._update=function(e){return Kf.from(this._des.update(e))};Vh.prototype._final=function(){return Kf.from(this._des.final())}});var h5=P(H1=>{M();H1.encrypt=function(e,t){return e._cipher.encryptBlock(t)};H1.decrypt=function(e,t){return e._cipher.decryptBlock(t)}});var Ra=P((Oet,u5)=>{M();var qL=ve().Buffer;u5.exports=function(t,r){for(var a=Math.max(t.length,r.length),n=qL.allocUnsafe(a),d=0;d{M();var l5=Ra();j1.encrypt=function(e,t){var r=l5(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev};j1.decrypt=function(e,t){var r=e._prev;e._prev=t;var a=e._cipher.decryptBlock(t);return l5(a,r)}});var p5=P(v5=>{M();var bs=ve().Buffer,RL=Ra();function d5(e,t,r){var a=t.length,n=RL(t,e._cache);return e._cache=e._cache.slice(a),e._prev=bs.concat([e._prev,r?t:n]),n}v5.encrypt=function(e,t,r){for(var a=bs.allocUnsafe(0),n;t.length;)if(e._cache.length===0&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=bs.allocUnsafe(0)),e._cache.length<=t.length)n=e._cache.length,a=bs.concat([a,d5(e,t.slice(0,n),r)]),t=t.slice(n);else{a=bs.concat([a,d5(e,t,r)]);break}return a}});var m5=P(g5=>{M();var z1=ve().Buffer;function TL(e,t,r){var a=e._cipher.encryptBlock(e._prev),n=a[0]^t;return e._prev=z1.concat([e._prev.slice(1),z1.from([r?t:n])]),n}g5.encrypt=function(e,t,r){for(var a=t.length,n=z1.allocUnsafe(a),d=-1;++d{M();var Yh=ve().Buffer;function OL(e,t,r){for(var a,n=-1,d=8,m=0,b,A;++n>n%8,e._prev=DL(e._prev,r?b:A);return m}function DL(e,t){var r=e.length,a=-1,n=Yh.allocUnsafe(e.length);for(e=Yh.concat([e,Yh.from([t])]);++a>7;return n}b5.encrypt=function(e,t,r){for(var a=t.length,n=Yh.allocUnsafe(a),d=-1;++d{M();var kL=Ra();function PL(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}x5.encrypt=function(e,t){for(;e._cache.length{M();function UL(e){for(var t=e.length,r;t--;)if(r=e.readUInt8(t),r===255)e.writeUInt8(0,t);else{r++,e.writeUInt8(r,t);break}}M5.exports=UL});var G1=P(_5=>{M();var LL=Ra(),A5=ve().Buffer,NL=V1();function FL(e){var t=e._cipher.encryptBlockRaw(e._prev);return NL(e._prev),t}var Y1=16;_5.encrypt=function(e,t){var r=Math.ceil(t.length/Y1),a=e._cache.length;e._cache=A5.concat([e._cache,A5.allocUnsafe(r*Y1)]);for(var n=0;n{KL.exports={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},aes192:{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},aes256:{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}}});var $h=P((Zet,I5)=>{M();var QL={ECB:h5(),CBC:c5(),CFB:p5(),CFB8:m5(),CFB1:y5(),OFB:w5(),CTR:G1(),GCM:G1()},Gh=$1();for(Z1 in Gh)Gh[Z1].module=QL[Gh[Z1].mode];var Z1;I5.exports=Gh});var ys=P((Jet,S5)=>{M();var Zh=ve().Buffer;function J1(e){Zh.isBuffer(e)||(e=Zh.from(e));for(var t=e.length/4|0,r=new Array(t),a=0;a>>24]^m[C>>>16&255]^b[D>>>8&255]^A[K&255]^t[J++],Z=d[C>>>24]^m[D>>>16&255]^b[K>>>8&255]^A[B&255]^t[J++],qt=d[D>>>24]^m[K>>>16&255]^b[B>>>8&255]^A[C&255]^t[J++],Rt=d[K>>>24]^m[B>>>16&255]^b[C>>>8&255]^A[D&255]^t[J++],B=j,C=Z,D=qt,K=Rt;return j=(a[B>>>24]<<24|a[C>>>16&255]<<16|a[D>>>8&255]<<8|a[K&255])^t[J++],Z=(a[C>>>24]<<24|a[D>>>16&255]<<16|a[K>>>8&255]<<8|a[B&255])^t[J++],qt=(a[D>>>24]<<24|a[K>>>16&255]<<16|a[B>>>8&255]<<8|a[C&255])^t[J++],Rt=(a[K>>>24]<<24|a[B>>>16&255]<<16|a[C>>>8&255]<<8|a[D&255])^t[J++],j=j>>>0,Z=Z>>>0,qt=qt>>>0,Rt=Rt>>>0,[j,Z,qt,Rt]}var HL=[0,1,2,4,8,16,32,64,128,27,54],ir=function(){for(var e=new Array(256),t=0;t<256;t++)t<128?e[t]=t<<1:e[t]=t<<1^283;for(var r=[],a=[],n=[[],[],[],[]],d=[[],[],[],[]],m=0,b=0,A=0;A<256;++A){var B=b^b<<1^b<<2^b<<3^b<<4;B=B>>>8^B&255^99,r[m]=B,a[B]=m;var C=e[m],D=e[C],K=e[D],j=e[B]*257^B*16843008;n[0][m]=j<<24|j>>>8,n[1][m]=j<<16|j>>>16,n[2][m]=j<<8|j>>>24,n[3][m]=j,j=K*16843009^D*65537^C*257^m*16843008,d[0][B]=j<<24|j>>>8,d[1][B]=j<<16|j>>>16,d[2][B]=j<<8|j>>>24,d[3][B]=j,m===0?m=b=1:(m=C^e[e[e[K^C]]],b^=e[e[b]])}return{SBOX:r,INV_SBOX:a,SUB_MIX:n,INV_SUB_MIX:d}}();function ai(e){this._key=J1(e),this._reset()}ai.blockSize=4*4;ai.keySize=256/8;ai.prototype.blockSize=ai.blockSize;ai.prototype.keySize=ai.keySize;ai.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,a=(r+1)*4,n=[],d=0;d>>24,m=ir.SBOX[m>>>24]<<24|ir.SBOX[m>>>16&255]<<16|ir.SBOX[m>>>8&255]<<8|ir.SBOX[m&255],m^=HL[d/t|0]<<24):t>6&&d%t===4&&(m=ir.SBOX[m>>>24]<<24|ir.SBOX[m>>>16&255]<<16|ir.SBOX[m>>>8&255]<<8|ir.SBOX[m&255]),n[d]=n[d-t]^m}for(var b=[],A=0;A>>24]]^ir.INV_SUB_MIX[1][ir.SBOX[C>>>16&255]]^ir.INV_SUB_MIX[2][ir.SBOX[C>>>8&255]]^ir.INV_SUB_MIX[3][ir.SBOX[C&255]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=b};ai.prototype.encryptBlockRaw=function(e){return e=J1(e),E5(e,this._keySchedule,ir.SUB_MIX,ir.SBOX,this._nRounds)};ai.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=Zh.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r};ai.prototype.decryptBlock=function(e){e=J1(e);var t=e[1];e[1]=e[3],e[3]=t;var r=E5(e,this._invKeySchedule,ir.INV_SUB_MIX,ir.INV_SBOX,this._nRounds),a=Zh.allocUnsafe(16);return a.writeUInt32BE(r[0],0),a.writeUInt32BE(r[3],4),a.writeUInt32BE(r[2],8),a.writeUInt32BE(r[1],12),a};ai.prototype.scrub=function(){W1(this._keySchedule),W1(this._invKeySchedule),W1(this._key)};S5.exports.AES=ai});var q5=P((trt,C5)=>{M();var Ta=ve().Buffer,jL=Ta.alloc(16,0);function zL(e){return[e.readUInt32BE(0),e.readUInt32BE(4),e.readUInt32BE(8),e.readUInt32BE(12)]}function B5(e){var t=Ta.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function xs(e){this.h=e,this.state=Ta.alloc(16,0),this.cache=Ta.allocUnsafe(0)}xs.prototype.ghash=function(e){for(var t=-1;++t0;r--)e[r]=e[r]>>>1|(e[r-1]&1)<<31;e[0]=e[0]>>>1,n&&(e[0]=e[0]^225<<24)}this.state=B5(t)};xs.prototype.update=function(e){this.cache=Ta.concat([this.cache,e]);for(var t;this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)};xs.prototype.final=function(e,t){return this.cache.length&&this.ghash(Ta.concat([this.cache,jL],16)),this.ghash(B5([0,e,0,t])),this.state};C5.exports=xs});var X1=P((rrt,O5)=>{M();var VL=ys(),Ur=ve().Buffer,R5=bn(),YL=ge(),T5=q5(),GL=Ra(),$L=V1();function ZL(e,t){var r=0;e.length!==t.length&&r++;for(var a=Math.min(e.length,t.length),n=0;n{M();var JL=ys(),tv=ve().Buffer,D5=bn(),XL=ge();function Wh(e,t,r,a){D5.call(this),this._cipher=new JL.AES(t),this._prev=tv.from(r),this._cache=tv.allocUnsafe(0),this._secCache=tv.allocUnsafe(0),this._decrypt=a,this._mode=e}XL(Wh,D5);Wh.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)};Wh.prototype._final=function(){this._cipher.scrub()};k5.exports=Wh});var ws=P((art,P5)=>{M();var Hf=ve().Buffer,tN=Rh();function eN(e,t,r,a){if(Hf.isBuffer(e)||(e=Hf.from(e,"binary")),t&&(Hf.isBuffer(t)||(t=Hf.from(t,"binary")),t.length!==8))throw new RangeError("salt should be Buffer with 8 byte length");for(var n=r/8,d=Hf.alloc(n),m=Hf.alloc(a||0),b=Hf.alloc(0);n>0||a>0;){var A=new tN;A.update(b),A.update(e),t&&A.update(t),b=A.digest();var B=0;if(n>0){var C=d.length-n;B=Math.min(n,b.length),b.copy(d,C,0,B),n-=B}if(B0){var D=m.length-a,K=Math.min(a,b.length-B);b.copy(m,D,B,B+K),a-=K}}return b.fill(0),{key:d,iv:m}}P5.exports=eN});var F5=P(rv=>{M();var U5=$h(),rN=X1(),xn=ve().Buffer,iN=ev(),L5=bn(),nN=ys(),fN=ws(),aN=ge();function Ms(e,t,r){L5.call(this),this._cache=new Jh,this._cipher=new nN.AES(t),this._prev=xn.from(r),this._mode=e,this._autopadding=!0}aN(Ms,L5);Ms.prototype._update=function(e){this._cache.add(e);for(var t,r,a=[];t=this._cache.get();)r=this._mode.encrypt(this,t),a.push(r);return xn.concat(a)};var oN=xn.alloc(16,16);Ms.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(oN))throw this._cipher.scrub(),new Error("data not multiple of block length")};Ms.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this};function Jh(){this.cache=xn.allocUnsafe(0)}Jh.prototype.add=function(e){this.cache=xn.concat([this.cache,e])};Jh.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null};Jh.prototype.flush=function(){for(var e=16-this.cache.length,t=xn.allocUnsafe(e),r=-1;++r{M();var hN=X1(),Oa=ve().Buffer,K5=$h(),uN=ev(),Q5=bn(),lN=ys(),cN=ws(),dN=ge();function As(e,t,r){Q5.call(this),this._cache=new Xh,this._last=void 0,this._cipher=new lN.AES(t),this._prev=Oa.from(r),this._mode=e,this._autopadding=!0}dN(As,Q5);As.prototype._update=function(e){this._cache.add(e);for(var t,r,a=[];t=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,t),a.push(r);return Oa.concat(a)};As.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return vN(this._mode.decrypt(this,e));if(e)throw new Error("data not multiple of block length")};As.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this};function Xh(){this.cache=Oa.allocUnsafe(0)}Xh.prototype.add=function(e){this.cache=Oa.concat([this.cache,e])};Xh.prototype.get=function(e){var t;if(e){if(this.cache.length>16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null};Xh.prototype.flush=function(){if(this.cache.length)return this.cache};function vN(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");for(var r=-1;++r{M();var z5=F5(),V5=j5(),gN=$1();function mN(){return Object.keys(gN)}_i.createCipher=_i.Cipher=z5.createCipher;_i.createCipheriv=_i.Cipheriv=z5.createCipheriv;_i.createDecipher=_i.Decipher=V5.createDecipher;_i.createDecipheriv=_i.Decipheriv=V5.createDecipheriv;_i.listCiphers=_i.getCiphers=mN});var Y5=P(wn=>{M();wn["des-ecb"]={key:8,iv:0};wn["des-cbc"]=wn.des={key:8,iv:8};wn["des-ede3-cbc"]=wn.des3={key:24,iv:8};wn["des-ede3"]={key:24,iv:0};wn["des-ede-cbc"]={key:16,iv:8};wn["des-ede"]={key:16,iv:0}});var J5=P(Ii=>{M();var G5=s5(),nv=tu(),Xn=$h(),Mn=Y5(),$5=ws();function bN(e,t){e=e.toLowerCase();var r,a;if(Xn[e])r=Xn[e].key,a=Xn[e].iv;else if(Mn[e])r=Mn[e].key*8,a=Mn[e].iv;else throw new TypeError("invalid suite type");var n=$5(t,!1,r,a);return Z5(e,n.key,n.iv)}function yN(e,t){e=e.toLowerCase();var r,a;if(Xn[e])r=Xn[e].key,a=Xn[e].iv;else if(Mn[e])r=Mn[e].key*8,a=Mn[e].iv;else throw new TypeError("invalid suite type");var n=$5(t,!1,r,a);return W5(e,n.key,n.iv)}function Z5(e,t,r){if(e=e.toLowerCase(),Xn[e])return nv.createCipheriv(e,t,r);if(Mn[e])return new G5({key:t,iv:r,mode:e});throw new TypeError("invalid suite type")}function W5(e,t,r){if(e=e.toLowerCase(),Xn[e])return nv.createDecipheriv(e,t,r);if(Mn[e])return new G5({key:t,iv:r,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}function xN(){return Object.keys(Mn).concat(nv.getCiphers())}Ii.createCipher=Ii.Cipher=bN;Ii.createCipheriv=Ii.Cipheriv=Z5;Ii.createDecipher=Ii.Decipher=yN;Ii.createDecipheriv=Ii.Decipheriv=W5;Ii.listCiphers=Ii.getCiphers=xN});var tf=P(()=>{M()});var av=P((X5,fv)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof fv>"u"||fv,X5)});var eM=P((tM,ov)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof ov>"u"||ov,tM)});var sv=P(()=>{M()});var eu=P((Ert,lv)=>{M();var hv;lv.exports=function(t){return hv||(hv=new ef(null)),hv.generate(t)};function ef(e){this.rand=e}lv.exports.Rand=ef;ef.prototype.generate=function(t){return this._rand(t)};ef.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var r=new Uint8Array(t),a=0;a{M();var jf=eM(),wN=eu();function zf(e){this.rand=e||new wN.Rand}rM.exports=zf;zf.create=function(t){return new zf(t)};zf.prototype._randbelow=function(t){var r=t.bitLength(),a=Math.ceil(r/8);do var n=new jf(this.rand.generate(a));while(n.cmp(t)>=0);return n};zf.prototype._randrange=function(t,r){var a=r.sub(t);return t.add(this._randbelow(a))};zf.prototype.test=function(t,r,a){var n=t.bitLength(),d=jf.mont(t),m=new jf(1).toRed(d);r||(r=Math.max(1,n/48|0));for(var b=t.subn(1),A=0;!b.testn(A);A++);for(var B=t.shrn(A),C=b.toRed(d),D=!0;r>0;r--){var K=this._randrange(new jf(2),b);a&&a(K);var j=K.toRed(d).redPow(B);if(!(j.cmp(m)===0||j.cmp(C)===0)){for(var Z=1;Z0;r--){var C=this._randrange(new jf(2),m),D=t.gcd(C);if(D.cmpn(1)!==0)return D;var K=C.toRed(n).redPow(A);if(!(K.cmp(d)===0||K.cmp(B)===0)){for(var j=1;j{M();var MN=qf();fM.exports=mv;mv.simpleSieve=pv;mv.fermatTest=gv;var vr=av(),AN=new vr(24),_N=cv(),iM=new _N,IN=new vr(1),vv=new vr(2),EN=new vr(5),qrt=new vr(16),Rrt=new vr(8),SN=new vr(10),BN=new vr(3),Trt=new vr(7),CN=new vr(11),nM=new vr(4),Ort=new vr(12),dv=null;function qN(){if(dv!==null)return dv;var e=1048576,t=[];t[0]=2;for(var r=1,a=3;ae;)r.ishrn(1);if(r.isEven()&&r.iadd(IN),r.testn(1)||r.iadd(vv),t.cmp(vv)){if(!t.cmp(EN))for(;r.mod(SN).cmp(BN);)r.iadd(nM)}else for(;r.mod(AN).cmp(CN);)r.iadd(nM);if(a=r.shrn(1),pv(a)&&pv(r)&&gv(a)&&gv(r)&&iM.test(a)&&iM.test(r))return r}}});var aM=P((Prt,RN)=>{RN.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}});var uM=P((Urt,hM)=>{M();var oi=av(),TN=cv(),oM=new TN,ON=new oi(24),DN=new oi(11),kN=new oi(10),PN=new oi(3),UN=new oi(7),sM=bv(),LN=qf();hM.exports=An;function NN(e,t){return t=t||"utf8",U.isBuffer(e)||(e=new U(e,t)),this._pub=new oi(e),this}function FN(e,t){return t=t||"utf8",U.isBuffer(e)||(e=new U(e,t)),this._priv=new oi(e),this}var ru={};function KN(e,t){var r=t.toString("hex"),a=[r,e.toString(16)].join("_");if(a in ru)return ru[a];var n=0;if(e.isEven()||!sM.simpleSieve||!sM.fermatTest(e)||!oM.test(e))return n+=1,r==="02"||r==="05"?n+=8:n+=4,ru[a]=n,n;oM.test(e.shrn(1))||(n+=2);var d;switch(r){case"02":e.mod(ON).cmp(DN)&&(n+=8);break;case"05":d=e.mod(kN),d.cmp(PN)&&d.cmp(UN)&&(n+=8);break;default:n+=4}return ru[a]=n,n}function An(e,t,r){this.setGenerator(t),this.__prime=new oi(e),this._prime=oi.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=NN,this.setPrivateKey=FN):this._primeCode=8}Object.defineProperty(An.prototype,"verifyError",{enumerable:!0,get:function(){return typeof this._primeCode!="number"&&(this._primeCode=KN(this.__prime,this.__gen)),this._primeCode}});An.prototype.generateKeys=function(){return this._priv||(this._priv=new oi(LN(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()};An.prototype.computeSecret=function(e){e=new oi(e),e=e.toRed(this._prime);var t=e.redPow(this._priv).fromRed(),r=new U(t.toArray()),a=this.getPrime();if(r.length{M();var QN=bv(),lM=aM(),yv=uM();function HN(e){var t=new U(lM[e].prime,"hex"),r=new U(lM[e].gen,"hex");return new yv(t,r)}var jN={binary:!0,hex:!0,base64:!0};function cM(e,t,r,a){return U.isBuffer(t)||jN[t]===void 0?cM(e,"binary",t,r):(t=t||"binary",a=a||"binary",r=r||new U([2]),U.isBuffer(r)||(r=new U(r,a)),typeof e=="number"?new yv(QN(e,r),r,!0):(U.isBuffer(e)||(e=new U(e,t)),new yv(e,r,!0)))}Da.DiffieHellmanGroup=Da.createDiffieHellmanGroup=Da.getDiffieHellman=HN;Da.createDiffieHellman=Da.DiffieHellman=cM});var nu=P((vM,xv)=>{M();(function(e,t){"use strict";function r(h,s){if(!h)throw new Error(s||"Assertion failed")}function a(h,s){h.super_=s;var u=function(){};u.prototype=s.prototype,h.prototype=new u,h.prototype.constructor=h}function n(h,s,u){if(n.isBN(h))return h;this.negative=0,this.words=null,this.length=0,this.red=null,h!==null&&((s==="le"||s==="be")&&(u=s,s=10),this._init(h||0,s||10,u||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(s){return s instanceof n?!0:s!==null&&typeof s=="object"&&s.constructor.wordSize===n.wordSize&&Array.isArray(s.words)},n.max=function(s,u){return s.cmp(u)>0?s:u},n.min=function(s,u){return s.cmp(u)<0?s:u},n.prototype._init=function(s,u,p){if(typeof s=="number")return this._initNumber(s,u,p);if(typeof s=="object")return this._initArray(s,u,p);u==="hex"&&(u=16),r(u===(u|0)&&u>=2&&u<=36),s=s.toString().replace(/\s+/g,"");var g=0;s[0]==="-"&&(g++,this.negative=1),g=0;g-=3)f=s[g]|s[g-1]<<8|s[g-2]<<16,this.words[l]|=f<>>26-c&67108863,c+=24,c>=26&&(c-=26,l++);else if(p==="le")for(g=0,l=0;g>>26-c&67108863,c+=24,c>=26&&(c-=26,l++);return this._strip()};function m(h,s){var u=h.charCodeAt(s);if(u>=48&&u<=57)return u-48;if(u>=65&&u<=70)return u-55;if(u>=97&&u<=102)return u-87;r(!1,"Invalid character in "+h)}function b(h,s,u){var p=m(h,u);return u-1>=s&&(p|=m(h,u-1)<<4),p}n.prototype._parseHex=function(s,u,p){this.length=Math.ceil((s.length-u)/6),this.words=new Array(this.length);for(var g=0;g=u;g-=2)c=b(s,u,g)<=18?(l-=18,f+=1,this.words[f]|=c>>>26):l+=8;else{var I=s.length-u;for(g=I%2===0?u+1:u;g=18?(l-=18,f+=1,this.words[f]|=c>>>26):l+=8}this._strip()};function A(h,s,u,p){for(var g=0,l=0,f=Math.min(h.length,u),c=s;c=49?l=I-49+10:I>=17?l=I-17+10:l=I,r(I>=0&&l1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=C}catch{n.prototype.inspect=C}else n.prototype.inspect=C;function C(){return(this.red?""}var D=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],K=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],j=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(s,u){s=s||10,u=u|0||1;var p;if(s===16||s==="hex"){p="";for(var g=0,l=0,f=0;f>>24-g&16777215,g+=2,g>=26&&(g-=26,f--),l!==0||f!==this.length-1?p=D[6-I.length]+I+p:p=I+p}for(l!==0&&(p=l.toString(16)+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(s===(s|0)&&s>=2&&s<=36){var w=K[s],S=j[s];p="";var k=this.clone();for(k.negative=0;!k.isZero();){var E=k.modrn(S).toString(s);k=k.idivn(S),k.isZero()?p=E+p:p=D[w-E.length]+E+p}for(this.isZero()&&(p="0"+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var s=this.words[0];return this.length===2?s+=this.words[1]*67108864:this.length===3&&this.words[2]===1?s+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-s:s},n.prototype.toJSON=function(){return this.toString(16,2)},d&&(n.prototype.toBuffer=function(s,u){return this.toArrayLike(d,s,u)}),n.prototype.toArray=function(s,u){return this.toArrayLike(Array,s,u)};var Z=function(s,u){return s.allocUnsafe?s.allocUnsafe(u):new s(u)};n.prototype.toArrayLike=function(s,u,p){this._strip();var g=this.byteLength(),l=p||Math.max(1,g);r(g<=l,"byte array longer than desired length"),r(l>0,"Requested array length <= 0");var f=Z(s,l),c=u==="le"?"LE":"BE";return this["_toArrayLike"+c](f,g),f},n.prototype._toArrayLikeLE=function(s,u){for(var p=0,g=0,l=0,f=0;l>8&255),p>16&255),f===6?(p>24&255),g=0,f=0):(g=c>>>24,f+=2)}if(p=0&&(s[p--]=c>>8&255),p>=0&&(s[p--]=c>>16&255),f===6?(p>=0&&(s[p--]=c>>24&255),g=0,f=0):(g=c>>>24,f+=2)}if(p>=0)for(s[p--]=g;p>=0;)s[p--]=0},Math.clz32?n.prototype._countBits=function(s){return 32-Math.clz32(s)}:n.prototype._countBits=function(s){var u=s,p=0;return u>=4096&&(p+=13,u>>>=13),u>=64&&(p+=7,u>>>=7),u>=8&&(p+=4,u>>>=4),u>=2&&(p+=2,u>>>=2),p+u},n.prototype._zeroBits=function(s){if(s===0)return 26;var u=s,p=0;return(u&8191)===0&&(p+=13,u>>>=13),(u&127)===0&&(p+=7,u>>>=7),(u&15)===0&&(p+=4,u>>>=4),(u&3)===0&&(p+=2,u>>>=2),(u&1)===0&&p++,p},n.prototype.bitLength=function(){var s=this.words[this.length-1],u=this._countBits(s);return(this.length-1)*26+u};function qt(h){for(var s=new Array(h.bitLength()),u=0;u>>g&1}return s}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var s=0,u=0;us.length?this.clone().ior(s):s.clone().ior(this)},n.prototype.uor=function(s){return this.length>s.length?this.clone().iuor(s):s.clone().iuor(this)},n.prototype.iuand=function(s){var u;this.length>s.length?u=s:u=this;for(var p=0;ps.length?this.clone().iand(s):s.clone().iand(this)},n.prototype.uand=function(s){return this.length>s.length?this.clone().iuand(s):s.clone().iuand(this)},n.prototype.iuxor=function(s){var u,p;this.length>s.length?(u=this,p=s):(u=s,p=this);for(var g=0;gs.length?this.clone().ixor(s):s.clone().ixor(this)},n.prototype.uxor=function(s){return this.length>s.length?this.clone().iuxor(s):s.clone().iuxor(this)},n.prototype.inotn=function(s){r(typeof s=="number"&&s>=0);var u=Math.ceil(s/26)|0,p=s%26;this._expand(u),p>0&&u--;for(var g=0;g0&&(this.words[g]=~this.words[g]&67108863>>26-p),this._strip()},n.prototype.notn=function(s){return this.clone().inotn(s)},n.prototype.setn=function(s,u){r(typeof s=="number"&&s>=0);var p=s/26|0,g=s%26;return this._expand(p+1),u?this.words[p]=this.words[p]|1<s.length?(p=this,g=s):(p=s,g=this);for(var l=0,f=0;f>>26;for(;l!==0&&f>>26;if(this.length=p.length,l!==0)this.words[this.length]=l,this.length++;else if(p!==this)for(;fs.length?this.clone().iadd(s):s.clone().iadd(this)},n.prototype.isub=function(s){if(s.negative!==0){s.negative=0;var u=this.iadd(s);return s.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(s),this.negative=1,this._normSign();var p=this.cmp(s);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var g,l;p>0?(g=this,l=s):(g=s,l=this);for(var f=0,c=0;c>26,this.words[c]=u&67108863;for(;f!==0&&c>26,this.words[c]=u&67108863;if(f===0&&c>>26,k=I&67108863,E=Math.min(w,s.length-1),L=Math.max(0,w-h.length+1);L<=E;L++){var $=w-L|0;g=h.words[$]|0,l=s.words[L]|0,f=g*l+k,S+=f/67108864|0,k=f&67108863}u.words[w]=k|0,I=S|0}return I!==0?u.words[w]=I|0:u.length--,u._strip()}var J=function(s,u,p){var g=s.words,l=u.words,f=p.words,c=0,I,w,S,k=g[0]|0,E=k&8191,L=k>>>13,$=g[1]|0,F=$&8191,Q=$>>>13,Ft=g[2]|0,Y=Ft&8191,G=Ft>>>13,se=g[3]|0,W=se&8191,X=se>>>13,Ne=g[4]|0,At=Ne&8191,at=Ne>>>13,Te=g[5]|0,_t=Te&8191,gt=Te>>>13,De=g[6]|0,dt=De&8191,mt=De>>>13,Oe=g[7]|0,bt=Oe&8191,yt=Oe>>>13,Fe=g[8]|0,St=Fe&8191,xt=Fe>>>13,ke=g[9]|0,vt=ke&8191,ut=ke>>>13,Ce=l[0]|0,lt=Ce&8191,pt=Ce>>>13,Re=l[1]|0,ct=Re&8191,wt=Re>>>13,Ke=l[2]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=l[3]|0,ot=Me&8191,st=Me>>>13,Pe=l[4]|0,Mt=Pe&8191,It=Pe>>>13,ze=l[5]|0,ft=ze&8191,Et=ze>>>13,T=l[6]|0,R=T&8191,q=T>>>13,_=l[7]|0,O=_&8191,N=_>>>13,et=l[8]|0,H=et&8191,z=et>>>13,zt=l[9]|0,Dt=zt&8191,Jt=zt>>>13;p.negative=s.negative^u.negative,p.length=19,I=Math.imul(E,lt),w=Math.imul(E,pt),w=w+Math.imul(L,lt)|0,S=Math.imul(L,pt);var Qt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,I=Math.imul(F,lt),w=Math.imul(F,pt),w=w+Math.imul(Q,lt)|0,S=Math.imul(Q,pt),I=I+Math.imul(E,ct)|0,w=w+Math.imul(E,wt)|0,w=w+Math.imul(L,ct)|0,S=S+Math.imul(L,wt)|0;var Xt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,I=Math.imul(Y,lt),w=Math.imul(Y,pt),w=w+Math.imul(G,lt)|0,S=Math.imul(G,pt),I=I+Math.imul(F,ct)|0,w=w+Math.imul(F,wt)|0,w=w+Math.imul(Q,ct)|0,S=S+Math.imul(Q,wt)|0,I=I+Math.imul(E,Bt)|0,w=w+Math.imul(E,Ct)|0,w=w+Math.imul(L,Bt)|0,S=S+Math.imul(L,Ct)|0;var te=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(te>>>26)|0,te&=67108863,I=Math.imul(W,lt),w=Math.imul(W,pt),w=w+Math.imul(X,lt)|0,S=Math.imul(X,pt),I=I+Math.imul(Y,ct)|0,w=w+Math.imul(Y,wt)|0,w=w+Math.imul(G,ct)|0,S=S+Math.imul(G,wt)|0,I=I+Math.imul(F,Bt)|0,w=w+Math.imul(F,Ct)|0,w=w+Math.imul(Q,Bt)|0,S=S+Math.imul(Q,Ct)|0,I=I+Math.imul(E,ot)|0,w=w+Math.imul(E,st)|0,w=w+Math.imul(L,ot)|0,S=S+Math.imul(L,st)|0;var ie=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(ie>>>26)|0,ie&=67108863,I=Math.imul(At,lt),w=Math.imul(At,pt),w=w+Math.imul(at,lt)|0,S=Math.imul(at,pt),I=I+Math.imul(W,ct)|0,w=w+Math.imul(W,wt)|0,w=w+Math.imul(X,ct)|0,S=S+Math.imul(X,wt)|0,I=I+Math.imul(Y,Bt)|0,w=w+Math.imul(Y,Ct)|0,w=w+Math.imul(G,Bt)|0,S=S+Math.imul(G,Ct)|0,I=I+Math.imul(F,ot)|0,w=w+Math.imul(F,st)|0,w=w+Math.imul(Q,ot)|0,S=S+Math.imul(Q,st)|0,I=I+Math.imul(E,Mt)|0,w=w+Math.imul(E,It)|0,w=w+Math.imul(L,Mt)|0,S=S+Math.imul(L,It)|0;var re=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(re>>>26)|0,re&=67108863,I=Math.imul(_t,lt),w=Math.imul(_t,pt),w=w+Math.imul(gt,lt)|0,S=Math.imul(gt,pt),I=I+Math.imul(At,ct)|0,w=w+Math.imul(At,wt)|0,w=w+Math.imul(at,ct)|0,S=S+Math.imul(at,wt)|0,I=I+Math.imul(W,Bt)|0,w=w+Math.imul(W,Ct)|0,w=w+Math.imul(X,Bt)|0,S=S+Math.imul(X,Ct)|0,I=I+Math.imul(Y,ot)|0,w=w+Math.imul(Y,st)|0,w=w+Math.imul(G,ot)|0,S=S+Math.imul(G,st)|0,I=I+Math.imul(F,Mt)|0,w=w+Math.imul(F,It)|0,w=w+Math.imul(Q,Mt)|0,S=S+Math.imul(Q,It)|0,I=I+Math.imul(E,ft)|0,w=w+Math.imul(E,Et)|0,w=w+Math.imul(L,ft)|0,S=S+Math.imul(L,Et)|0;var ne=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(ne>>>26)|0,ne&=67108863,I=Math.imul(dt,lt),w=Math.imul(dt,pt),w=w+Math.imul(mt,lt)|0,S=Math.imul(mt,pt),I=I+Math.imul(_t,ct)|0,w=w+Math.imul(_t,wt)|0,w=w+Math.imul(gt,ct)|0,S=S+Math.imul(gt,wt)|0,I=I+Math.imul(At,Bt)|0,w=w+Math.imul(At,Ct)|0,w=w+Math.imul(at,Bt)|0,S=S+Math.imul(at,Ct)|0,I=I+Math.imul(W,ot)|0,w=w+Math.imul(W,st)|0,w=w+Math.imul(X,ot)|0,S=S+Math.imul(X,st)|0,I=I+Math.imul(Y,Mt)|0,w=w+Math.imul(Y,It)|0,w=w+Math.imul(G,Mt)|0,S=S+Math.imul(G,It)|0,I=I+Math.imul(F,ft)|0,w=w+Math.imul(F,Et)|0,w=w+Math.imul(Q,ft)|0,S=S+Math.imul(Q,Et)|0,I=I+Math.imul(E,R)|0,w=w+Math.imul(E,q)|0,w=w+Math.imul(L,R)|0,S=S+Math.imul(L,q)|0;var ae=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(ae>>>26)|0,ae&=67108863,I=Math.imul(bt,lt),w=Math.imul(bt,pt),w=w+Math.imul(yt,lt)|0,S=Math.imul(yt,pt),I=I+Math.imul(dt,ct)|0,w=w+Math.imul(dt,wt)|0,w=w+Math.imul(mt,ct)|0,S=S+Math.imul(mt,wt)|0,I=I+Math.imul(_t,Bt)|0,w=w+Math.imul(_t,Ct)|0,w=w+Math.imul(gt,Bt)|0,S=S+Math.imul(gt,Ct)|0,I=I+Math.imul(At,ot)|0,w=w+Math.imul(At,st)|0,w=w+Math.imul(at,ot)|0,S=S+Math.imul(at,st)|0,I=I+Math.imul(W,Mt)|0,w=w+Math.imul(W,It)|0,w=w+Math.imul(X,Mt)|0,S=S+Math.imul(X,It)|0,I=I+Math.imul(Y,ft)|0,w=w+Math.imul(Y,Et)|0,w=w+Math.imul(G,ft)|0,S=S+Math.imul(G,Et)|0,I=I+Math.imul(F,R)|0,w=w+Math.imul(F,q)|0,w=w+Math.imul(Q,R)|0,S=S+Math.imul(Q,q)|0,I=I+Math.imul(E,O)|0,w=w+Math.imul(E,N)|0,w=w+Math.imul(L,O)|0,S=S+Math.imul(L,N)|0;var fe=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(fe>>>26)|0,fe&=67108863,I=Math.imul(St,lt),w=Math.imul(St,pt),w=w+Math.imul(xt,lt)|0,S=Math.imul(xt,pt),I=I+Math.imul(bt,ct)|0,w=w+Math.imul(bt,wt)|0,w=w+Math.imul(yt,ct)|0,S=S+Math.imul(yt,wt)|0,I=I+Math.imul(dt,Bt)|0,w=w+Math.imul(dt,Ct)|0,w=w+Math.imul(mt,Bt)|0,S=S+Math.imul(mt,Ct)|0,I=I+Math.imul(_t,ot)|0,w=w+Math.imul(_t,st)|0,w=w+Math.imul(gt,ot)|0,S=S+Math.imul(gt,st)|0,I=I+Math.imul(At,Mt)|0,w=w+Math.imul(At,It)|0,w=w+Math.imul(at,Mt)|0,S=S+Math.imul(at,It)|0,I=I+Math.imul(W,ft)|0,w=w+Math.imul(W,Et)|0,w=w+Math.imul(X,ft)|0,S=S+Math.imul(X,Et)|0,I=I+Math.imul(Y,R)|0,w=w+Math.imul(Y,q)|0,w=w+Math.imul(G,R)|0,S=S+Math.imul(G,q)|0,I=I+Math.imul(F,O)|0,w=w+Math.imul(F,N)|0,w=w+Math.imul(Q,O)|0,S=S+Math.imul(Q,N)|0,I=I+Math.imul(E,H)|0,w=w+Math.imul(E,z)|0,w=w+Math.imul(L,H)|0,S=S+Math.imul(L,z)|0;var Vt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,I=Math.imul(vt,lt),w=Math.imul(vt,pt),w=w+Math.imul(ut,lt)|0,S=Math.imul(ut,pt),I=I+Math.imul(St,ct)|0,w=w+Math.imul(St,wt)|0,w=w+Math.imul(xt,ct)|0,S=S+Math.imul(xt,wt)|0,I=I+Math.imul(bt,Bt)|0,w=w+Math.imul(bt,Ct)|0,w=w+Math.imul(yt,Bt)|0,S=S+Math.imul(yt,Ct)|0,I=I+Math.imul(dt,ot)|0,w=w+Math.imul(dt,st)|0,w=w+Math.imul(mt,ot)|0,S=S+Math.imul(mt,st)|0,I=I+Math.imul(_t,Mt)|0,w=w+Math.imul(_t,It)|0,w=w+Math.imul(gt,Mt)|0,S=S+Math.imul(gt,It)|0,I=I+Math.imul(At,ft)|0,w=w+Math.imul(At,Et)|0,w=w+Math.imul(at,ft)|0,S=S+Math.imul(at,Et)|0,I=I+Math.imul(W,R)|0,w=w+Math.imul(W,q)|0,w=w+Math.imul(X,R)|0,S=S+Math.imul(X,q)|0,I=I+Math.imul(Y,O)|0,w=w+Math.imul(Y,N)|0,w=w+Math.imul(G,O)|0,S=S+Math.imul(G,N)|0,I=I+Math.imul(F,H)|0,w=w+Math.imul(F,z)|0,w=w+Math.imul(Q,H)|0,S=S+Math.imul(Q,z)|0,I=I+Math.imul(E,Dt)|0,w=w+Math.imul(E,Jt)|0,w=w+Math.imul(L,Dt)|0,S=S+Math.imul(L,Jt)|0;var Wt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,I=Math.imul(vt,ct),w=Math.imul(vt,wt),w=w+Math.imul(ut,ct)|0,S=Math.imul(ut,wt),I=I+Math.imul(St,Bt)|0,w=w+Math.imul(St,Ct)|0,w=w+Math.imul(xt,Bt)|0,S=S+Math.imul(xt,Ct)|0,I=I+Math.imul(bt,ot)|0,w=w+Math.imul(bt,st)|0,w=w+Math.imul(yt,ot)|0,S=S+Math.imul(yt,st)|0,I=I+Math.imul(dt,Mt)|0,w=w+Math.imul(dt,It)|0,w=w+Math.imul(mt,Mt)|0,S=S+Math.imul(mt,It)|0,I=I+Math.imul(_t,ft)|0,w=w+Math.imul(_t,Et)|0,w=w+Math.imul(gt,ft)|0,S=S+Math.imul(gt,Et)|0,I=I+Math.imul(At,R)|0,w=w+Math.imul(At,q)|0,w=w+Math.imul(at,R)|0,S=S+Math.imul(at,q)|0,I=I+Math.imul(W,O)|0,w=w+Math.imul(W,N)|0,w=w+Math.imul(X,O)|0,S=S+Math.imul(X,N)|0,I=I+Math.imul(Y,H)|0,w=w+Math.imul(Y,z)|0,w=w+Math.imul(G,H)|0,S=S+Math.imul(G,z)|0,I=I+Math.imul(F,Dt)|0,w=w+Math.imul(F,Jt)|0,w=w+Math.imul(Q,Dt)|0,S=S+Math.imul(Q,Jt)|0;var Ht=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,I=Math.imul(vt,Bt),w=Math.imul(vt,Ct),w=w+Math.imul(ut,Bt)|0,S=Math.imul(ut,Ct),I=I+Math.imul(St,ot)|0,w=w+Math.imul(St,st)|0,w=w+Math.imul(xt,ot)|0,S=S+Math.imul(xt,st)|0,I=I+Math.imul(bt,Mt)|0,w=w+Math.imul(bt,It)|0,w=w+Math.imul(yt,Mt)|0,S=S+Math.imul(yt,It)|0,I=I+Math.imul(dt,ft)|0,w=w+Math.imul(dt,Et)|0,w=w+Math.imul(mt,ft)|0,S=S+Math.imul(mt,Et)|0,I=I+Math.imul(_t,R)|0,w=w+Math.imul(_t,q)|0,w=w+Math.imul(gt,R)|0,S=S+Math.imul(gt,q)|0,I=I+Math.imul(At,O)|0,w=w+Math.imul(At,N)|0,w=w+Math.imul(at,O)|0,S=S+Math.imul(at,N)|0,I=I+Math.imul(W,H)|0,w=w+Math.imul(W,z)|0,w=w+Math.imul(X,H)|0,S=S+Math.imul(X,z)|0,I=I+Math.imul(Y,Dt)|0,w=w+Math.imul(Y,Jt)|0,w=w+Math.imul(G,Dt)|0,S=S+Math.imul(G,Jt)|0;var Yt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,I=Math.imul(vt,ot),w=Math.imul(vt,st),w=w+Math.imul(ut,ot)|0,S=Math.imul(ut,st),I=I+Math.imul(St,Mt)|0,w=w+Math.imul(St,It)|0,w=w+Math.imul(xt,Mt)|0,S=S+Math.imul(xt,It)|0,I=I+Math.imul(bt,ft)|0,w=w+Math.imul(bt,Et)|0,w=w+Math.imul(yt,ft)|0,S=S+Math.imul(yt,Et)|0,I=I+Math.imul(dt,R)|0,w=w+Math.imul(dt,q)|0,w=w+Math.imul(mt,R)|0,S=S+Math.imul(mt,q)|0,I=I+Math.imul(_t,O)|0,w=w+Math.imul(_t,N)|0,w=w+Math.imul(gt,O)|0,S=S+Math.imul(gt,N)|0,I=I+Math.imul(At,H)|0,w=w+Math.imul(At,z)|0,w=w+Math.imul(at,H)|0,S=S+Math.imul(at,z)|0,I=I+Math.imul(W,Dt)|0,w=w+Math.imul(W,Jt)|0,w=w+Math.imul(X,Dt)|0,S=S+Math.imul(X,Jt)|0;var Zt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,I=Math.imul(vt,Mt),w=Math.imul(vt,It),w=w+Math.imul(ut,Mt)|0,S=Math.imul(ut,It),I=I+Math.imul(St,ft)|0,w=w+Math.imul(St,Et)|0,w=w+Math.imul(xt,ft)|0,S=S+Math.imul(xt,Et)|0,I=I+Math.imul(bt,R)|0,w=w+Math.imul(bt,q)|0,w=w+Math.imul(yt,R)|0,S=S+Math.imul(yt,q)|0,I=I+Math.imul(dt,O)|0,w=w+Math.imul(dt,N)|0,w=w+Math.imul(mt,O)|0,S=S+Math.imul(mt,N)|0,I=I+Math.imul(_t,H)|0,w=w+Math.imul(_t,z)|0,w=w+Math.imul(gt,H)|0,S=S+Math.imul(gt,z)|0,I=I+Math.imul(At,Dt)|0,w=w+Math.imul(At,Jt)|0,w=w+Math.imul(at,Dt)|0,S=S+Math.imul(at,Jt)|0;var Kt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,I=Math.imul(vt,ft),w=Math.imul(vt,Et),w=w+Math.imul(ut,ft)|0,S=Math.imul(ut,Et),I=I+Math.imul(St,R)|0,w=w+Math.imul(St,q)|0,w=w+Math.imul(xt,R)|0,S=S+Math.imul(xt,q)|0,I=I+Math.imul(bt,O)|0,w=w+Math.imul(bt,N)|0,w=w+Math.imul(yt,O)|0,S=S+Math.imul(yt,N)|0,I=I+Math.imul(dt,H)|0,w=w+Math.imul(dt,z)|0,w=w+Math.imul(mt,H)|0,S=S+Math.imul(mt,z)|0,I=I+Math.imul(_t,Dt)|0,w=w+Math.imul(_t,Jt)|0,w=w+Math.imul(gt,Dt)|0,S=S+Math.imul(gt,Jt)|0;var it=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(it>>>26)|0,it&=67108863,I=Math.imul(vt,R),w=Math.imul(vt,q),w=w+Math.imul(ut,R)|0,S=Math.imul(ut,q),I=I+Math.imul(St,O)|0,w=w+Math.imul(St,N)|0,w=w+Math.imul(xt,O)|0,S=S+Math.imul(xt,N)|0,I=I+Math.imul(bt,H)|0,w=w+Math.imul(bt,z)|0,w=w+Math.imul(yt,H)|0,S=S+Math.imul(yt,z)|0,I=I+Math.imul(dt,Dt)|0,w=w+Math.imul(dt,Jt)|0,w=w+Math.imul(mt,Dt)|0,S=S+Math.imul(mt,Jt)|0;var nt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(nt>>>26)|0,nt&=67108863,I=Math.imul(vt,O),w=Math.imul(vt,N),w=w+Math.imul(ut,O)|0,S=Math.imul(ut,N),I=I+Math.imul(St,H)|0,w=w+Math.imul(St,z)|0,w=w+Math.imul(xt,H)|0,S=S+Math.imul(xt,z)|0,I=I+Math.imul(bt,Dt)|0,w=w+Math.imul(bt,Jt)|0,w=w+Math.imul(yt,Dt)|0,S=S+Math.imul(yt,Jt)|0;var Nt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,I=Math.imul(vt,H),w=Math.imul(vt,z),w=w+Math.imul(ut,H)|0,S=Math.imul(ut,z),I=I+Math.imul(St,Dt)|0,w=w+Math.imul(St,Jt)|0,w=w+Math.imul(xt,Dt)|0,S=S+Math.imul(xt,Jt)|0;var kt=(c+I|0)+((w&8191)<<13)|0;c=(S+(w>>>13)|0)+(kt>>>26)|0,kt&=67108863,I=Math.imul(vt,Dt),w=Math.imul(vt,Jt),w=w+Math.imul(ut,Dt)|0,S=Math.imul(ut,Jt);var Ut=(c+I|0)+((w&8191)<<13)|0;return c=(S+(w>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,f[0]=Qt,f[1]=Xt,f[2]=te,f[3]=ie,f[4]=re,f[5]=ne,f[6]=ae,f[7]=fe,f[8]=Vt,f[9]=Wt,f[10]=Ht,f[11]=Yt,f[12]=Zt,f[13]=Kt,f[14]=it,f[15]=nt,f[16]=Nt,f[17]=kt,f[18]=Ut,c!==0&&(f[19]=c,p.length++),p};Math.imul||(J=Rt);function Ot(h,s,u){u.negative=s.negative^h.negative,u.length=h.length+s.length;for(var p=0,g=0,l=0;l>>26)|0,g+=f>>>26,f&=67108863}u.words[l]=c,p=f,f=g}return p!==0?u.words[l]=p:u.length--,u._strip()}function ht(h,s,u){return Ot(h,s,u)}n.prototype.mulTo=function(s,u){var p,g=this.length+s.length;return this.length===10&&s.length===10?p=J(this,s,u):g<63?p=Rt(this,s,u):g<1024?p=Ot(this,s,u):p=ht(this,s,u),p};function Lt(h,s){this.x=h,this.y=s}Lt.prototype.makeRBT=function(s){for(var u=new Array(s),p=n.prototype._countBits(s)-1,g=0;g>=1;return g},Lt.prototype.permute=function(s,u,p,g,l,f){for(var c=0;c>>1)l++;return 1<>>13,p[2*f+1]=l&8191,l=l>>>13;for(f=2*u;f>=26,p+=l/67108864|0,p+=f>>>26,this.words[g]=f&67108863}return p!==0&&(this.words[g]=p,this.length++),u?this.ineg():this},n.prototype.muln=function(s){return this.clone().imuln(s)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(s){var u=qt(s);if(u.length===0)return new n(1);for(var p=this,g=0;g=0);var u=s%26,p=(s-u)/26,g=67108863>>>26-u<<26-u,l;if(u!==0){var f=0;for(l=0;l>>26-u}f&&(this.words[l]=f,this.length++)}if(p!==0){for(l=this.length-1;l>=0;l--)this.words[l+p]=this.words[l];for(l=0;l=0);var g;u?g=(u-u%26)/26:g=0;var l=s%26,f=Math.min((s-l)/26,this.length),c=67108863^67108863>>>l<f)for(this.length-=f,w=0;w=0&&(S!==0||w>=g);w--){var k=this.words[w]|0;this.words[w]=S<<26-l|k>>>l,S=k&c}return I&&S!==0&&(I.words[I.length++]=S),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(s,u,p){return r(this.negative===0),this.iushrn(s,u,p)},n.prototype.shln=function(s){return this.clone().ishln(s)},n.prototype.ushln=function(s){return this.clone().iushln(s)},n.prototype.shrn=function(s){return this.clone().ishrn(s)},n.prototype.ushrn=function(s){return this.clone().iushrn(s)},n.prototype.testn=function(s){r(typeof s=="number"&&s>=0);var u=s%26,p=(s-u)/26,g=1<=0);var u=s%26,p=(s-u)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(u!==0&&p++,this.length=Math.min(p,this.length),u!==0){var g=67108863^67108863>>>u<=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},n.prototype.isubn=function(s){if(r(typeof s=="number"),r(s<67108864),s<0)return this.iaddn(-s);if(this.negative!==0)return this.negative=0,this.iaddn(s),this.negative=1,this;if(this.words[0]-=s,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u>26)-(I/67108864|0),this.words[l+p]=f&67108863}for(;l>26,this.words[l+p]=f&67108863;if(c===0)return this._strip();for(r(c===-1),c=0,l=0;l>26,this.words[l]=f&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(s,u){var p=this.length-s.length,g=this.clone(),l=s,f=l.words[l.length-1]|0,c=this._countBits(f);p=26-c,p!==0&&(l=l.ushln(p),g.iushln(p),f=l.words[l.length-1]|0);var I=g.length-l.length,w;if(u!=="mod"){w=new n(null),w.length=I+1,w.words=new Array(w.length);for(var S=0;S=0;E--){var L=(g.words[l.length+E]|0)*67108864+(g.words[l.length+E-1]|0);for(L=Math.min(L/f|0,67108863),g._ishlnsubmul(l,L,E);g.negative!==0;)L--,g.negative=0,g._ishlnsubmul(l,1,E),g.isZero()||(g.negative^=1);w&&(w.words[E]=L)}return w&&w._strip(),g._strip(),u!=="div"&&p!==0&&g.iushrn(p),{div:w||null,mod:g}},n.prototype.divmod=function(s,u,p){if(r(!s.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var g,l,f;return this.negative!==0&&s.negative===0?(f=this.neg().divmod(s,u),u!=="mod"&&(g=f.div.neg()),u!=="div"&&(l=f.mod.neg(),p&&l.negative!==0&&l.iadd(s)),{div:g,mod:l}):this.negative===0&&s.negative!==0?(f=this.divmod(s.neg(),u),u!=="mod"&&(g=f.div.neg()),{div:g,mod:f.mod}):(this.negative&s.negative)!==0?(f=this.neg().divmod(s.neg(),u),u!=="div"&&(l=f.mod.neg(),p&&l.negative!==0&&l.isub(s)),{div:f.div,mod:l}):s.length>this.length||this.cmp(s)<0?{div:new n(0),mod:this}:s.length===1?u==="div"?{div:this.divn(s.words[0]),mod:null}:u==="mod"?{div:null,mod:new n(this.modrn(s.words[0]))}:{div:this.divn(s.words[0]),mod:new n(this.modrn(s.words[0]))}:this._wordDiv(s,u)},n.prototype.div=function(s){return this.divmod(s,"div",!1).div},n.prototype.mod=function(s){return this.divmod(s,"mod",!1).mod},n.prototype.umod=function(s){return this.divmod(s,"mod",!0).mod},n.prototype.divRound=function(s){var u=this.divmod(s);if(u.mod.isZero())return u.div;var p=u.div.negative!==0?u.mod.isub(s):u.mod,g=s.ushrn(1),l=s.andln(1),f=p.cmp(g);return f<0||l===1&&f===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},n.prototype.modrn=function(s){var u=s<0;u&&(s=-s),r(s<=67108863);for(var p=(1<<26)%s,g=0,l=this.length-1;l>=0;l--)g=(p*g+(this.words[l]|0))%s;return u?-g:g},n.prototype.modn=function(s){return this.modrn(s)},n.prototype.idivn=function(s){var u=s<0;u&&(s=-s),r(s<=67108863);for(var p=0,g=this.length-1;g>=0;g--){var l=(this.words[g]|0)+p*67108864;this.words[g]=l/s|0,p=l%s}return this._strip(),u?this.ineg():this},n.prototype.divn=function(s){return this.clone().idivn(s)},n.prototype.egcd=function(s){r(s.negative===0),r(!s.isZero());var u=this,p=s.clone();u.negative!==0?u=u.umod(s):u=u.clone();for(var g=new n(1),l=new n(0),f=new n(0),c=new n(1),I=0;u.isEven()&&p.isEven();)u.iushrn(1),p.iushrn(1),++I;for(var w=p.clone(),S=u.clone();!u.isZero();){for(var k=0,E=1;(u.words[0]&E)===0&&k<26;++k,E<<=1);if(k>0)for(u.iushrn(k);k-- >0;)(g.isOdd()||l.isOdd())&&(g.iadd(w),l.isub(S)),g.iushrn(1),l.iushrn(1);for(var L=0,$=1;(p.words[0]&$)===0&&L<26;++L,$<<=1);if(L>0)for(p.iushrn(L);L-- >0;)(f.isOdd()||c.isOdd())&&(f.iadd(w),c.isub(S)),f.iushrn(1),c.iushrn(1);u.cmp(p)>=0?(u.isub(p),g.isub(f),l.isub(c)):(p.isub(u),f.isub(g),c.isub(l))}return{a:f,b:c,gcd:p.iushln(I)}},n.prototype._invmp=function(s){r(s.negative===0),r(!s.isZero());var u=this,p=s.clone();u.negative!==0?u=u.umod(s):u=u.clone();for(var g=new n(1),l=new n(0),f=p.clone();u.cmpn(1)>0&&p.cmpn(1)>0;){for(var c=0,I=1;(u.words[0]&I)===0&&c<26;++c,I<<=1);if(c>0)for(u.iushrn(c);c-- >0;)g.isOdd()&&g.iadd(f),g.iushrn(1);for(var w=0,S=1;(p.words[0]&S)===0&&w<26;++w,S<<=1);if(w>0)for(p.iushrn(w);w-- >0;)l.isOdd()&&l.iadd(f),l.iushrn(1);u.cmp(p)>=0?(u.isub(p),g.isub(l)):(p.isub(u),l.isub(g))}var k;return u.cmpn(1)===0?k=g:k=l,k.cmpn(0)<0&&k.iadd(s),k},n.prototype.gcd=function(s){if(this.isZero())return s.abs();if(s.isZero())return this.abs();var u=this.clone(),p=s.clone();u.negative=0,p.negative=0;for(var g=0;u.isEven()&&p.isEven();g++)u.iushrn(1),p.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;p.isEven();)p.iushrn(1);var l=u.cmp(p);if(l<0){var f=u;u=p,p=f}else if(l===0||p.cmpn(1)===0)break;u.isub(p)}while(!0);return p.iushln(g)},n.prototype.invm=function(s){return this.egcd(s).a.umod(s)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(s){return this.words[0]&s},n.prototype.bincn=function(s){r(typeof s=="number");var u=s%26,p=(s-u)/26,g=1<>>26,c&=67108863,this.words[f]=c}return l!==0&&(this.words[f]=l,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(s){var u=s<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this._strip();var p;if(this.length>1)p=1;else{u&&(s=-s),r(s<=67108863,"Number is too big");var g=this.words[0]|0;p=g===s?0:gs.length)return 1;if(this.length=0;p--){var g=this.words[p]|0,l=s.words[p]|0;if(g!==l){gl&&(u=1);break}}return u},n.prototype.gtn=function(s){return this.cmpn(s)===1},n.prototype.gt=function(s){return this.cmp(s)===1},n.prototype.gten=function(s){return this.cmpn(s)>=0},n.prototype.gte=function(s){return this.cmp(s)>=0},n.prototype.ltn=function(s){return this.cmpn(s)===-1},n.prototype.lt=function(s){return this.cmp(s)===-1},n.prototype.lten=function(s){return this.cmpn(s)<=0},n.prototype.lte=function(s){return this.cmp(s)<=0},n.prototype.eqn=function(s){return this.cmpn(s)===0},n.prototype.eq=function(s){return this.cmp(s)===0},n.red=function(s){return new i(s)},n.prototype.toRed=function(s){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),s.convertTo(this)._forceRed(s)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(s){return this.red=s,this},n.prototype.forceRed=function(s){return r(!this.red,"Already a number in reduction context"),this._forceRed(s)},n.prototype.redAdd=function(s){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,s)},n.prototype.redIAdd=function(s){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,s)},n.prototype.redSub=function(s){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,s)},n.prototype.redISub=function(s){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,s)},n.prototype.redShl=function(s){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,s)},n.prototype.redMul=function(s){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.mul(this,s)},n.prototype.redIMul=function(s){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.imul(this,s)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(s){return r(this.red&&!s.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,s)};var ee={k256:null,p224:null,p192:null,p25519:null};function $t(h,s){this.name=h,this.p=new n(s,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$t.prototype._tmp=function(){var s=new n(null);return s.words=new Array(Math.ceil(this.n/13)),s},$t.prototype.ireduce=function(s){var u=s,p;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),p=u.bitLength();while(p>this.n);var g=p0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},$t.prototype.split=function(s,u){s.iushrn(this.n,0,u)},$t.prototype.imulK=function(s){return s.imul(this.k)};function Gt(){$t.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Gt,$t),Gt.prototype.split=function(s,u){for(var p=4194303,g=Math.min(s.length,9),l=0;l>>22,f=c}f>>>=22,s.words[l-10]=f,f===0&&s.length>10?s.length-=10:s.length-=9},Gt.prototype.imulK=function(s){s.words[s.length]=0,s.words[s.length+1]=0,s.length+=2;for(var u=0,p=0;p>>=26,s.words[p]=l,u=g}return u!==0&&(s.words[s.length++]=u),s},n._prime=function(s){if(ee[s])return ee[s];var u;if(s==="k256")u=new Gt;else if(s==="p224")u=new tt;else if(s==="p192")u=new rt;else if(s==="p25519")u=new v;else throw new Error("Unknown prime "+s);return ee[s]=u,u};function i(h){if(typeof h=="string"){var s=n._prime(h);this.m=s.p,this.prime=s}else r(h.gtn(1),"modulus must be greater than 1"),this.m=h,this.prime=null}i.prototype._verify1=function(s){r(s.negative===0,"red works only with positives"),r(s.red,"red works only with red numbers")},i.prototype._verify2=function(s,u){r((s.negative|u.negative)===0,"red works only with positives"),r(s.red&&s.red===u.red,"red works only with red numbers")},i.prototype.imod=function(s){return this.prime?this.prime.ireduce(s)._forceRed(this):(B(s,s.umod(this.m)._forceRed(this)),s)},i.prototype.neg=function(s){return s.isZero()?s.clone():this.m.sub(s)._forceRed(this)},i.prototype.add=function(s,u){this._verify2(s,u);var p=s.add(u);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},i.prototype.iadd=function(s,u){this._verify2(s,u);var p=s.iadd(u);return p.cmp(this.m)>=0&&p.isub(this.m),p},i.prototype.sub=function(s,u){this._verify2(s,u);var p=s.sub(u);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},i.prototype.isub=function(s,u){this._verify2(s,u);var p=s.isub(u);return p.cmpn(0)<0&&p.iadd(this.m),p},i.prototype.shl=function(s,u){return this._verify1(s),this.imod(s.ushln(u))},i.prototype.imul=function(s,u){return this._verify2(s,u),this.imod(s.imul(u))},i.prototype.mul=function(s,u){return this._verify2(s,u),this.imod(s.mul(u))},i.prototype.isqr=function(s){return this.imul(s,s.clone())},i.prototype.sqr=function(s){return this.mul(s,s)},i.prototype.sqrt=function(s){if(s.isZero())return s.clone();var u=this.m.andln(3);if(r(u%2===1),u===3){var p=this.m.add(new n(1)).iushrn(2);return this.pow(s,p)}for(var g=this.m.subn(1),l=0;!g.isZero()&&g.andln(1)===0;)l++,g.iushrn(1);r(!g.isZero());var f=new n(1).toRed(this),c=f.redNeg(),I=this.m.subn(1).iushrn(1),w=this.m.bitLength();for(w=new n(2*w*w).toRed(this);this.pow(w,I).cmp(c)!==0;)w.redIAdd(c);for(var S=this.pow(w,g),k=this.pow(s,g.addn(1).iushrn(1)),E=this.pow(s,g),L=l;E.cmp(f)!==0;){for(var $=E,F=0;$.cmp(f)!==0;F++)$=$.redSqr();r(F=0;l--){for(var S=u.words[l],k=w-1;k>=0;k--){var E=S>>k&1;if(f!==g[0]&&(f=this.sqr(f)),E===0&&c===0){I=0;continue}c<<=1,c|=E,I++,!(I!==p&&(l!==0||k!==0))&&(f=this.mul(f,g[c]),I=0,c=0)}w=26}return f},i.prototype.convertTo=function(s){var u=s.umod(this.m);return u===s?u.clone():u},i.prototype.convertFrom=function(s){var u=s.clone();return u.red=null,u},n.mont=function(s){return new o(s)};function o(h){i.call(this,h),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(o,i),o.prototype.convertTo=function(s){return this.imod(s.ushln(this.shift))},o.prototype.convertFrom=function(s){var u=this.imod(s.mul(this.rinv));return u.red=null,u},o.prototype.imul=function(s,u){if(s.isZero()||u.isZero())return s.words[0]=0,s.length=1,s;var p=s.imul(u),g=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=p.isub(g).iushrn(this.shift),f=l;return l.cmp(this.m)>=0?f=l.isub(this.m):l.cmpn(0)<0&&(f=l.iadd(this.m)),f._forceRed(this)},o.prototype.mul=function(s,u){if(s.isZero()||u.isZero())return new n(0)._forceRed(this);var p=s.mul(u),g=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=p.isub(g).iushrn(this.shift),f=l;return l.cmp(this.m)>=0?f=l.isub(this.m):l.cmpn(0)<0&&(f=l.iadd(this.m)),f._forceRed(this)},o.prototype.invm=function(s){var u=this.imod(s._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof xv>"u"||xv,vM)});var fu=P((Qrt,mM)=>{M();var ka=nu(),zN=qf();function VN(e){var t=pM(e),r=t.toRed(ka.mont(e.modulus)).redPow(new ka(e.publicExponent)).fromRed();return{blinder:r,unblinder:t.invm(e.modulus)}}function pM(e){var t=e.modulus.byteLength(),r;do r=new ka(zN(t));while(r.cmp(e.modulus)>=0||!r.umod(e.prime1)||!r.umod(e.prime2));return r}function gM(e,t){var r=VN(t),a=t.modulus.byteLength(),n=new ka(e).mul(r.blinder).umod(t.modulus),d=n.toRed(ka.mont(t.prime1)),m=n.toRed(ka.mont(t.prime2)),b=t.coefficient,A=t.prime1,B=t.prime2,C=d.redPow(t.exponent1).fromRed(),D=m.redPow(t.exponent2).fromRed(),K=C.isub(D).imul(b).umod(A).imul(B);return D.iadd(K).imul(r.unblinder).umod(t.modulus).toArrayLike(U,"be",a)}gM.getr=pM;mM.exports=gM});var bM=P((jrt,YN)=>{YN.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var Yi=P((yM,wv)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof wv>"u"||wv,yM)});var Mv=P(MM=>{"use strict";M();var au=MM;function GN(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e!="string"){for(var a=0;a>8,m=n&255;d?r.push(d,m):r.push(m)}return r}au.toArray=GN;function xM(e){return e.length===1?"0"+e:e}au.zero2=xM;function wM(e){for(var t="",r=0;r{"use strict";M();var Ei=AM,$N=Yi(),ZN=jr(),ou=Mv();Ei.assert=ZN;Ei.toArray=ou.toArray;Ei.zero2=ou.zero2;Ei.toHex=ou.toHex;Ei.encode=ou.encode;function WN(e,t,r){var a=new Array(Math.max(e.bitLength(),r)+1);a.fill(0);for(var n=1<(n>>1)-1?b=(n>>1)-A:b=A,d.isubn(b)):b=0,a[m]=b,d.iushrn(1)}return a}Ei.getNAF=WN;function JN(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var a=0,n=0,d;e.cmpn(-a)>0||t.cmpn(-n)>0;){var m=e.andln(3)+a&3,b=t.andln(3)+n&3;m===3&&(m=-1),b===3&&(b=-1);var A;(m&1)===0?A=0:(d=e.andln(7)+a&7,(d===3||d===5)&&b===2?A=-m:A=m),r[0].push(A);var B;(b&1)===0?B=0:(d=t.andln(7)+n&7,(d===3||d===5)&&m===2?B=-b:B=b),r[1].push(B),2*a===A+1&&(a=1-a),2*n===B+1&&(n=1-n),e.iushrn(1),t.iushrn(1)}return r}Ei.getJSF=JN;function XN(e,t,r){var a="_"+t;e.prototype[t]=function(){return this[a]!==void 0?this[a]:this[a]=r.call(this)}}Ei.cachedProperty=XN;function tF(e){return typeof e=="string"?Ei.toArray(e,"hex"):e}Ei.parseBytes=tF;function eF(e){return new $N(e,"hex","le")}Ei.intFromLE=eF});var Is=P((Zrt,_M)=>{"use strict";M();var Vf=Yi(),_s=zr(),su=_s.getNAF,rF=_s.getJSF,hu=_s.assert;function rf(e,t){this.type=e,this.p=new Vf(t.p,16),this.red=t.prime?Vf.red(t.prime):Vf.mont(this.p),this.zero=new Vf(0).toRed(this.red),this.one=new Vf(1).toRed(this.red),this.two=new Vf(2).toRed(this.red),this.n=t.n&&new Vf(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}_M.exports=rf;rf.prototype.point=function(){throw new Error("Not implemented")};rf.prototype.validate=function(){throw new Error("Not implemented")};rf.prototype._fixedNafMul=function(t,r){hu(t.precomputed);var a=t._getDoubles(),n=su(r,1,this._bitLength),d=(1<=b;B--)A=(A<<1)+n[B];m.push(A)}for(var C=this.jpoint(null,null,null),D=this.jpoint(null,null,null),K=d;K>0;K--){for(b=0;b=0;A--){for(var B=0;A>=0&&m[A]===0;A--)B++;if(A>=0&&B++,b=b.dblp(B),A<0)break;var C=m[A];hu(C!==0),t.type==="affine"?C>0?b=b.mixedAdd(d[C-1>>1]):b=b.mixedAdd(d[-C-1>>1].neg()):C>0?b=b.add(d[C-1>>1]):b=b.add(d[-C-1>>1].neg())}return t.type==="affine"?b.toP():b};rf.prototype._wnafMulAdd=function(t,r,a,n,d){var m=this._wnafT1,b=this._wnafT2,A=this._wnafT3,B=0,C,D,K;for(C=0;C=1;C-=2){var Z=C-1,qt=C;if(m[Z]!==1||m[qt]!==1){A[Z]=su(a[Z],m[Z],this._bitLength),A[qt]=su(a[qt],m[qt],this._bitLength),B=Math.max(A[Z].length,B),B=Math.max(A[qt].length,B);continue}var Rt=[r[Z],null,null,r[qt]];r[Z].y.cmp(r[qt].y)===0?(Rt[1]=r[Z].add(r[qt]),Rt[2]=r[Z].toJ().mixedAdd(r[qt].neg())):r[Z].y.cmp(r[qt].y.redNeg())===0?(Rt[1]=r[Z].toJ().mixedAdd(r[qt]),Rt[2]=r[Z].add(r[qt].neg())):(Rt[1]=r[Z].toJ().mixedAdd(r[qt]),Rt[2]=r[Z].toJ().mixedAdd(r[qt].neg()));var J=[-3,-1,-5,-7,0,7,5,1,3],Ot=rF(a[Z],a[qt]);for(B=Math.max(Ot[0].length,B),A[Z]=new Array(B),A[qt]=new Array(B),D=0;D=0;C--){for(var Gt=0;C>=0;){var tt=!0;for(D=0;D=0&&Gt++,ee=ee.dblp(Gt),C<0)break;for(D=0;D0?K=b[D][rt-1>>1]:rt<0&&(K=b[D][-rt-1>>1].neg()),K.type==="affine"?ee=ee.mixedAdd(K):ee=ee.add(K))}}for(C=0;C=Math.ceil((t.bitLength()+1)/r.step):!1};si.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var a=[this],n=this,d=0;d{"use strict";M();var iF=zr(),tr=Yi(),Av=ge(),Pa=Is(),nF=iF.assert;function hi(e){Pa.call(this,"short",e),this.a=new tr(e.a,16).toRed(this.red),this.b=new tr(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Av(hi,Pa);IM.exports=hi;hi.prototype._getEndomorphism=function(t){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,a;if(t.beta)r=new tr(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);r=n[0].cmp(n[1])<0?n[0]:n[1],r=r.toRed(this.red)}if(t.lambda)a=new tr(t.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(r))===0?a=d[0]:(a=d[1],nF(this.g.mul(a).x.cmp(this.g.x.redMul(r))===0))}var m;return t.basis?m=t.basis.map(function(b){return{a:new tr(b.a,16),b:new tr(b.b,16)}}):m=this._getEndoBasis(a),{beta:r,lambda:a,basis:m}}};hi.prototype._getEndoRoots=function(t){var r=t===this.p?this.red:tr.mont(t),a=new tr(2).toRed(r).redInvm(),n=a.redNeg(),d=new tr(3).toRed(r).redNeg().redSqrt().redMul(a),m=n.redAdd(d).fromRed(),b=n.redSub(d).fromRed();return[m,b]};hi.prototype._getEndoBasis=function(t){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),a=t,n=this.n.clone(),d=new tr(1),m=new tr(0),b=new tr(0),A=new tr(1),B,C,D,K,j,Z,qt,Rt=0,J,Ot;a.cmpn(0)!==0;){var ht=n.div(a);J=n.sub(ht.mul(a)),Ot=b.sub(ht.mul(d));var Lt=A.sub(ht.mul(m));if(!D&&J.cmp(r)<0)B=qt.neg(),C=d,D=J.neg(),K=Ot;else if(D&&++Rt===2)break;qt=J,n=a,a=J,b=d,d=Ot,A=m,m=Lt}j=J.neg(),Z=Ot;var ee=D.sqr().add(K.sqr()),$t=j.sqr().add(Z.sqr());return $t.cmp(ee)>=0&&(j=B,Z=C),D.negative&&(D=D.neg(),K=K.neg()),j.negative&&(j=j.neg(),Z=Z.neg()),[{a:D,b:K},{a:j,b:Z}]};hi.prototype._endoSplit=function(t){var r=this.endo.basis,a=r[0],n=r[1],d=n.b.mul(t).divRound(this.n),m=a.b.neg().mul(t).divRound(this.n),b=d.mul(a.a),A=m.mul(n.a),B=d.mul(a.b),C=m.mul(n.b),D=t.sub(b).sub(A),K=B.add(C).neg();return{k1:D,k2:K}};hi.prototype.pointFromX=function(t,r){t=new tr(t,16),t.red||(t=t.toRed(this.red));var a=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=a.redSqrt();if(n.redSqr().redSub(a).cmp(this.zero)!==0)throw new Error("invalid point");var d=n.fromRed().isOdd();return(r&&!d||!r&&d)&&(n=n.redNeg()),this.point(t,n)};hi.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,a=t.y,n=this.a.redMul(r),d=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return a.redSqr().redISub(d).cmpn(0)===0};hi.prototype._endoWnafMulAdd=function(t,r,a){for(var n=this._endoWnafT1,d=this._endoWnafT2,m=0;m":""};ur.prototype.isInfinity=function(){return this.inf};ur.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var a=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,n)};ur.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,a=this.x.redSqr(),n=t.redInvm(),d=a.redAdd(a).redIAdd(a).redIAdd(r).redMul(n),m=d.redSqr().redISub(this.x.redAdd(this.x)),b=d.redMul(this.x.redSub(m)).redISub(this.y);return this.curve.point(m,b)};ur.prototype.getX=function(){return this.x.fromRed()};ur.prototype.getY=function(){return this.y.fromRed()};ur.prototype.mul=function(t){return t=new tr(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)};ur.prototype.mulAdd=function(t,r,a){var n=[this,r],d=[t,a];return this.curve.endo?this.curve._endoWnafMulAdd(n,d):this.curve._wnafMulAdd(1,n,d,2)};ur.prototype.jmulAdd=function(t,r,a){var n=[this,r],d=[t,a];return this.curve.endo?this.curve._endoWnafMulAdd(n,d,!0):this.curve._wnafMulAdd(1,n,d,2,!0)};ur.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)};ur.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var a=this.precomputed,n=function(d){return d.neg()};r.precomputed={naf:a.naf&&{wnd:a.naf.wnd,points:a.naf.points.map(n)},doubles:a.doubles&&{step:a.doubles.step,points:a.doubles.points.map(n)}}}return r};ur.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function pr(e,t,r,a){Pa.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&a===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new tr(0)):(this.x=new tr(t,16),this.y=new tr(r,16),this.z=new tr(a,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Av(pr,Pa.BasePoint);hi.prototype.jpoint=function(t,r,a){return new pr(this,t,r,a)};pr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),a=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(a,n)};pr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};pr.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),a=this.z.redSqr(),n=this.x.redMul(r),d=t.x.redMul(a),m=this.y.redMul(r.redMul(t.z)),b=t.y.redMul(a.redMul(this.z)),A=n.redSub(d),B=m.redSub(b);if(A.cmpn(0)===0)return B.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var C=A.redSqr(),D=C.redMul(A),K=n.redMul(C),j=B.redSqr().redIAdd(D).redISub(K).redISub(K),Z=B.redMul(K.redISub(j)).redISub(m.redMul(D)),qt=this.z.redMul(t.z).redMul(A);return this.curve.jpoint(j,Z,qt)};pr.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),a=this.x,n=t.x.redMul(r),d=this.y,m=t.y.redMul(r).redMul(this.z),b=a.redSub(n),A=d.redSub(m);if(b.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var B=b.redSqr(),C=B.redMul(b),D=a.redMul(B),K=A.redSqr().redIAdd(C).redISub(D).redISub(D),j=A.redMul(D.redISub(K)).redISub(d.redMul(C)),Z=this.z.redMul(b);return this.curve.jpoint(K,j,Z)};pr.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var a=this;for(r=0;r=0)return!1;if(a.redIAdd(d),this.x.cmp(a)===0)return!0}};pr.prototype.inspect=function(){return this.isInfinity()?"":""};pr.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var CM=P((tit,BM)=>{"use strict";M();var Ua=Yi(),SM=ge(),uu=Is(),fF=zr();function La(e){uu.call(this,"mont",e),this.a=new Ua(e.a,16).toRed(this.red),this.b=new Ua(e.b,16).toRed(this.red),this.i4=new Ua(4).toRed(this.red).redInvm(),this.two=new Ua(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}SM(La,uu);BM.exports=La;La.prototype.validate=function(t){var r=t.normalize().x,a=r.redSqr(),n=a.redMul(r).redAdd(a.redMul(this.a)).redAdd(r),d=n.redSqrt();return d.redSqr().cmp(n)===0};function lr(e,t,r){uu.BasePoint.call(this,e,"projective"),t===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Ua(t,16),this.z=new Ua(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}SM(lr,uu.BasePoint);La.prototype.decodePoint=function(t,r){return this.point(fF.toArray(t,r),1)};La.prototype.point=function(t,r){return new lr(this,t,r)};La.prototype.pointFromJSON=function(t){return lr.fromJSON(this,t)};lr.prototype.precompute=function(){};lr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};lr.fromJSON=function(t,r){return new lr(t,r[0],r[1]||t.one)};lr.prototype.inspect=function(){return this.isInfinity()?"":""};lr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};lr.prototype.dbl=function(){var t=this.x.redAdd(this.z),r=t.redSqr(),a=this.x.redSub(this.z),n=a.redSqr(),d=r.redSub(n),m=r.redMul(n),b=d.redMul(n.redAdd(this.curve.a24.redMul(d)));return this.curve.point(m,b)};lr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.diffAdd=function(t,r){var a=this.x.redAdd(this.z),n=this.x.redSub(this.z),d=t.x.redAdd(t.z),m=t.x.redSub(t.z),b=m.redMul(a),A=d.redMul(n),B=r.z.redMul(b.redAdd(A).redSqr()),C=r.x.redMul(b.redISub(A).redSqr());return this.curve.point(B,C)};lr.prototype.mul=function(t){for(var r=t.clone(),a=this,n=this.curve.point(null,null),d=this,m=[];r.cmpn(0)!==0;r.iushrn(1))m.push(r.andln(1));for(var b=m.length-1;b>=0;b--)m[b]===0?(a=a.diffAdd(n,d),n=n.dbl()):(n=a.diffAdd(n,d),a=a.dbl());return n};lr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.eq=function(t){return this.getX().cmp(t.getX())===0};lr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};lr.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var TM=P((rit,RM)=>{"use strict";M();var aF=zr(),_n=Yi(),qM=ge(),lu=Is(),oF=aF.assert;function Gi(e){this.twisted=(e.a|0)!==1,this.mOneA=this.twisted&&(e.a|0)===-1,this.extended=this.mOneA,lu.call(this,"edwards",e),this.a=new _n(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new _n(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new _n(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),oF(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(e.c|0)===1}qM(Gi,lu);RM.exports=Gi;Gi.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)};Gi.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)};Gi.prototype.jpoint=function(t,r,a,n){return this.point(t,r,a,n)};Gi.prototype.pointFromX=function(t,r){t=new _n(t,16),t.red||(t=t.toRed(this.red));var a=t.redSqr(),n=this.c2.redSub(this.a.redMul(a)),d=this.one.redSub(this.c2.redMul(this.d).redMul(a)),m=n.redMul(d.redInvm()),b=m.redSqrt();if(b.redSqr().redSub(m).cmp(this.zero)!==0)throw new Error("invalid point");var A=b.fromRed().isOdd();return(r&&!A||!r&&A)&&(b=b.redNeg()),this.point(t,b)};Gi.prototype.pointFromY=function(t,r){t=new _n(t,16),t.red||(t=t.toRed(this.red));var a=t.redSqr(),n=a.redSub(this.c2),d=a.redMul(this.d).redMul(this.c2).redSub(this.a),m=n.redMul(d.redInvm());if(m.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,t)}var b=m.redSqrt();if(b.redSqr().redSub(m).cmp(this.zero)!==0)throw new Error("invalid point");return b.fromRed().isOdd()!==r&&(b=b.redNeg()),this.point(b,t)};Gi.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var r=t.x.redSqr(),a=t.y.redSqr(),n=r.redMul(this.a).redAdd(a),d=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(a)));return n.cmp(d)===0};function Ye(e,t,r,a,n){lu.BasePoint.call(this,e,"projective"),t===null&&r===null&&a===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new _n(t,16),this.y=new _n(r,16),this.z=a?new _n(a,16):this.curve.one,this.t=n&&new _n(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}qM(Ye,lu.BasePoint);Gi.prototype.pointFromJSON=function(t){return Ye.fromJSON(this,t)};Gi.prototype.point=function(t,r,a,n){return new Ye(this,t,r,a,n)};Ye.fromJSON=function(t,r){return new Ye(t,r[0],r[1],r[2])};Ye.prototype.inspect=function(){return this.isInfinity()?"":""};Ye.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Ye.prototype._extDbl=function(){var t=this.x.redSqr(),r=this.y.redSqr(),a=this.z.redSqr();a=a.redIAdd(a);var n=this.curve._mulA(t),d=this.x.redAdd(this.y).redSqr().redISub(t).redISub(r),m=n.redAdd(r),b=m.redSub(a),A=n.redSub(r),B=d.redMul(b),C=m.redMul(A),D=d.redMul(A),K=b.redMul(m);return this.curve.point(B,C,K,D)};Ye.prototype._projDbl=function(){var t=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),a=this.y.redSqr(),n,d,m,b,A,B;if(this.curve.twisted){b=this.curve._mulA(r);var C=b.redAdd(a);this.zOne?(n=t.redSub(r).redSub(a).redMul(C.redSub(this.curve.two)),d=C.redMul(b.redSub(a)),m=C.redSqr().redSub(C).redSub(C)):(A=this.z.redSqr(),B=C.redSub(A).redISub(A),n=t.redSub(r).redISub(a).redMul(B),d=C.redMul(b.redSub(a)),m=C.redMul(B))}else b=r.redAdd(a),A=this.curve._mulC(this.z).redSqr(),B=b.redSub(A).redSub(A),n=this.curve._mulC(t.redISub(b)).redMul(B),d=this.curve._mulC(b).redMul(r.redISub(a)),m=b.redMul(B);return this.curve.point(n,d,m)};Ye.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};Ye.prototype._extAdd=function(t){var r=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),a=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),d=this.z.redMul(t.z.redAdd(t.z)),m=a.redSub(r),b=d.redSub(n),A=d.redAdd(n),B=a.redAdd(r),C=m.redMul(b),D=A.redMul(B),K=m.redMul(B),j=b.redMul(A);return this.curve.point(C,D,j,K)};Ye.prototype._projAdd=function(t){var r=this.z.redMul(t.z),a=r.redSqr(),n=this.x.redMul(t.x),d=this.y.redMul(t.y),m=this.curve.d.redMul(n).redMul(d),b=a.redSub(m),A=a.redAdd(m),B=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(n).redISub(d),C=r.redMul(b).redMul(B),D,K;return this.curve.twisted?(D=r.redMul(A).redMul(d.redSub(this.curve._mulA(n))),K=b.redMul(A)):(D=r.redMul(A).redMul(d.redSub(n)),K=this.curve._mulC(b).redMul(A)),this.curve.point(C,D,K)};Ye.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)};Ye.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)};Ye.prototype.mulAdd=function(t,r,a){return this.curve._wnafMulAdd(1,[this,r],[t,a],2,!1)};Ye.prototype.jmulAdd=function(t,r,a){return this.curve._wnafMulAdd(1,[this,r],[t,a],2,!0)};Ye.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this};Ye.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Ye.prototype.getX=function(){return this.normalize(),this.x.fromRed()};Ye.prototype.getY=function(){return this.normalize(),this.y.fromRed()};Ye.prototype.eq=function(t){return this===t||this.getX().cmp(t.getX())===0&&this.getY().cmp(t.getY())===0};Ye.prototype.eqXToP=function(t){var r=t.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var a=t.clone(),n=this.curve.redN.redMul(this.z);;){if(a.iadd(this.curve.n),a.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(n),this.x.cmp(r)===0)return!0}};Ye.prototype.toP=Ye.prototype.normalize;Ye.prototype.mixedAdd=Ye.prototype.add});var _v=P(OM=>{"use strict";M();var cu=OM;cu.base=Is();cu.short=EM();cu.mont=CM();cu.edwards=TM()});var Si=P(Ve=>{"use strict";M();var sF=jr(),hF=ge();Ve.inherits=hF;function uF(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function lF(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[a++]=d&63|128):uF(e,n)?(d=65536+((d&1023)<<10)+(e.charCodeAt(++n)&1023),r[a++]=d>>18|240,r[a++]=d>>12&63|128,r[a++]=d>>6&63|128,r[a++]=d&63|128):(r[a++]=d>>12|224,r[a++]=d>>6&63|128,r[a++]=d&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}Ve.htonl=DM;function dF(e,t){for(var r="",a=0;a>>0}return d}Ve.join32=vF;function pF(e,t){for(var r=new Array(e.length*4),a=0,n=0;a>>24,r[n+1]=d>>>16&255,r[n+2]=d>>>8&255,r[n+3]=d&255):(r[n+3]=d>>>24,r[n+2]=d>>>16&255,r[n+1]=d>>>8&255,r[n]=d&255)}return r}Ve.split32=pF;function gF(e,t){return e>>>t|e<<32-t}Ve.rotr32=gF;function mF(e,t){return e<>>32-t}Ve.rotl32=mF;function bF(e,t){return e+t>>>0}Ve.sum32=bF;function yF(e,t,r){return e+t+r>>>0}Ve.sum32_3=yF;function xF(e,t,r,a){return e+t+r+a>>>0}Ve.sum32_4=xF;function wF(e,t,r,a,n){return e+t+r+a+n>>>0}Ve.sum32_5=wF;function MF(e,t,r,a){var n=e[t],d=e[t+1],m=a+d>>>0,b=(m>>0,e[t+1]=m}Ve.sum64=MF;function AF(e,t,r,a){var n=t+a>>>0,d=(n>>0}Ve.sum64_hi=AF;function _F(e,t,r,a){var n=t+a;return n>>>0}Ve.sum64_lo=_F;function IF(e,t,r,a,n,d,m,b){var A=0,B=t;B=B+a>>>0,A+=B>>0,A+=B>>0,A+=B>>0}Ve.sum64_4_hi=IF;function EF(e,t,r,a,n,d,m,b){var A=t+a+d+b;return A>>>0}Ve.sum64_4_lo=EF;function SF(e,t,r,a,n,d,m,b,A,B){var C=0,D=t;D=D+a>>>0,C+=D>>0,C+=D>>0,C+=D>>0,C+=D>>0}Ve.sum64_5_hi=SF;function BF(e,t,r,a,n,d,m,b,A,B){var C=t+a+d+b+B;return C>>>0}Ve.sum64_5_lo=BF;function CF(e,t,r){var a=t<<32-r|e>>>r;return a>>>0}Ve.rotr64_hi=CF;function qF(e,t,r){var a=e<<32-r|t>>>r;return a>>>0}Ve.rotr64_lo=qF;function RF(e,t,r){return e>>>r}Ve.shr64_hi=RF;function TF(e,t,r){var a=e<<32-r|t>>>r;return a>>>0}Ve.shr64_lo=TF});var Na=P(LM=>{"use strict";M();var UM=Si(),OF=jr();function du(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}LM.BlockHash=du;du.prototype.update=function(t,r){if(t=UM.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var a=t.length%this._delta8;this.pending=t.slice(t.length-a,t.length),this.pending.length===0&&(this.pending=null),t=UM.join32(t,0,t.length-a,this.endian);for(var n=0;n>>24&255,n[d++]=t>>>16&255,n[d++]=t>>>8&255,n[d++]=t&255}else for(n[d++]=t&255,n[d++]=t>>>8&255,n[d++]=t>>>16&255,n[d++]=t>>>24&255,n[d++]=0,n[d++]=0,n[d++]=0,n[d++]=0,m=8;m{"use strict";M();var DF=Si(),$i=DF.rotr32;function kF(e,t,r,a){if(e===0)return NM(t,r,a);if(e===1||e===3)return KM(t,r,a);if(e===2)return FM(t,r,a)}In.ft_1=kF;function NM(e,t,r){return e&t^~e&r}In.ch32=NM;function FM(e,t,r){return e&t^e&r^t&r}In.maj32=FM;function KM(e,t,r){return e^t^r}In.p32=KM;function PF(e){return $i(e,2)^$i(e,13)^$i(e,22)}In.s0_256=PF;function UF(e){return $i(e,6)^$i(e,11)^$i(e,25)}In.s1_256=UF;function LF(e){return $i(e,7)^$i(e,18)^e>>>3}In.g0_256=LF;function NF(e){return $i(e,17)^$i(e,19)^e>>>10}In.g1_256=NF});var jM=P((cit,HM)=>{"use strict";M();var Fa=Si(),FF=Na(),KF=Iv(),Ev=Fa.rotl32,Es=Fa.sum32,QF=Fa.sum32_5,HF=KF.ft_1,QM=FF.BlockHash,jF=[1518500249,1859775393,2400959708,3395469782];function Zi(){if(!(this instanceof Zi))return new Zi;QM.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Fa.inherits(Zi,QM);HM.exports=Zi;Zi.blockSize=512;Zi.outSize=160;Zi.hmacStrength=80;Zi.padLength=64;Zi.prototype._update=function(t,r){for(var a=this.W,n=0;n<16;n++)a[n]=t[r+n];for(;n{"use strict";M();var Ka=Si(),zF=Na(),Qa=Iv(),VF=jr(),Bi=Ka.sum32,YF=Ka.sum32_4,GF=Ka.sum32_5,$F=Qa.ch32,ZF=Qa.maj32,WF=Qa.s0_256,JF=Qa.s1_256,XF=Qa.g0_256,tK=Qa.g1_256,zM=zF.BlockHash,eK=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Wi(){if(!(this instanceof Wi))return new Wi;zM.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=eK,this.W=new Array(64)}Ka.inherits(Wi,zM);VM.exports=Wi;Wi.blockSize=512;Wi.outSize=256;Wi.hmacStrength=192;Wi.padLength=64;Wi.prototype._update=function(t,r){for(var a=this.W,n=0;n<16;n++)a[n]=t[r+n];for(;n{"use strict";M();var Bv=Si(),YM=Sv();function En(){if(!(this instanceof En))return new En;YM.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}Bv.inherits(En,YM);GM.exports=En;En.blockSize=512;En.outSize=224;En.hmacStrength=192;En.padLength=64;En.prototype._digest=function(t){return t==="hex"?Bv.toHex32(this.h.slice(0,7),"big"):Bv.split32(this.h.slice(0,7),"big")}});var Rv=P((bit,XM)=>{"use strict";M();var Lr=Si(),rK=Na(),iK=jr(),Ji=Lr.rotr64_hi,Xi=Lr.rotr64_lo,ZM=Lr.shr64_hi,WM=Lr.shr64_lo,nf=Lr.sum64,Cv=Lr.sum64_hi,qv=Lr.sum64_lo,nK=Lr.sum64_4_hi,fK=Lr.sum64_4_lo,aK=Lr.sum64_5_hi,oK=Lr.sum64_5_lo,JM=rK.BlockHash,sK=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Ci(){if(!(this instanceof Ci))return new Ci;JM.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=sK,this.W=new Array(160)}Lr.inherits(Ci,JM);XM.exports=Ci;Ci.blockSize=1024;Ci.outSize=512;Ci.hmacStrength=192;Ci.padLength=128;Ci.prototype._prepareBlock=function(t,r){for(var a=this.W,n=0;n<32;n++)a[n]=t[r+n];for(;n{"use strict";M();var Tv=Si(),t7=Rv();function Sn(){if(!(this instanceof Sn))return new Sn;t7.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}Tv.inherits(Sn,t7);e7.exports=Sn;Sn.blockSize=1024;Sn.outSize=384;Sn.hmacStrength=192;Sn.padLength=128;Sn.prototype._digest=function(t){return t==="hex"?Tv.toHex32(this.h.slice(0,12),"big"):Tv.split32(this.h.slice(0,12),"big")}});var i7=P(Ha=>{"use strict";M();Ha.sha1=jM();Ha.sha224=$M();Ha.sha256=Sv();Ha.sha384=r7();Ha.sha512=Rv()});var h7=P(s7=>{"use strict";M();var Yf=Si(),wK=Na(),vu=Yf.rotl32,n7=Yf.sum32,Ss=Yf.sum32_3,f7=Yf.sum32_4,o7=wK.BlockHash;function tn(){if(!(this instanceof tn))return new tn;o7.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Yf.inherits(tn,o7);s7.ripemd160=tn;tn.blockSize=512;tn.outSize=160;tn.hmacStrength=192;tn.padLength=64;tn.prototype._update=function(t,r){for(var a=this.h[0],n=this.h[1],d=this.h[2],m=this.h[3],b=this.h[4],A=a,B=n,C=d,D=m,K=b,j=0;j<80;j++){var Z=n7(vu(f7(a,a7(j,n,d,m),t[_K[j]+r],MK(j)),EK[j]),b);a=b,b=m,m=vu(d,10),d=n,n=Z,Z=n7(vu(f7(A,a7(79-j,B,C,D),t[IK[j]+r],AK(j)),SK[j]),K),A=K,K=D,D=vu(C,10),C=B,B=Z}Z=Ss(this.h[1],d,D),this.h[1]=Ss(this.h[2],m,K),this.h[2]=Ss(this.h[3],b,A),this.h[3]=Ss(this.h[4],a,B),this.h[4]=Ss(this.h[0],n,C),this.h[0]=Z};tn.prototype._digest=function(t){return t==="hex"?Yf.toHex32(this.h,"little"):Yf.split32(this.h,"little")};function a7(e,t,r,a){return e<=15?t^r^a:e<=31?t&r|~t&a:e<=47?(t|~r)^a:e<=63?t&a|r&~a:t^(r|~a)}function MK(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function AK(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}var _K=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],IK=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],EK=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],SK=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var l7=P((Eit,u7)=>{"use strict";M();var BK=Si(),CK=jr();function ja(e,t,r){if(!(this instanceof ja))return new ja(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(BK.toArray(t,r))}u7.exports=ja;ja.prototype._init=function(t){t.length>this.blockSize&&(t=new this.Hash().update(t).digest()),CK(t.length<=this.blockSize);for(var r=t.length;r{M();var gr=c7;gr.utils=Si();gr.common=Na();gr.sha=i7();gr.ripemd=h7();gr.hmac=l7();gr.sha1=gr.sha.sha1;gr.sha256=gr.sha.sha256;gr.sha224=gr.sha.sha224;gr.sha384=gr.sha.sha384;gr.sha512=gr.sha.sha512;gr.ripemd160=gr.ripemd.ripemd160});var v7=P((qit,d7)=>{M();d7.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var gu=P(m7=>{"use strict";M();var Dv=m7,ff=pu(),Ov=_v(),qK=zr(),p7=qK.assert;function g7(e){e.type==="short"?this.curve=new Ov.short(e):e.type==="edwards"?this.curve=new Ov.edwards(e):this.curve=new Ov.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,p7(this.g.validate(),"Invalid curve"),p7(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}Dv.PresetCurve=g7;function af(e,t){Object.defineProperty(Dv,e,{configurable:!0,enumerable:!0,get:function(){var r=new g7(t);return Object.defineProperty(Dv,e,{configurable:!0,enumerable:!0,value:r}),r}})}af("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:ff.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});af("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:ff.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});af("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:ff.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});af("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:ff.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});af("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:ff.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});af("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ff.sha256,gRed:!1,g:["9"]});af("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ff.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var kv;try{kv=v7()}catch{kv=void 0}af("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:ff.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",kv]})});var x7=P((Dit,y7)=>{"use strict";M();var RK=pu(),Gf=Mv(),b7=jr();function of(e){if(!(this instanceof of))return new of(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=Gf.toArray(e.entropy,e.entropyEnc||"hex"),r=Gf.toArray(e.nonce,e.nonceEnc||"hex"),a=Gf.toArray(e.pers,e.persEnc||"hex");b7(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,a)}y7.exports=of;of.prototype._init=function(t,r,a){var n=t.concat(r).concat(a);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var d=0;d=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(a||[])),this._reseed=1};of.prototype.generate=function(t,r,a,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=a,a=r,r=null),a&&(a=Gf.toArray(a,n||"hex"),this._update(a));for(var d=[];d.length{"use strict";M();var TK=Yi(),OK=zr(),Pv=OK.assert;function Ir(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}w7.exports=Ir;Ir.fromPublic=function(t,r,a){return r instanceof Ir?r:new Ir(t,{pub:r,pubEnc:a})};Ir.fromPrivate=function(t,r,a){return r instanceof Ir?r:new Ir(t,{priv:r,privEnc:a})};Ir.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};Ir.prototype.getPublic=function(t,r){return typeof t=="string"&&(r=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,t):this.pub};Ir.prototype.getPrivate=function(t){return t==="hex"?this.priv.toString(16,2):this.priv};Ir.prototype._importPrivate=function(t,r){this.priv=new TK(t,r||16),this.priv=this.priv.umod(this.ec.curve.n)};Ir.prototype._importPublic=function(t,r){if(t.x||t.y){this.ec.curve.type==="mont"?Pv(t.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&Pv(t.x&&t.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(t.x,t.y);return}this.pub=this.ec.curve.decodePoint(t,r)};Ir.prototype.derive=function(t){return t.validate()||Pv(t.validate(),"public point not validated"),t.mul(this.priv).getX()};Ir.prototype.sign=function(t,r,a){return this.ec.sign(t,this,r,a)};Ir.prototype.verify=function(t,r){return this.ec.verify(t,r,this)};Ir.prototype.inspect=function(){return""}});var I7=P((Lit,_7)=>{"use strict";M();var mu=Yi(),Nv=zr(),DK=Nv.assert;function bu(e,t){if(e instanceof bu)return e;this._importDER(e,t)||(DK(e.r&&e.s,"Signature without r or s"),this.r=new mu(e.r,16),this.s=new mu(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}_7.exports=bu;function kK(){this.place=0}function Uv(e,t){var r=e[t.place++];if(!(r&128))return r;var a=r&15;if(a===0||a>4)return!1;for(var n=0,d=0,m=t.place;d>>=0;return n<=127?!1:(t.place=m,n)}function A7(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}bu.prototype.toDER=function(t){var r=this.r.toArray(),a=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),a[0]&128&&(a=[0].concat(a)),r=A7(r),a=A7(a);!a[0]&&!(a[1]&128);)a=a.slice(1);var n=[2];Lv(n,r.length),n=n.concat(r),n.push(2),Lv(n,a.length);var d=n.concat(a),m=[48];return Lv(m,d.length),m=m.concat(d),Nv.encode(m,t)}});var C7=P((Fit,B7)=>{"use strict";M();var $f=Yi(),E7=x7(),PK=zr(),Fv=gu(),UK=eu(),S7=PK.assert,Kv=M7(),yu=I7();function ui(e){if(!(this instanceof ui))return new ui(e);typeof e=="string"&&(S7(Object.prototype.hasOwnProperty.call(Fv,e),"Unknown curve "+e),e=Fv[e]),e instanceof Fv.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}B7.exports=ui;ui.prototype.keyPair=function(t){return new Kv(this,t)};ui.prototype.keyFromPrivate=function(t,r){return Kv.fromPrivate(this,t,r)};ui.prototype.keyFromPublic=function(t,r){return Kv.fromPublic(this,t,r)};ui.prototype.genKeyPair=function(t){t||(t={});for(var r=new E7({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||UK(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),a=this.n.byteLength(),n=this.n.sub(new $f(2));;){var d=new $f(r.generate(a));if(!(d.cmp(n)>0))return d.iaddn(1),this.keyFromPrivate(d)}};ui.prototype._truncateToN=function(t,r){var a=t.byteLength()*8-this.n.bitLength();return a>0&&(t=t.ushrn(a)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t};ui.prototype.sign=function(t,r,a,n){typeof a=="object"&&(n=a,a=null),n||(n={}),r=this.keyFromPrivate(r,a),t=this._truncateToN(new $f(t,16));for(var d=this.n.byteLength(),m=r.getPrivate().toArray("be",d),b=t.toArray("be",d),A=new E7({hash:this.hash,entropy:m,nonce:b,pers:n.pers,persEnc:n.persEnc||"utf8"}),B=this.n.sub(new $f(1)),C=0;;C++){var D=n.k?n.k(C):new $f(A.generate(this.n.byteLength()));if(D=this._truncateToN(D,!0),!(D.cmpn(1)<=0||D.cmp(B)>=0)){var K=this.g.mul(D);if(!K.isInfinity()){var j=K.getX(),Z=j.umod(this.n);if(Z.cmpn(0)!==0){var qt=D.invm(this.n).mul(Z.mul(r.getPrivate()).iadd(t));if(qt=qt.umod(this.n),qt.cmpn(0)!==0){var Rt=(K.getY().isOdd()?1:0)|(j.cmp(Z)!==0?2:0);return n.canonical&&qt.cmp(this.nh)>0&&(qt=this.n.sub(qt),Rt^=1),new yu({r:Z,s:qt,recoveryParam:Rt})}}}}}};ui.prototype.verify=function(t,r,a,n){t=this._truncateToN(new $f(t,16)),a=this.keyFromPublic(a,n),r=new yu(r,"hex");var d=r.r,m=r.s;if(d.cmpn(1)<0||d.cmp(this.n)>=0||m.cmpn(1)<0||m.cmp(this.n)>=0)return!1;var b=m.invm(this.n),A=b.mul(t).umod(this.n),B=b.mul(d).umod(this.n),C;return this.curve._maxwellTrick?(C=this.g.jmulAdd(A,a.getPublic(),B),C.isInfinity()?!1:C.eqXToP(d)):(C=this.g.mulAdd(A,a.getPublic(),B),C.isInfinity()?!1:C.getX().umod(this.n).cmp(d)===0)};ui.prototype.recoverPubKey=function(e,t,r,a){S7((3&r)===r,"The recovery param is more than two bits"),t=new yu(t,a);var n=this.n,d=new $f(e),m=t.r,b=t.s,A=r&1,B=r>>1;if(m.cmp(this.curve.p.umod(this.curve.n))>=0&&B)throw new Error("Unable to find sencond key candinate");B?m=this.curve.pointFromX(m.add(this.curve.n),A):m=this.curve.pointFromX(m,A);var C=t.r.invm(n),D=n.sub(d).mul(C).umod(n),K=b.mul(C).umod(n);return this.g.mulAdd(D,m,K)};ui.prototype.getKeyRecoveryParam=function(e,t,r,a){if(t=new yu(t,a),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var d;try{d=this.recoverPubKey(e,t,n)}catch{continue}if(d.eq(r))return n}throw new Error("Unable to find valid recovery factor")}});var O7=P((Qit,T7)=>{"use strict";M();var Bs=zr(),R7=Bs.assert,q7=Bs.parseBytes,za=Bs.cachedProperty;function cr(e,t){this.eddsa=e,this._secret=q7(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=q7(t.pub)}cr.fromPublic=function(t,r){return r instanceof cr?r:new cr(t,{pub:r})};cr.fromSecret=function(t,r){return r instanceof cr?r:new cr(t,{secret:r})};cr.prototype.secret=function(){return this._secret};za(cr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});za(cr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});za(cr,"privBytes",function(){var t=this.eddsa,r=this.hash(),a=t.encodingLength-1,n=r.slice(0,t.encodingLength);return n[0]&=248,n[a]&=127,n[a]|=64,n});za(cr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});za(cr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});za(cr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});cr.prototype.sign=function(t){return R7(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)};cr.prototype.verify=function(t,r){return this.eddsa.verify(t,r,this)};cr.prototype.getSecret=function(t){return R7(this._secret,"KeyPair is public only"),Bs.encode(this.secret(),t)};cr.prototype.getPublic=function(t){return Bs.encode(this.pubBytes(),t)};T7.exports=cr});var k7=P((jit,D7)=>{"use strict";M();var LK=Yi(),xu=zr(),NK=xu.assert,wu=xu.cachedProperty,FK=xu.parseBytes;function Zf(e,t){this.eddsa=e,typeof t!="object"&&(t=FK(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),NK(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof LK&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}wu(Zf,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});wu(Zf,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});wu(Zf,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});wu(Zf,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});Zf.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Zf.prototype.toHex=function(){return xu.encode(this.toBytes(),"hex").toUpperCase()};D7.exports=Zf});var F7=P((Vit,N7)=>{"use strict";M();var KK=pu(),QK=gu(),Va=zr(),HK=Va.assert,U7=Va.parseBytes,L7=O7(),P7=k7();function Nr(e){if(HK(e==="ed25519","only tested with ed25519 so far"),!(this instanceof Nr))return new Nr(e);e=QK[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=KK.sha512}N7.exports=Nr;Nr.prototype.sign=function(t,r){t=U7(t);var a=this.keyFromSecret(r),n=this.hashInt(a.messagePrefix(),t),d=this.g.mul(n),m=this.encodePoint(d),b=this.hashInt(m,a.pubBytes(),t).mul(a.priv()),A=n.add(b).umod(this.curve.n);return this.makeSignature({R:d,S:A,Rencoded:m})};Nr.prototype.verify=function(t,r,a){t=U7(t),r=this.makeSignature(r);var n=this.keyFromPublic(a),d=this.hashInt(r.Rencoded(),n.pubBytes(),t),m=this.g.mul(r.S()),b=r.R().add(n.pub().mul(d));return b.eq(m)};Nr.prototype.hashInt=function(){for(var t=this.hash(),r=0;r{"use strict";M();var Wf=K7;Wf.version=bM().version;Wf.utils=zr();Wf.rand=eu();Wf.curve=_v();Wf.curves=gu();Wf.ec=C7();Wf.eddsa=F7()});var Hv=P((Q7,Qv)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof Qv>"u"||Qv,Q7)});var Au=P((Wit,H7)=>{"use strict";M();var Mu=On(),Ya=Mu.Buffer,li={},ci;for(ci in Mu)!Mu.hasOwnProperty(ci)||ci==="SlowBuffer"||ci==="Buffer"||(li[ci]=Mu[ci]);var Ga=li.Buffer={};for(ci in Ya)!Ya.hasOwnProperty(ci)||ci==="allocUnsafe"||ci==="allocUnsafeSlow"||(Ga[ci]=Ya[ci]);li.Buffer.prototype=Ya.prototype;(!Ga.from||Ga.from===Uint8Array.from)&&(Ga.from=function(e,t,r){if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&typeof e.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return Ya(e,t,r)});Ga.alloc||(Ga.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var a=Ya(e);return!t||t.length===0?a.fill(0):typeof r=="string"?a.fill(t,r):a.fill(t),a});if(!li.kStringMaxLength)try{li.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}li.constants||(li.constants={MAX_LENGTH:li.kMaxLength},li.kStringMaxLength&&(li.constants.MAX_STRING_LENGTH=li.kStringMaxLength));H7.exports=li});var _u=P(j7=>{"use strict";M();var jK=ge();function di(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}j7.Reporter=di;di.prototype.isError=function(t){return t instanceof $a};di.prototype.save=function(){let t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}};di.prototype.restore=function(t){let r=this._reporterState;r.obj=t.obj,r.path=r.path.slice(0,t.pathLen)};di.prototype.enterKey=function(t){return this._reporterState.path.push(t)};di.prototype.exitKey=function(t){let r=this._reporterState;r.path=r.path.slice(0,t-1)};di.prototype.leaveKey=function(t,r,a){let n=this._reporterState;this.exitKey(t),n.obj!==null&&(n.obj[r]=a)};di.prototype.path=function(){return this._reporterState.path.join("/")};di.prototype.enterObject=function(){let t=this._reporterState,r=t.obj;return t.obj={},r};di.prototype.leaveObject=function(t){let r=this._reporterState,a=r.obj;return r.obj=t,a};di.prototype.error=function(t){let r,a=this._reporterState,n=t instanceof $a;if(n?r=t:r=new $a(a.path.map(function(d){return"["+JSON.stringify(d)+"]"}).join(""),t.message||t,t.stack),!a.options.partial)throw r;return n||a.errors.push(r),r};di.prototype.wrapResult=function(t){let r=this._reporterState;return r.options.partial?{result:this.isError(t)?null:t,errors:r.errors}:t};function $a(e,t){this.path=e,this.rethrow(t)}jK($a,Error);$a.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,$a),!this.stack)try{throw new Error(this.message)}catch(r){this.stack=r.stack}return this}});var Ja=P(jv=>{"use strict";M();var zK=ge(),Iu=_u().Reporter,Za=Au().Buffer;function vi(e,t){if(Iu.call(this,t),!Za.isBuffer(e)){this.error("Input not Buffer");return}this.base=e,this.offset=0,this.length=e.length}zK(vi,Iu);jv.DecoderBuffer=vi;vi.isDecoderBuffer=function(t){return t instanceof vi?!0:typeof t=="object"&&Za.isBuffer(t.base)&&t.constructor.name==="DecoderBuffer"&&typeof t.offset=="number"&&typeof t.length=="number"&&typeof t.save=="function"&&typeof t.restore=="function"&&typeof t.isEmpty=="function"&&typeof t.readUInt8=="function"&&typeof t.skip=="function"&&typeof t.raw=="function"};vi.prototype.save=function(){return{offset:this.offset,reporter:Iu.prototype.save.call(this)}};vi.prototype.restore=function(t){let r=new vi(this.base);return r.offset=t.offset,r.length=this.offset,this.offset=t.offset,Iu.prototype.restore.call(this,t.reporter),r};vi.prototype.isEmpty=function(){return this.offset===this.length};vi.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")};vi.prototype.skip=function(t,r){if(!(this.offset+t<=this.length))return this.error(r||"DecoderBuffer overrun");let a=new vi(this.base);return a._reporterState=this._reporterState,a.offset=this.offset,a.length=this.offset+t,this.offset+=t,a};vi.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)};function Wa(e,t){if(Array.isArray(e))this.length=0,this.value=e.map(function(r){return Wa.isEncoderBuffer(r)||(r=new Wa(r,t)),this.length+=r.length,r},this);else if(typeof e=="number"){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if(typeof e=="string")this.value=e,this.length=Za.byteLength(e);else if(Za.isBuffer(e))this.value=e,this.length=e.length;else return t.error("Unsupported type: "+typeof e)}jv.EncoderBuffer=Wa;Wa.isEncoderBuffer=function(t){return t instanceof Wa?!0:typeof t=="object"&&t.constructor.name==="EncoderBuffer"&&typeof t.length=="number"&&typeof t.join=="function"};Wa.prototype.join=function(t,r){return t||(t=Za.alloc(this.length)),r||(r=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(a){a.join(t,r),r+=a.length}):(typeof this.value=="number"?t[r]=this.value:typeof this.value=="string"?t.write(this.value,r):Za.isBuffer(this.value)&&this.value.copy(t,r),r+=this.length)),t}});var Eu=P((int,V7)=>{"use strict";M();var VK=_u().Reporter,YK=Ja().EncoderBuffer,GK=Ja().DecoderBuffer,qr=jr(),z7=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],$K=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(z7),ZK=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function je(e,t,r){let a={};this._baseState=a,a.name=r,a.enc=e,a.parent=t||null,a.children=null,a.tag=null,a.args=null,a.reverseArgs=null,a.choice=null,a.optional=!1,a.any=!1,a.obj=!1,a.use=null,a.useDecoder=null,a.key=null,a.default=null,a.explicit=null,a.implicit=null,a.contains=null,a.parent||(a.children=[],this._wrap())}V7.exports=je;var WK=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];je.prototype.clone=function(){let t=this._baseState,r={};WK.forEach(function(n){r[n]=t[n]});let a=new this.constructor(r.parent);return a._baseState=r,a};je.prototype._wrap=function(){let t=this._baseState;$K.forEach(function(r){this[r]=function(){let n=new this.constructor(this);return t.children.push(n),n[r].apply(n,arguments)}},this)};je.prototype._init=function(t){let r=this._baseState;qr(r.parent===null),t.call(this),r.children=r.children.filter(function(a){return a._baseState.parent===this},this),qr.equal(r.children.length,1,"Root node can have only one child")};je.prototype._useArgs=function(t){let r=this._baseState,a=t.filter(function(n){return n instanceof this.constructor},this);t=t.filter(function(n){return!(n instanceof this.constructor)},this),a.length!==0&&(qr(r.children===null),r.children=a,a.forEach(function(n){n._baseState.parent=this},this)),t.length!==0&&(qr(r.args===null),r.args=t,r.reverseArgs=t.map(function(n){if(typeof n!="object"||n.constructor!==Object)return n;let d={};return Object.keys(n).forEach(function(m){m==(m|0)&&(m|=0);let b=n[m];d[b]=m}),d}))};ZK.forEach(function(e){je.prototype[e]=function(){let r=this._baseState;throw new Error(e+" not implemented for encoding: "+r.enc)}});z7.forEach(function(e){je.prototype[e]=function(){let r=this._baseState,a=Array.prototype.slice.call(arguments);return qr(r.tag===null),r.tag=e,this._useArgs(a),this}});je.prototype.use=function(t){qr(t);let r=this._baseState;return qr(r.use===null),r.use=t,this};je.prototype.optional=function(){let t=this._baseState;return t.optional=!0,this};je.prototype.def=function(t){let r=this._baseState;return qr(r.default===null),r.default=t,r.optional=!0,this};je.prototype.explicit=function(t){let r=this._baseState;return qr(r.explicit===null&&r.implicit===null),r.explicit=t,this};je.prototype.implicit=function(t){let r=this._baseState;return qr(r.explicit===null&&r.implicit===null),r.implicit=t,this};je.prototype.obj=function(){let t=this._baseState,r=Array.prototype.slice.call(arguments);return t.obj=!0,r.length!==0&&this._useArgs(r),this};je.prototype.key=function(t){let r=this._baseState;return qr(r.key===null),r.key=t,this};je.prototype.any=function(){let t=this._baseState;return t.any=!0,this};je.prototype.choice=function(t){let r=this._baseState;return qr(r.choice===null),r.choice=t,this._useArgs(Object.keys(t).map(function(a){return t[a]})),this};je.prototype.contains=function(t){let r=this._baseState;return qr(r.use===null),r.contains=t,this};je.prototype._decode=function(t,r){let a=this._baseState;if(a.parent===null)return t.wrapResult(a.children[0]._decode(t,r));let n=a.default,d=!0,m=null;if(a.key!==null&&(m=t.enterKey(a.key)),a.optional){let A=null;if(a.explicit!==null?A=a.explicit:a.implicit!==null?A=a.implicit:a.tag!==null&&(A=a.tag),A===null&&!a.any){let B=t.save();try{a.choice===null?this._decodeGeneric(a.tag,t,r):this._decodeChoice(t,r),d=!0}catch{d=!1}t.restore(B)}else if(d=this._peekTag(t,A,a.any),t.isError(d))return d}let b;if(a.obj&&d&&(b=t.enterObject()),d){if(a.explicit!==null){let B=this._decodeTag(t,a.explicit);if(t.isError(B))return B;t=B}let A=t.offset;if(a.use===null&&a.choice===null){let B;a.any&&(B=t.save());let C=this._decodeTag(t,a.implicit!==null?a.implicit:a.tag,a.any);if(t.isError(C))return C;a.any?n=t.raw(B):t=C}if(r&&r.track&&a.tag!==null&&r.track(t.path(),A,t.length,"tagged"),r&&r.track&&a.tag!==null&&r.track(t.path(),t.offset,t.length,"content"),a.any||(a.choice===null?n=this._decodeGeneric(a.tag,t,r):n=this._decodeChoice(t,r)),t.isError(n))return n;if(!a.any&&a.choice===null&&a.children!==null&&a.children.forEach(function(C){C._decode(t,r)}),a.contains&&(a.tag==="octstr"||a.tag==="bitstr")){let B=new GK(n);n=this._getUse(a.contains,t._reporterState.obj)._decode(B,r)}}return a.obj&&d&&(n=t.leaveObject(b)),a.key!==null&&(n!==null||d===!0)?t.leaveKey(m,a.key,n):m!==null&&t.exitKey(m),n};je.prototype._decodeGeneric=function(t,r,a){let n=this._baseState;return t==="seq"||t==="set"?null:t==="seqof"||t==="setof"?this._decodeList(r,t,n.args[0],a):/str$/.test(t)?this._decodeStr(r,t,a):t==="objid"&&n.args?this._decodeObjid(r,n.args[0],n.args[1],a):t==="objid"?this._decodeObjid(r,null,null,a):t==="gentime"||t==="utctime"?this._decodeTime(r,t,a):t==="null_"?this._decodeNull(r,a):t==="bool"?this._decodeBool(r,a):t==="objDesc"?this._decodeStr(r,t,a):t==="int"||t==="enum"?this._decodeInt(r,n.args&&n.args[0],a):n.use!==null?this._getUse(n.use,r._reporterState.obj)._decode(r,a):r.error("unknown tag: "+t)};je.prototype._getUse=function(t,r){let a=this._baseState;return a.useDecoder=this._use(t,r),qr(a.useDecoder._baseState.parent===null),a.useDecoder=a.useDecoder._baseState.children[0],a.implicit!==a.useDecoder._baseState.implicit&&(a.useDecoder=a.useDecoder.clone(),a.useDecoder._baseState.implicit=a.implicit),a.useDecoder};je.prototype._decodeChoice=function(t,r){let a=this._baseState,n=null,d=!1;return Object.keys(a.choice).some(function(m){let b=t.save(),A=a.choice[m];try{let B=A._decode(t,r);if(t.isError(B))return!1;n={type:m,value:B},d=!0}catch{return t.restore(b),!1}return!0},this),d?n:t.error("Choice not matched")};je.prototype._createEncoderBuffer=function(t){return new YK(t,this.reporter)};je.prototype._encode=function(t,r,a){let n=this._baseState;if(n.default!==null&&n.default===t)return;let d=this._encodeValue(t,r,a);if(d!==void 0&&!this._skipDefault(d,r,a))return d};je.prototype._encodeValue=function(t,r,a){let n=this._baseState;if(n.parent===null)return n.children[0]._encode(t,r||new VK);let d=null;if(this.reporter=r,n.optional&&t===void 0)if(n.default!==null)t=n.default;else return;let m=null,b=!1;if(n.any)d=this._createEncoderBuffer(t);else if(n.choice)d=this._encodeChoice(t,r);else if(n.contains)m=this._getUse(n.contains,a)._encode(t,r),b=!0;else if(n.children)m=n.children.map(function(A){if(A._baseState.tag==="null_")return A._encode(null,r,t);if(A._baseState.key===null)return r.error("Child should have a key");let B=r.enterKey(A._baseState.key);if(typeof t!="object")return r.error("Child expected, but input is not object");let C=A._encode(t[A._baseState.key],r,t);return r.leaveKey(B),C},this).filter(function(A){return A}),m=this._createEncoderBuffer(m);else if(n.tag==="seqof"||n.tag==="setof"){if(!(n.args&&n.args.length===1))return r.error("Too many args for : "+n.tag);if(!Array.isArray(t))return r.error("seqof/setof, but data is not Array");let A=this.clone();A._baseState.implicit=null,m=this._createEncoderBuffer(t.map(function(B){let C=this._baseState;return this._getUse(C.args[0],t)._encode(B,r)},A))}else n.use!==null?d=this._getUse(n.use,a)._encode(t,r):(m=this._encodePrimitive(n.tag,t),b=!0);if(!n.any&&n.choice===null){let A=n.implicit!==null?n.implicit:n.tag,B=n.implicit===null?"universal":"context";A===null?n.use===null&&r.error("Tag could be omitted only for .use()"):n.use===null&&(d=this._encodeComposite(A,b,B,m))}return n.explicit!==null&&(d=this._encodeComposite(n.explicit,!1,"context",d)),d};je.prototype._encodeChoice=function(t,r){let a=this._baseState,n=a.choice[t.type];return n||qr(!1,t.type+" not found in "+JSON.stringify(Object.keys(a.choice))),n._encode(t.value,r)};je.prototype._encodePrimitive=function(t,r){let a=this._baseState;if(/str$/.test(t))return this._encodeStr(r,t);if(t==="objid"&&a.args)return this._encodeObjid(r,a.reverseArgs[0],a.args[1]);if(t==="objid")return this._encodeObjid(r,null,null);if(t==="gentime"||t==="utctime")return this._encodeTime(r,t);if(t==="null_")return this._encodeNull();if(t==="int"||t==="enum")return this._encodeInt(r,a.args&&a.reverseArgs[0]);if(t==="bool")return this._encodeBool(r);if(t==="objDesc")return this._encodeStr(r,t);throw new Error("Unsupported tag: "+t)};je.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)};je.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}});var Su=P(Jf=>{"use strict";M();function Y7(e){let t={};return Object.keys(e).forEach(function(r){(r|0)==r&&(r=r|0);let a=e[r];t[a]=r}),t}Jf.tagClass={0:"universal",1:"application",2:"context",3:"private"};Jf.tagClassByName=Y7(Jf.tagClass);Jf.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};Jf.tagByName=Y7(Jf.tag)});var Vv=P((ont,Z7)=>{"use strict";M();var JK=ge(),Bn=Au().Buffer,G7=Eu(),zv=Su();function $7(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new qi,this.tree._init(e.body)}Z7.exports=$7;$7.prototype.encode=function(t,r){return this.tree._encode(t,r).join()};function qi(e){G7.call(this,"der",e)}JK(qi,G7);qi.prototype._encodeComposite=function(t,r,a,n){let d=XK(t,r,a,this.reporter);if(n.length<128){let A=Bn.alloc(2);return A[0]=d,A[1]=n.length,this._createEncoderBuffer([A,n])}let m=1;for(let A=n.length;A>=256;A>>=8)m++;let b=Bn.alloc(1+1+m);b[0]=d,b[1]=128|m;for(let A=1+m,B=n.length;B>0;A--,B>>=8)b[A]=B&255;return this._createEncoderBuffer([b,n])};qi.prototype._encodeStr=function(t,r){if(r==="bitstr")return this._createEncoderBuffer([t.unused|0,t.data]);if(r==="bmpstr"){let a=Bn.alloc(t.length*2);for(let n=0;n=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,t[0]*40+t[1])}let n=0;for(let b=0;b=128;A>>=7)n++}let d=Bn.alloc(n),m=d.length-1;for(let b=t.length-1;b>=0;b--){let A=t[b];for(d[m--]=A&127;(A>>=7)>0;)d[m--]=128|A&127}return this._createEncoderBuffer(d)};function pi(e){return e<10?"0"+e:e}qi.prototype._encodeTime=function(t,r){let a,n=new Date(t);return r==="gentime"?a=[pi(n.getUTCFullYear()),pi(n.getUTCMonth()+1),pi(n.getUTCDate()),pi(n.getUTCHours()),pi(n.getUTCMinutes()),pi(n.getUTCSeconds()),"Z"].join(""):r==="utctime"?a=[pi(n.getUTCFullYear()%100),pi(n.getUTCMonth()+1),pi(n.getUTCDate()),pi(n.getUTCHours()),pi(n.getUTCMinutes()),pi(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+r+" time is not supported yet"),this._encodeStr(a,"octstr")};qi.prototype._encodeNull=function(){return this._createEncoderBuffer("")};qi.prototype._encodeInt=function(t,r){if(typeof t=="string"){if(!r)return this.reporter.error("String int or enum given, but no values map");if(!r.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=r[t]}if(typeof t!="number"&&!Bn.isBuffer(t)){let d=t.toArray();!t.sign&&d[0]&128&&d.unshift(0),t=Bn.from(d)}if(Bn.isBuffer(t)){let d=t.length;t.length===0&&d++;let m=Bn.alloc(d);return t.copy(m),t.length===0&&(m[0]=0),this._createEncoderBuffer(m)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let a=1;for(let d=t;d>=256;d>>=8)a++;let n=new Array(a);for(let d=n.length-1;d>=0;d--)n[d]=t&255,t>>=8;return n[0]&128&&n.unshift(0),this._createEncoderBuffer(Bn.from(n))};qi.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)};qi.prototype._use=function(t,r){return typeof t=="function"&&(t=t(r)),t._getEncoder("der").tree};qi.prototype._skipDefault=function(t,r,a){let n=this._baseState,d;if(n.default===null)return!1;let m=t.join();if(n.defaultBuffer===void 0&&(n.defaultBuffer=this._encodeValue(n.default,r,a).join()),m.length!==n.defaultBuffer.length)return!1;for(d=0;d=31?a.error("Multi-octet tag encoding unsupported"):(t||(n|=32),n|=zv.tagClassByName[r||"universal"]<<6,n)}});var J7=P((hnt,W7)=>{"use strict";M();var tQ=ge(),Yv=Vv();function Gv(e){Yv.call(this,e),this.enc="pem"}tQ(Gv,Yv);W7.exports=Gv;Gv.prototype.encode=function(t,r){let n=Yv.prototype.encode.call(this,t).toString("base64"),d=["-----BEGIN "+r.label+"-----"];for(let m=0;m{"use strict";M();var X7=tA;X7.der=Vv();X7.pem=J7()});var Wv=P((dnt,aA)=>{"use strict";M();var eQ=ge(),rQ=Hv(),eA=Ja().DecoderBuffer,iA=Eu(),rA=Su();function nA(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new Vr,this.tree._init(e.body)}aA.exports=nA;nA.prototype.decode=function(t,r){return eA.isDecoderBuffer(t)||(t=new eA(t,r)),this.tree._decode(t,r)};function Vr(e){iA.call(this,"der",e)}eQ(Vr,iA);Vr.prototype._peekTag=function(t,r,a){if(t.isEmpty())return!1;let n=t.save(),d=Zv(t,'Failed to peek tag: "'+r+'"');return t.isError(d)?d:(t.restore(n),d.tag===r||d.tagStr===r||d.tagStr+"of"===r||a)};Vr.prototype._decodeTag=function(t,r,a){let n=Zv(t,'Failed to decode tag of "'+r+'"');if(t.isError(n))return n;let d=fA(t,n.primitive,'Failed to get length of "'+r+'"');if(t.isError(d))return d;if(!a&&n.tag!==r&&n.tagStr!==r&&n.tagStr+"of"!==r)return t.error('Failed to match tag: "'+r+'"');if(n.primitive||d!==null)return t.skip(d,'Failed to match body of: "'+r+'"');let m=t.save(),b=this._skipUntilEnd(t,'Failed to skip indefinite length body: "'+this.tag+'"');return t.isError(b)?b:(d=t.offset-m.offset,t.restore(m),t.skip(d,'Failed to match body of: "'+r+'"'))};Vr.prototype._skipUntilEnd=function(t,r){for(;;){let a=Zv(t,r);if(t.isError(a))return a;let n=fA(t,a.primitive,r);if(t.isError(n))return n;let d;if(a.primitive||n!==null?d=t.skip(n):d=this._skipUntilEnd(t,r),t.isError(d))return d;if(a.tagStr==="end")break}};Vr.prototype._decodeList=function(t,r,a,n){let d=[];for(;!t.isEmpty();){let m=this._peekTag(t,"end");if(t.isError(m))return m;let b=a.decode(t,"der",n);if(t.isError(b)&&m)break;d.push(b)}return d};Vr.prototype._decodeStr=function(t,r){if(r==="bitstr"){let a=t.readUInt8();return t.isError(a)?a:{unused:a,data:t.raw()}}else if(r==="bmpstr"){let a=t.raw();if(a.length%2===1)return t.error("Decoding of string type: bmpstr length mismatch");let n="";for(let d=0;d>6],n=(r&32)===0;if((r&31)===31){let m=r;for(r=0;(m&128)===128;){if(m=e.readUInt8(t),e.isError(m))return m;r<<=7,r|=m&127}}else r&=31;let d=rA.tag[r];return{cls:a,primitive:n,tag:r,tagStr:d}}function fA(e,t,r){let a=e.readUInt8(r);if(e.isError(a))return a;if(!t&&a===128)return null;if((a&128)===0)return a;let n=a&127;if(n>4)return e.error("length octect is too long");a=0;for(let d=0;d{"use strict";M();var iQ=ge(),nQ=Au().Buffer,Jv=Wv();function Xv(e){Jv.call(this,e),this.enc="pem"}iQ(Xv,Jv);oA.exports=Xv;Xv.prototype.decode=function(t,r){let a=t.toString().split(/[\r\n]+/g),n=r.label.toUpperCase(),d=/^-----(BEGIN|END) ([^-]+)-----$/,m=-1,b=-1;for(let C=0;C{"use strict";M();var hA=uA;hA.der=Wv();hA.pem=sA()});var cA=P(lA=>{"use strict";M();var fQ=$v(),aQ=tp(),oQ=ge(),sQ=lA;sQ.define=function(t,r){return new Xa(t,r)};function Xa(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}Xa.prototype._createNamed=function(t){let r=this.name;function a(n){this._initNamed(n,r)}return oQ(a,t),a.prototype._initNamed=function(d,m){t.call(this,d,m)},new a(this)};Xa.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(aQ[t])),this.decoders[t]};Xa.prototype.decode=function(t,r,a){return this._getDecoder(r).decode(t,a)};Xa.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(fQ[t])),this.encoders[t]};Xa.prototype.encode=function(t,r,a){return this._getEncoder(r).encode(t,a)}});var vA=P(dA=>{"use strict";M();var Bu=dA;Bu.Reporter=_u().Reporter;Bu.DecoderBuffer=Ja().DecoderBuffer;Bu.EncoderBuffer=Ja().EncoderBuffer;Bu.Node=Eu()});var mA=P(gA=>{"use strict";M();var pA=gA;pA._reverse=function(t){let r={};return Object.keys(t).forEach(function(a){(a|0)==a&&(a=a|0);let n=t[a];r[n]=a}),r};pA.der=Su()});var ep=P(bA=>{"use strict";M();var to=bA;to.bignum=Hv();to.define=cA().define;to.base=vA();to.constants=mA();to.decoders=tp();to.encoders=$v()});var MA=P((Snt,wA)=>{"use strict";M();var Ri=ep(),yA=Ri.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),hQ=Ri.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),rp=Ri.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),uQ=Ri.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(rp),this.key("subjectPublicKey").bitstr())}),lQ=Ri.define("RelativeDistinguishedName",function(){this.setof(hQ)}),cQ=Ri.define("RDNSequence",function(){this.seqof(lQ)}),xA=Ri.define("Name",function(){this.choice({rdnSequence:this.use(cQ)})}),dQ=Ri.define("Validity",function(){this.seq().obj(this.key("notBefore").use(yA),this.key("notAfter").use(yA))}),vQ=Ri.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),pQ=Ri.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(rp),this.key("issuer").use(xA),this.key("validity").use(dQ),this.key("subject").use(xA),this.key("subjectPublicKeyInfo").use(uQ),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(vQ).optional())}),gQ=Ri.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(pQ),this.key("signatureAlgorithm").use(rp),this.key("signatureValue").bitstr())});wA.exports=gQ});var _A=P(Oi=>{"use strict";M();var Ti=ep();Oi.certificate=MA();var mQ=Ti.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});Oi.RSAPrivateKey=mQ;var bQ=Ti.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});Oi.RSAPublicKey=bQ;var yQ=Ti.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(AA),this.key("subjectPublicKey").bitstr())});Oi.PublicKey=yQ;var AA=Ti.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),xQ=Ti.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(AA),this.key("subjectPrivateKey").octstr())});Oi.PrivateKey=xQ;var wQ=Ti.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});Oi.EncryptedPrivateKey=wQ;var MQ=Ti.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});Oi.DSAPrivateKey=MQ;Oi.DSAparam=Ti.define("DSAparam",function(){this.int()});var AQ=Ti.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(_Q),this.key("publicKey").optional().explicit(1).bitstr())});Oi.ECPrivateKey=AQ;var _Q=Ti.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});Oi.signature=Ti.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})});var IA=P((Rnt,IQ)=>{IQ.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}});var SA=P((Tnt,EA)=>{M();var EQ=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,SQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,BQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,CQ=ws(),qQ=tu(),Cu=ve().Buffer;EA.exports=function(e,t){var r=e.toString(),a=r.match(EQ),n;if(a){var m="aes"+a[1],b=Cu.from(a[2],"hex"),A=Cu.from(a[3].replace(/[\r\n]/g,""),"base64"),B=CQ(t,b.slice(0,8),parseInt(a[1],10)).key,C=[],D=qQ.createDecipheriv(m,B,b);C.push(D.update(A)),C.push(D.final()),n=Cu.concat(C)}else{var d=r.match(BQ);n=Cu.from(d[2].replace(/[\r\n]/g,""),"base64")}var K=r.match(SQ)[1];return{tag:K,data:n}}});var qs=P((Dnt,CA)=>{M();var Fr=_A(),RQ=IA(),TQ=SA(),OQ=tu(),DQ=F1(),ip=ve().Buffer;CA.exports=BA;function BA(e){var t;typeof e=="object"&&!ip.isBuffer(e)&&(t=e.passphrase,e=e.key),typeof e=="string"&&(e=ip.from(e));var r=TQ(e,t),a=r.tag,n=r.data,d,m;switch(a){case"CERTIFICATE":m=Fr.certificate.decode(n,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(m||(m=Fr.PublicKey.decode(n,"der")),d=m.algorithm.algorithm.join("."),d){case"1.2.840.113549.1.1.1":return Fr.RSAPublicKey.decode(m.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return m.subjectPrivateKey=m.subjectPublicKey,{type:"ec",data:m};case"1.2.840.10040.4.1":return m.algorithm.params.pub_key=Fr.DSAparam.decode(m.subjectPublicKey.data,"der"),{type:"dsa",data:m.algorithm.params};default:throw new Error("unknown key id "+d)}case"ENCRYPTED PRIVATE KEY":n=Fr.EncryptedPrivateKey.decode(n,"der"),n=kQ(n,t);case"PRIVATE KEY":switch(m=Fr.PrivateKey.decode(n,"der"),d=m.algorithm.algorithm.join("."),d){case"1.2.840.113549.1.1.1":return Fr.RSAPrivateKey.decode(m.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:m.algorithm.curve,privateKey:Fr.ECPrivateKey.decode(m.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return m.algorithm.params.priv_key=Fr.DSAparam.decode(m.subjectPrivateKey,"der"),{type:"dsa",params:m.algorithm.params};default:throw new Error("unknown key id "+d)}case"RSA PUBLIC KEY":return Fr.RSAPublicKey.decode(n,"der");case"RSA PRIVATE KEY":return Fr.RSAPrivateKey.decode(n,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:Fr.DSAPrivateKey.decode(n,"der")};case"EC PRIVATE KEY":return n=Fr.ECPrivateKey.decode(n,"der"),{curve:n.parameters.value,privateKey:n.privateKey};default:throw new Error("unknown key type "+a)}}BA.signature=Fr.signature;function kQ(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,a=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),n=RQ[e.algorithm.decrypt.cipher.algo.join(".")],d=e.algorithm.decrypt.cipher.iv,m=e.subjectPrivateKey,b=parseInt(n.split("-")[1],10)/8,A=DQ.pbkdf2Sync(t,r,a,b,"sha1"),B=OQ.createDecipheriv(n,A,d),C=[];return C.push(B.update(m)),C.push(B.final()),ip.concat(C)}});var np=P((Pnt,PQ)=>{PQ.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}});var TA=P((Unt,Ru)=>{M();var Er=ve().Buffer,Xf=q1(),UQ=fu(),LQ=Cs().ec,qu=nu(),NQ=qs(),FQ=np();function KQ(e,t,r,a,n){var d=NQ(t);if(d.curve){if(a!=="ecdsa"&&a!=="ecdsa/rsa")throw new Error("wrong private key type");return QQ(e,d)}else if(d.type==="dsa"){if(a!=="dsa")throw new Error("wrong private key type");return HQ(e,d,r)}else if(a!=="rsa"&&a!=="ecdsa/rsa")throw new Error("wrong private key type");e=Er.concat([n,e]);for(var m=d.modulus.byteLength(),b=[0,1];e.length+b.length+10&&r.ishrn(a),r}function zQ(e,t){e=fp(e,t),e=e.mod(t);var r=Er.from(e.toArray());if(r.length{M();var ap=ve().Buffer,Rs=nu(),YQ=Cs().ec,DA=qs(),GQ=np();function $Q(e,t,r,a,n){var d=DA(r);if(d.type==="ec"){if(a!=="ecdsa"&&a!=="ecdsa/rsa")throw new Error("wrong public key type");return ZQ(e,t,d)}else if(d.type==="dsa"){if(a!=="dsa")throw new Error("wrong public key type");return WQ(e,t,d)}else if(a!=="rsa"&&a!=="ecdsa/rsa")throw new Error("wrong public key type");t=ap.concat([n,t]);for(var m=d.modulus.byteLength(),b=[1],A=0;t.length+b.length+2=t)throw new Error("invalid sig")}kA.exports=$Q});var QA=P((Knt,KA)=>{M();var Tu=ve().Buffer,NA=Ba(),Ou=w1(),FA=ge(),JQ=TA(),XQ=PA(),ta=R1();Object.keys(ta).forEach(function(e){ta[e].id=Tu.from(ta[e].id,"hex"),ta[e.toLowerCase()]=ta[e]});function Ts(e){Ou.Writable.call(this);var t=ta[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=NA(t.hash),this._tag=t.id,this._signType=t.sign}FA(Ts,Ou.Writable);Ts.prototype._write=function(t,r,a){this._hash.update(t),a()};Ts.prototype.update=function(t,r){return typeof t=="string"&&(t=Tu.from(t,r)),this._hash.update(t),this};Ts.prototype.sign=function(t,r){this.end();var a=this._hash.digest(),n=JQ(a,t,this._hashType,this._signType,this._tag);return r?n.toString(r):n};function Os(e){Ou.Writable.call(this);var t=ta[e];if(!t)throw new Error("Unknown message digest");this._hash=NA(t.hash),this._tag=t.id,this._signType=t.sign}FA(Os,Ou.Writable);Os.prototype._write=function(t,r,a){this._hash.update(t),a()};Os.prototype.update=function(t,r){return typeof t=="string"&&(t=Tu.from(t,r)),this._hash.update(t),this};Os.prototype.verify=function(t,r,a){typeof r=="string"&&(r=Tu.from(r,a)),this.end();var n=this._hash.digest();return XQ(r,n,t,this._signType,this._tag)};function UA(e){return new Ts(e)}function LA(e){return new Os(e)}KA.exports={Sign:UA,Verify:LA,createSign:UA,createVerify:LA}});var jA=P((HA,op)=>{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof op>"u"||op,HA)});var VA=P((jnt,zA)=>{M();var tH=Cs(),eH=jA();zA.exports=function(t){return new ea(t)};var Yr={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};Yr.p224=Yr.secp224r1;Yr.p256=Yr.secp256r1=Yr.prime256v1;Yr.p192=Yr.secp192r1=Yr.prime192v1;Yr.p384=Yr.secp384r1;Yr.p521=Yr.secp521r1;function ea(e){this.curveType=Yr[e],this.curveType||(this.curveType={name:e}),this.curve=new tH.ec(this.curveType.name),this.keys=void 0}ea.prototype.generateKeys=function(e,t){return this.keys=this.curve.genKeyPair(),this.getPublicKey(e,t)};ea.prototype.computeSecret=function(e,t,r){t=t||"utf8",U.isBuffer(e)||(e=new U(e,t));var a=this.curve.keyFromPublic(e).getPublic(),n=a.mul(this.keys.getPrivate()).getX();return sp(n,r,this.curveType.byteLength)};ea.prototype.getPublicKey=function(e,t){var r=this.keys.getPublic(t==="compressed",!0);return t==="hybrid"&&(r[r.length-1]%2?r[0]=7:r[0]=6),sp(r,e)};ea.prototype.getPrivateKey=function(e){return sp(this.keys.getPrivate(),e)};ea.prototype.setPublicKey=function(e,t){return t=t||"utf8",U.isBuffer(e)||(e=new U(e,t)),this.keys._importPublic(e),this};ea.prototype.setPrivateKey=function(e,t){t=t||"utf8",U.isBuffer(e)||(e=new U(e,t));var r=new eH(e);return r=r.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(r),this};function sp(e,t,r){Array.isArray(e)||(e=e.toArray());var a=new U(e);if(r&&a.length{M();var rH=Ba(),hp=ve().Buffer;YA.exports=function(e,t){for(var r=hp.alloc(0),a=0,n;r.length{M();GA.exports=function(t,r){for(var a=t.length,n=-1;++n{M();(function(e,t){"use strict";function r(v,i){if(!v)throw new Error(i||"Assertion failed")}function a(v,i){v.super_=i;var o=function(){};o.prototype=i.prototype,v.prototype=new o,v.prototype.constructor=v}function n(v,i,o){if(n.isBN(v))return v;this.negative=0,this.words=null,this.length=0,this.red=null,v!==null&&((i==="le"||i==="be")&&(o=i,i=10),this._init(v||0,i||10,o||"be"))}typeof e=="object"?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=tf().Buffer}catch{}n.isBN=function(i){return i instanceof n?!0:i!==null&&typeof i=="object"&&i.constructor.wordSize===n.wordSize&&Array.isArray(i.words)},n.max=function(i,o){return i.cmp(o)>0?i:o},n.min=function(i,o){return i.cmp(o)<0?i:o},n.prototype._init=function(i,o,h){if(typeof i=="number")return this._initNumber(i,o,h);if(typeof i=="object")return this._initArray(i,o,h);o==="hex"&&(o=16),r(o===(o|0)&&o>=2&&o<=36),i=i.toString().replace(/\s+/g,"");var s=0;i[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=i[s]|i[s-1]<<8|i[s-2]<<16,this.words[u]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);else if(h==="le")for(s=0,u=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,u++);return this.strip()};function m(v,i){var o=v.charCodeAt(i);return o>=65&&o<=70?o-55:o>=97&&o<=102?o-87:o-48&15}function b(v,i,o){var h=m(v,o);return o-1>=i&&(h|=m(v,o-1)<<4),h}n.prototype._parseHex=function(i,o,h){this.length=Math.ceil((i.length-o)/6),this.words=new Array(this.length);for(var s=0;s=o;s-=2)g=b(i,o,s)<=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8;else{var l=i.length-o;for(s=l%2===0?o+1:o;s=18?(u-=18,p+=1,this.words[p]|=g>>>26):u+=8}this.strip()};function A(v,i,o,h){for(var s=0,u=Math.min(v.length,o),p=i;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}n.prototype._parseBase=function(i,o,h){this.words=[0],this.length=1;for(var s=0,u=1;u<=67108863;u*=o)s++;s--,u=u/o|0;for(var p=i.length-h,g=p%s,l=Math.min(p,p-g)+h,f=0,c=h;c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var B=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(i,o){i=i||10,o=o|0||1;var h;if(i===16||i==="hex"){h="";for(var s=0,u=0,p=0;p>>24-s&16777215,u!==0||p!==this.length-1?h=B[6-l.length]+l+h:h=l+h,s+=2,s>=26&&(s-=26,p--)}for(u!==0&&(h=u.toString(16)+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}if(i===(i|0)&&i>=2&&i<=36){var f=C[i],c=D[i];h="";var I=this.clone();for(I.negative=0;!I.isZero();){var w=I.modn(c).toString(i);I=I.idivn(c),I.isZero()?h=w+h:h=B[f-w.length]+w+h}for(this.isZero()&&(h="0"+h);h.length%o!==0;)h="0"+h;return this.negative!==0&&(h="-"+h),h}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var i=this.words[0];return this.length===2?i+=this.words[1]*67108864:this.length===3&&this.words[2]===1?i+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-i:i},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(i,o){return r(typeof d<"u"),this.toArrayLike(d,i,o)},n.prototype.toArray=function(i,o){return this.toArrayLike(Array,i,o)},n.prototype.toArrayLike=function(i,o,h){var s=this.byteLength(),u=h||Math.max(1,s);r(s<=u,"byte array longer than desired length"),r(u>0,"Requested array length <= 0"),this.strip();var p=o==="le",g=new i(u),l,f,c=this.clone();if(p){for(f=0;!c.isZero();f++)l=c.andln(255),c.iushrn(8),g[f]=l;for(;f=4096&&(h+=13,o>>>=13),o>=64&&(h+=7,o>>>=7),o>=8&&(h+=4,o>>>=4),o>=2&&(h+=2,o>>>=2),h+o},n.prototype._zeroBits=function(i){if(i===0)return 26;var o=i,h=0;return(o&8191)===0&&(h+=13,o>>>=13),(o&127)===0&&(h+=7,o>>>=7),(o&15)===0&&(h+=4,o>>>=4),(o&3)===0&&(h+=2,o>>>=2),(o&1)===0&&h++,h},n.prototype.bitLength=function(){var i=this.words[this.length-1],o=this._countBits(i);return(this.length-1)*26+o};function K(v){for(var i=new Array(v.bitLength()),o=0;o>>s}return i}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var i=0,o=0;oi.length?this.clone().ior(i):i.clone().ior(this)},n.prototype.uor=function(i){return this.length>i.length?this.clone().iuor(i):i.clone().iuor(this)},n.prototype.iuand=function(i){var o;this.length>i.length?o=i:o=this;for(var h=0;hi.length?this.clone().iand(i):i.clone().iand(this)},n.prototype.uand=function(i){return this.length>i.length?this.clone().iuand(i):i.clone().iuand(this)},n.prototype.iuxor=function(i){var o,h;this.length>i.length?(o=this,h=i):(o=i,h=this);for(var s=0;si.length?this.clone().ixor(i):i.clone().ixor(this)},n.prototype.uxor=function(i){return this.length>i.length?this.clone().iuxor(i):i.clone().iuxor(this)},n.prototype.inotn=function(i){r(typeof i=="number"&&i>=0);var o=Math.ceil(i/26)|0,h=i%26;this._expand(o),h>0&&o--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-h),this.strip()},n.prototype.notn=function(i){return this.clone().inotn(i)},n.prototype.setn=function(i,o){r(typeof i=="number"&&i>=0);var h=i/26|0,s=i%26;return this._expand(h+1),o?this.words[h]=this.words[h]|1<i.length?(h=this,s=i):(h=i,s=this);for(var u=0,p=0;p>>26;for(;u!==0&&p>>26;if(this.length=h.length,u!==0)this.words[this.length]=u,this.length++;else if(h!==this)for(;pi.length?this.clone().iadd(i):i.clone().iadd(this)},n.prototype.isub=function(i){if(i.negative!==0){i.negative=0;var o=this.iadd(i);return i.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(i),this.negative=1,this._normSign();var h=this.cmp(i);if(h===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,u;h>0?(s=this,u=i):(s=i,u=this);for(var p=0,g=0;g>26,this.words[g]=o&67108863;for(;p!==0&&g>26,this.words[g]=o&67108863;if(p===0&&g>>26,I=l&67108863,w=Math.min(f,i.length-1),S=Math.max(0,f-v.length+1);S<=w;S++){var k=f-S|0;s=v.words[k]|0,u=i.words[S]|0,p=s*u+I,c+=p/67108864|0,I=p&67108863}o.words[f]=I|0,l=c|0}return l!==0?o.words[f]=l|0:o.length--,o.strip()}var Z=function(i,o,h){var s=i.words,u=o.words,p=h.words,g=0,l,f,c,I=s[0]|0,w=I&8191,S=I>>>13,k=s[1]|0,E=k&8191,L=k>>>13,$=s[2]|0,F=$&8191,Q=$>>>13,Ft=s[3]|0,Y=Ft&8191,G=Ft>>>13,se=s[4]|0,W=se&8191,X=se>>>13,Ne=s[5]|0,At=Ne&8191,at=Ne>>>13,Te=s[6]|0,_t=Te&8191,gt=Te>>>13,De=s[7]|0,dt=De&8191,mt=De>>>13,Oe=s[8]|0,bt=Oe&8191,yt=Oe>>>13,Fe=s[9]|0,St=Fe&8191,xt=Fe>>>13,ke=u[0]|0,vt=ke&8191,ut=ke>>>13,Ce=u[1]|0,lt=Ce&8191,pt=Ce>>>13,Re=u[2]|0,ct=Re&8191,wt=Re>>>13,Ke=u[3]|0,Bt=Ke&8191,Ct=Ke>>>13,Me=u[4]|0,ot=Me&8191,st=Me>>>13,Pe=u[5]|0,Mt=Pe&8191,It=Pe>>>13,ze=u[6]|0,ft=ze&8191,Et=ze>>>13,T=u[7]|0,R=T&8191,q=T>>>13,_=u[8]|0,O=_&8191,N=_>>>13,et=u[9]|0,H=et&8191,z=et>>>13;h.negative=i.negative^o.negative,h.length=19,l=Math.imul(w,vt),f=Math.imul(w,ut),f=f+Math.imul(S,vt)|0,c=Math.imul(S,ut);var zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(zt>>>26)|0,zt&=67108863,l=Math.imul(E,vt),f=Math.imul(E,ut),f=f+Math.imul(L,vt)|0,c=Math.imul(L,ut),l=l+Math.imul(w,lt)|0,f=f+Math.imul(w,pt)|0,f=f+Math.imul(S,lt)|0,c=c+Math.imul(S,pt)|0;var Dt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l=Math.imul(F,vt),f=Math.imul(F,ut),f=f+Math.imul(Q,vt)|0,c=Math.imul(Q,ut),l=l+Math.imul(E,lt)|0,f=f+Math.imul(E,pt)|0,f=f+Math.imul(L,lt)|0,c=c+Math.imul(L,pt)|0,l=l+Math.imul(w,ct)|0,f=f+Math.imul(w,wt)|0,f=f+Math.imul(S,ct)|0,c=c+Math.imul(S,wt)|0;var Jt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,l=Math.imul(Y,vt),f=Math.imul(Y,ut),f=f+Math.imul(G,vt)|0,c=Math.imul(G,ut),l=l+Math.imul(F,lt)|0,f=f+Math.imul(F,pt)|0,f=f+Math.imul(Q,lt)|0,c=c+Math.imul(Q,pt)|0,l=l+Math.imul(E,ct)|0,f=f+Math.imul(E,wt)|0,f=f+Math.imul(L,ct)|0,c=c+Math.imul(L,wt)|0,l=l+Math.imul(w,Bt)|0,f=f+Math.imul(w,Ct)|0,f=f+Math.imul(S,Bt)|0,c=c+Math.imul(S,Ct)|0;var Qt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,l=Math.imul(W,vt),f=Math.imul(W,ut),f=f+Math.imul(X,vt)|0,c=Math.imul(X,ut),l=l+Math.imul(Y,lt)|0,f=f+Math.imul(Y,pt)|0,f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,pt)|0,l=l+Math.imul(F,ct)|0,f=f+Math.imul(F,wt)|0,f=f+Math.imul(Q,ct)|0,c=c+Math.imul(Q,wt)|0,l=l+Math.imul(E,Bt)|0,f=f+Math.imul(E,Ct)|0,f=f+Math.imul(L,Bt)|0,c=c+Math.imul(L,Ct)|0,l=l+Math.imul(w,ot)|0,f=f+Math.imul(w,st)|0,f=f+Math.imul(S,ot)|0,c=c+Math.imul(S,st)|0;var Xt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,l=Math.imul(At,vt),f=Math.imul(At,ut),f=f+Math.imul(at,vt)|0,c=Math.imul(at,ut),l=l+Math.imul(W,lt)|0,f=f+Math.imul(W,pt)|0,f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,pt)|0,l=l+Math.imul(Y,ct)|0,f=f+Math.imul(Y,wt)|0,f=f+Math.imul(G,ct)|0,c=c+Math.imul(G,wt)|0,l=l+Math.imul(F,Bt)|0,f=f+Math.imul(F,Ct)|0,f=f+Math.imul(Q,Bt)|0,c=c+Math.imul(Q,Ct)|0,l=l+Math.imul(E,ot)|0,f=f+Math.imul(E,st)|0,f=f+Math.imul(L,ot)|0,c=c+Math.imul(L,st)|0,l=l+Math.imul(w,Mt)|0,f=f+Math.imul(w,It)|0,f=f+Math.imul(S,Mt)|0,c=c+Math.imul(S,It)|0;var te=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(te>>>26)|0,te&=67108863,l=Math.imul(_t,vt),f=Math.imul(_t,ut),f=f+Math.imul(gt,vt)|0,c=Math.imul(gt,ut),l=l+Math.imul(At,lt)|0,f=f+Math.imul(At,pt)|0,f=f+Math.imul(at,lt)|0,c=c+Math.imul(at,pt)|0,l=l+Math.imul(W,ct)|0,f=f+Math.imul(W,wt)|0,f=f+Math.imul(X,ct)|0,c=c+Math.imul(X,wt)|0,l=l+Math.imul(Y,Bt)|0,f=f+Math.imul(Y,Ct)|0,f=f+Math.imul(G,Bt)|0,c=c+Math.imul(G,Ct)|0,l=l+Math.imul(F,ot)|0,f=f+Math.imul(F,st)|0,f=f+Math.imul(Q,ot)|0,c=c+Math.imul(Q,st)|0,l=l+Math.imul(E,Mt)|0,f=f+Math.imul(E,It)|0,f=f+Math.imul(L,Mt)|0,c=c+Math.imul(L,It)|0,l=l+Math.imul(w,ft)|0,f=f+Math.imul(w,Et)|0,f=f+Math.imul(S,ft)|0,c=c+Math.imul(S,Et)|0;var ie=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ie>>>26)|0,ie&=67108863,l=Math.imul(dt,vt),f=Math.imul(dt,ut),f=f+Math.imul(mt,vt)|0,c=Math.imul(mt,ut),l=l+Math.imul(_t,lt)|0,f=f+Math.imul(_t,pt)|0,f=f+Math.imul(gt,lt)|0,c=c+Math.imul(gt,pt)|0,l=l+Math.imul(At,ct)|0,f=f+Math.imul(At,wt)|0,f=f+Math.imul(at,ct)|0,c=c+Math.imul(at,wt)|0,l=l+Math.imul(W,Bt)|0,f=f+Math.imul(W,Ct)|0,f=f+Math.imul(X,Bt)|0,c=c+Math.imul(X,Ct)|0,l=l+Math.imul(Y,ot)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(G,ot)|0,c=c+Math.imul(G,st)|0,l=l+Math.imul(F,Mt)|0,f=f+Math.imul(F,It)|0,f=f+Math.imul(Q,Mt)|0,c=c+Math.imul(Q,It)|0,l=l+Math.imul(E,ft)|0,f=f+Math.imul(E,Et)|0,f=f+Math.imul(L,ft)|0,c=c+Math.imul(L,Et)|0,l=l+Math.imul(w,R)|0,f=f+Math.imul(w,q)|0,f=f+Math.imul(S,R)|0,c=c+Math.imul(S,q)|0;var re=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(re>>>26)|0,re&=67108863,l=Math.imul(bt,vt),f=Math.imul(bt,ut),f=f+Math.imul(yt,vt)|0,c=Math.imul(yt,ut),l=l+Math.imul(dt,lt)|0,f=f+Math.imul(dt,pt)|0,f=f+Math.imul(mt,lt)|0,c=c+Math.imul(mt,pt)|0,l=l+Math.imul(_t,ct)|0,f=f+Math.imul(_t,wt)|0,f=f+Math.imul(gt,ct)|0,c=c+Math.imul(gt,wt)|0,l=l+Math.imul(At,Bt)|0,f=f+Math.imul(At,Ct)|0,f=f+Math.imul(at,Bt)|0,c=c+Math.imul(at,Ct)|0,l=l+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(X,ot)|0,c=c+Math.imul(X,st)|0,l=l+Math.imul(Y,Mt)|0,f=f+Math.imul(Y,It)|0,f=f+Math.imul(G,Mt)|0,c=c+Math.imul(G,It)|0,l=l+Math.imul(F,ft)|0,f=f+Math.imul(F,Et)|0,f=f+Math.imul(Q,ft)|0,c=c+Math.imul(Q,Et)|0,l=l+Math.imul(E,R)|0,f=f+Math.imul(E,q)|0,f=f+Math.imul(L,R)|0,c=c+Math.imul(L,q)|0,l=l+Math.imul(w,O)|0,f=f+Math.imul(w,N)|0,f=f+Math.imul(S,O)|0,c=c+Math.imul(S,N)|0;var ne=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ne>>>26)|0,ne&=67108863,l=Math.imul(St,vt),f=Math.imul(St,ut),f=f+Math.imul(xt,vt)|0,c=Math.imul(xt,ut),l=l+Math.imul(bt,lt)|0,f=f+Math.imul(bt,pt)|0,f=f+Math.imul(yt,lt)|0,c=c+Math.imul(yt,pt)|0,l=l+Math.imul(dt,ct)|0,f=f+Math.imul(dt,wt)|0,f=f+Math.imul(mt,ct)|0,c=c+Math.imul(mt,wt)|0,l=l+Math.imul(_t,Bt)|0,f=f+Math.imul(_t,Ct)|0,f=f+Math.imul(gt,Bt)|0,c=c+Math.imul(gt,Ct)|0,l=l+Math.imul(At,ot)|0,f=f+Math.imul(At,st)|0,f=f+Math.imul(at,ot)|0,c=c+Math.imul(at,st)|0,l=l+Math.imul(W,Mt)|0,f=f+Math.imul(W,It)|0,f=f+Math.imul(X,Mt)|0,c=c+Math.imul(X,It)|0,l=l+Math.imul(Y,ft)|0,f=f+Math.imul(Y,Et)|0,f=f+Math.imul(G,ft)|0,c=c+Math.imul(G,Et)|0,l=l+Math.imul(F,R)|0,f=f+Math.imul(F,q)|0,f=f+Math.imul(Q,R)|0,c=c+Math.imul(Q,q)|0,l=l+Math.imul(E,O)|0,f=f+Math.imul(E,N)|0,f=f+Math.imul(L,O)|0,c=c+Math.imul(L,N)|0,l=l+Math.imul(w,H)|0,f=f+Math.imul(w,z)|0,f=f+Math.imul(S,H)|0,c=c+Math.imul(S,z)|0;var ae=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(St,lt),f=Math.imul(St,pt),f=f+Math.imul(xt,lt)|0,c=Math.imul(xt,pt),l=l+Math.imul(bt,ct)|0,f=f+Math.imul(bt,wt)|0,f=f+Math.imul(yt,ct)|0,c=c+Math.imul(yt,wt)|0,l=l+Math.imul(dt,Bt)|0,f=f+Math.imul(dt,Ct)|0,f=f+Math.imul(mt,Bt)|0,c=c+Math.imul(mt,Ct)|0,l=l+Math.imul(_t,ot)|0,f=f+Math.imul(_t,st)|0,f=f+Math.imul(gt,ot)|0,c=c+Math.imul(gt,st)|0,l=l+Math.imul(At,Mt)|0,f=f+Math.imul(At,It)|0,f=f+Math.imul(at,Mt)|0,c=c+Math.imul(at,It)|0,l=l+Math.imul(W,ft)|0,f=f+Math.imul(W,Et)|0,f=f+Math.imul(X,ft)|0,c=c+Math.imul(X,Et)|0,l=l+Math.imul(Y,R)|0,f=f+Math.imul(Y,q)|0,f=f+Math.imul(G,R)|0,c=c+Math.imul(G,q)|0,l=l+Math.imul(F,O)|0,f=f+Math.imul(F,N)|0,f=f+Math.imul(Q,O)|0,c=c+Math.imul(Q,N)|0,l=l+Math.imul(E,H)|0,f=f+Math.imul(E,z)|0,f=f+Math.imul(L,H)|0,c=c+Math.imul(L,z)|0;var fe=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(fe>>>26)|0,fe&=67108863,l=Math.imul(St,ct),f=Math.imul(St,wt),f=f+Math.imul(xt,ct)|0,c=Math.imul(xt,wt),l=l+Math.imul(bt,Bt)|0,f=f+Math.imul(bt,Ct)|0,f=f+Math.imul(yt,Bt)|0,c=c+Math.imul(yt,Ct)|0,l=l+Math.imul(dt,ot)|0,f=f+Math.imul(dt,st)|0,f=f+Math.imul(mt,ot)|0,c=c+Math.imul(mt,st)|0,l=l+Math.imul(_t,Mt)|0,f=f+Math.imul(_t,It)|0,f=f+Math.imul(gt,Mt)|0,c=c+Math.imul(gt,It)|0,l=l+Math.imul(At,ft)|0,f=f+Math.imul(At,Et)|0,f=f+Math.imul(at,ft)|0,c=c+Math.imul(at,Et)|0,l=l+Math.imul(W,R)|0,f=f+Math.imul(W,q)|0,f=f+Math.imul(X,R)|0,c=c+Math.imul(X,q)|0,l=l+Math.imul(Y,O)|0,f=f+Math.imul(Y,N)|0,f=f+Math.imul(G,O)|0,c=c+Math.imul(G,N)|0,l=l+Math.imul(F,H)|0,f=f+Math.imul(F,z)|0,f=f+Math.imul(Q,H)|0,c=c+Math.imul(Q,z)|0;var Vt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,l=Math.imul(St,Bt),f=Math.imul(St,Ct),f=f+Math.imul(xt,Bt)|0,c=Math.imul(xt,Ct),l=l+Math.imul(bt,ot)|0,f=f+Math.imul(bt,st)|0,f=f+Math.imul(yt,ot)|0,c=c+Math.imul(yt,st)|0,l=l+Math.imul(dt,Mt)|0,f=f+Math.imul(dt,It)|0,f=f+Math.imul(mt,Mt)|0,c=c+Math.imul(mt,It)|0,l=l+Math.imul(_t,ft)|0,f=f+Math.imul(_t,Et)|0,f=f+Math.imul(gt,ft)|0,c=c+Math.imul(gt,Et)|0,l=l+Math.imul(At,R)|0,f=f+Math.imul(At,q)|0,f=f+Math.imul(at,R)|0,c=c+Math.imul(at,q)|0,l=l+Math.imul(W,O)|0,f=f+Math.imul(W,N)|0,f=f+Math.imul(X,O)|0,c=c+Math.imul(X,N)|0,l=l+Math.imul(Y,H)|0,f=f+Math.imul(Y,z)|0,f=f+Math.imul(G,H)|0,c=c+Math.imul(G,z)|0;var Wt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,l=Math.imul(St,ot),f=Math.imul(St,st),f=f+Math.imul(xt,ot)|0,c=Math.imul(xt,st),l=l+Math.imul(bt,Mt)|0,f=f+Math.imul(bt,It)|0,f=f+Math.imul(yt,Mt)|0,c=c+Math.imul(yt,It)|0,l=l+Math.imul(dt,ft)|0,f=f+Math.imul(dt,Et)|0,f=f+Math.imul(mt,ft)|0,c=c+Math.imul(mt,Et)|0,l=l+Math.imul(_t,R)|0,f=f+Math.imul(_t,q)|0,f=f+Math.imul(gt,R)|0,c=c+Math.imul(gt,q)|0,l=l+Math.imul(At,O)|0,f=f+Math.imul(At,N)|0,f=f+Math.imul(at,O)|0,c=c+Math.imul(at,N)|0,l=l+Math.imul(W,H)|0,f=f+Math.imul(W,z)|0,f=f+Math.imul(X,H)|0,c=c+Math.imul(X,z)|0;var Ht=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,l=Math.imul(St,Mt),f=Math.imul(St,It),f=f+Math.imul(xt,Mt)|0,c=Math.imul(xt,It),l=l+Math.imul(bt,ft)|0,f=f+Math.imul(bt,Et)|0,f=f+Math.imul(yt,ft)|0,c=c+Math.imul(yt,Et)|0,l=l+Math.imul(dt,R)|0,f=f+Math.imul(dt,q)|0,f=f+Math.imul(mt,R)|0,c=c+Math.imul(mt,q)|0,l=l+Math.imul(_t,O)|0,f=f+Math.imul(_t,N)|0,f=f+Math.imul(gt,O)|0,c=c+Math.imul(gt,N)|0,l=l+Math.imul(At,H)|0,f=f+Math.imul(At,z)|0,f=f+Math.imul(at,H)|0,c=c+Math.imul(at,z)|0;var Yt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,l=Math.imul(St,ft),f=Math.imul(St,Et),f=f+Math.imul(xt,ft)|0,c=Math.imul(xt,Et),l=l+Math.imul(bt,R)|0,f=f+Math.imul(bt,q)|0,f=f+Math.imul(yt,R)|0,c=c+Math.imul(yt,q)|0,l=l+Math.imul(dt,O)|0,f=f+Math.imul(dt,N)|0,f=f+Math.imul(mt,O)|0,c=c+Math.imul(mt,N)|0,l=l+Math.imul(_t,H)|0,f=f+Math.imul(_t,z)|0,f=f+Math.imul(gt,H)|0,c=c+Math.imul(gt,z)|0;var Zt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,l=Math.imul(St,R),f=Math.imul(St,q),f=f+Math.imul(xt,R)|0,c=Math.imul(xt,q),l=l+Math.imul(bt,O)|0,f=f+Math.imul(bt,N)|0,f=f+Math.imul(yt,O)|0,c=c+Math.imul(yt,N)|0,l=l+Math.imul(dt,H)|0,f=f+Math.imul(dt,z)|0,f=f+Math.imul(mt,H)|0,c=c+Math.imul(mt,z)|0;var Kt=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,l=Math.imul(St,O),f=Math.imul(St,N),f=f+Math.imul(xt,O)|0,c=Math.imul(xt,N),l=l+Math.imul(bt,H)|0,f=f+Math.imul(bt,z)|0,f=f+Math.imul(yt,H)|0,c=c+Math.imul(yt,z)|0;var it=(g+l|0)+((f&8191)<<13)|0;g=(c+(f>>>13)|0)+(it>>>26)|0,it&=67108863,l=Math.imul(St,H),f=Math.imul(St,z),f=f+Math.imul(xt,H)|0,c=Math.imul(xt,z);var nt=(g+l|0)+((f&8191)<<13)|0;return g=(c+(f>>>13)|0)+(nt>>>26)|0,nt&=67108863,p[0]=zt,p[1]=Dt,p[2]=Jt,p[3]=Qt,p[4]=Xt,p[5]=te,p[6]=ie,p[7]=re,p[8]=ne,p[9]=ae,p[10]=fe,p[11]=Vt,p[12]=Wt,p[13]=Ht,p[14]=Yt,p[15]=Zt,p[16]=Kt,p[17]=it,p[18]=nt,g!==0&&(p[19]=g,h.length++),h};Math.imul||(Z=j);function qt(v,i,o){o.negative=i.negative^v.negative,o.length=v.length+i.length;for(var h=0,s=0,u=0;u>>26)|0,s+=p>>>26,p&=67108863}o.words[u]=g,h=p,p=s}return h!==0?o.words[u]=h:o.length--,o.strip()}function Rt(v,i,o){var h=new J;return h.mulp(v,i,o)}n.prototype.mulTo=function(i,o){var h,s=this.length+i.length;return this.length===10&&i.length===10?h=Z(this,i,o):s<63?h=j(this,i,o):s<1024?h=qt(this,i,o):h=Rt(this,i,o),h};function J(v,i){this.x=v,this.y=i}J.prototype.makeRBT=function(i){for(var o=new Array(i),h=n.prototype._countBits(i)-1,s=0;s>=1;return s},J.prototype.permute=function(i,o,h,s,u,p){for(var g=0;g>>1)u++;return 1<>>13,h[2*p+1]=u&8191,u=u>>>13;for(p=2*o;p>=26,o+=s/67108864|0,o+=u>>>26,this.words[h]=u&67108863}return o!==0&&(this.words[h]=o,this.length++),this},n.prototype.muln=function(i){return this.clone().imuln(i)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(i){var o=K(i);if(o.length===0)return new n(1);for(var h=this,s=0;s=0);var o=i%26,h=(i-o)/26,s=67108863>>>26-o<<26-o,u;if(o!==0){var p=0;for(u=0;u>>26-o}p&&(this.words[u]=p,this.length++)}if(h!==0){for(u=this.length-1;u>=0;u--)this.words[u+h]=this.words[u];for(u=0;u=0);var s;o?s=(o-o%26)/26:s=0;var u=i%26,p=Math.min((i-u)/26,this.length),g=67108863^67108863>>>u<p)for(this.length-=p,f=0;f=0&&(c!==0||f>=s);f--){var I=this.words[f]|0;this.words[f]=c<<26-u|I>>>u,c=I&g}return l&&c!==0&&(l.words[l.length++]=c),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(i,o,h){return r(this.negative===0),this.iushrn(i,o,h)},n.prototype.shln=function(i){return this.clone().ishln(i)},n.prototype.ushln=function(i){return this.clone().iushln(i)},n.prototype.shrn=function(i){return this.clone().ishrn(i)},n.prototype.ushrn=function(i){return this.clone().iushrn(i)},n.prototype.testn=function(i){r(typeof i=="number"&&i>=0);var o=i%26,h=(i-o)/26,s=1<=0);var o=i%26,h=(i-o)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=h)return this;if(o!==0&&h++,this.length=Math.min(h,this.length),o!==0){var s=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(i){if(r(typeof i=="number"),r(i<67108864),i<0)return this.iaddn(-i);if(this.negative!==0)return this.negative=0,this.iaddn(i),this.negative=1,this;if(this.words[0]-=i,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(l/67108864|0),this.words[u+h]=p&67108863}for(;u>26,this.words[u+h]=p&67108863;if(g===0)return this.strip();for(r(g===-1),g=0,u=0;u>26,this.words[u]=p&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(i,o){var h=this.length-i.length,s=this.clone(),u=i,p=u.words[u.length-1]|0,g=this._countBits(p);h=26-g,h!==0&&(u=u.ushln(h),s.iushln(h),p=u.words[u.length-1]|0);var l=s.length-u.length,f;if(o!=="mod"){f=new n(null),f.length=l+1,f.words=new Array(f.length);for(var c=0;c=0;w--){var S=(s.words[u.length+w]|0)*67108864+(s.words[u.length+w-1]|0);for(S=Math.min(S/p|0,67108863),s._ishlnsubmul(u,S,w);s.negative!==0;)S--,s.negative=0,s._ishlnsubmul(u,1,w),s.isZero()||(s.negative^=1);f&&(f.words[w]=S)}return f&&f.strip(),s.strip(),o!=="div"&&h!==0&&s.iushrn(h),{div:f||null,mod:s}},n.prototype.divmod=function(i,o,h){if(r(!i.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var s,u,p;return this.negative!==0&&i.negative===0?(p=this.neg().divmod(i,o),o!=="mod"&&(s=p.div.neg()),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.iadd(i)),{div:s,mod:u}):this.negative===0&&i.negative!==0?(p=this.divmod(i.neg(),o),o!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&i.negative)!==0?(p=this.neg().divmod(i.neg(),o),o!=="div"&&(u=p.mod.neg(),h&&u.negative!==0&&u.isub(i)),{div:p.div,mod:u}):i.length>this.length||this.cmp(i)<0?{div:new n(0),mod:this}:i.length===1?o==="div"?{div:this.divn(i.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modn(i.words[0]))}:{div:this.divn(i.words[0]),mod:new n(this.modn(i.words[0]))}:this._wordDiv(i,o)},n.prototype.div=function(i){return this.divmod(i,"div",!1).div},n.prototype.mod=function(i){return this.divmod(i,"mod",!1).mod},n.prototype.umod=function(i){return this.divmod(i,"mod",!0).mod},n.prototype.divRound=function(i){var o=this.divmod(i);if(o.mod.isZero())return o.div;var h=o.div.negative!==0?o.mod.isub(i):o.mod,s=i.ushrn(1),u=i.andln(1),p=h.cmp(s);return p<0||u===1&&p===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modn=function(i){r(i<=67108863);for(var o=(1<<26)%i,h=0,s=this.length-1;s>=0;s--)h=(o*h+(this.words[s]|0))%i;return h},n.prototype.idivn=function(i){r(i<=67108863);for(var o=0,h=this.length-1;h>=0;h--){var s=(this.words[h]|0)+o*67108864;this.words[h]=s/i|0,o=s%i}return this.strip()},n.prototype.divn=function(i){return this.clone().idivn(i)},n.prototype.egcd=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=new n(0),g=new n(1),l=0;o.isEven()&&h.isEven();)o.iushrn(1),h.iushrn(1),++l;for(var f=h.clone(),c=o.clone();!o.isZero();){for(var I=0,w=1;(o.words[0]&w)===0&&I<26;++I,w<<=1);if(I>0)for(o.iushrn(I);I-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(c)),s.iushrn(1),u.iushrn(1);for(var S=0,k=1;(h.words[0]&k)===0&&S<26;++S,k<<=1);if(S>0)for(h.iushrn(S);S-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(f),g.isub(c)),p.iushrn(1),g.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(p),u.isub(g)):(h.isub(o),p.isub(s),g.isub(u))}return{a:p,b:g,gcd:h.iushln(l)}},n.prototype._invmp=function(i){r(i.negative===0),r(!i.isZero());var o=this,h=i.clone();o.negative!==0?o=o.umod(i):o=o.clone();for(var s=new n(1),u=new n(0),p=h.clone();o.cmpn(1)>0&&h.cmpn(1)>0;){for(var g=0,l=1;(o.words[0]&l)===0&&g<26;++g,l<<=1);if(g>0)for(o.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var f=0,c=1;(h.words[0]&c)===0&&f<26;++f,c<<=1);if(f>0)for(h.iushrn(f);f-- >0;)u.isOdd()&&u.iadd(p),u.iushrn(1);o.cmp(h)>=0?(o.isub(h),s.isub(u)):(h.isub(o),u.isub(s))}var I;return o.cmpn(1)===0?I=s:I=u,I.cmpn(0)<0&&I.iadd(i),I},n.prototype.gcd=function(i){if(this.isZero())return i.abs();if(i.isZero())return this.abs();var o=this.clone(),h=i.clone();o.negative=0,h.negative=0;for(var s=0;o.isEven()&&h.isEven();s++)o.iushrn(1),h.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;h.isEven();)h.iushrn(1);var u=o.cmp(h);if(u<0){var p=o;o=h,h=p}else if(u===0||h.cmpn(1)===0)break;o.isub(h)}while(!0);return h.iushln(s)},n.prototype.invm=function(i){return this.egcd(i).a.umod(i)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(i){return this.words[0]&i},n.prototype.bincn=function(i){r(typeof i=="number");var o=i%26,h=(i-o)/26,s=1<>>26,g&=67108863,this.words[p]=g}return u!==0&&(this.words[p]=u,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(i){var o=i<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this.strip();var h;if(this.length>1)h=1;else{o&&(i=-i),r(i<=67108863,"Number is too big");var s=this.words[0]|0;h=s===i?0:si.length)return 1;if(this.length=0;h--){var s=this.words[h]|0,u=i.words[h]|0;if(s!==u){su&&(o=1);break}}return o},n.prototype.gtn=function(i){return this.cmpn(i)===1},n.prototype.gt=function(i){return this.cmp(i)===1},n.prototype.gten=function(i){return this.cmpn(i)>=0},n.prototype.gte=function(i){return this.cmp(i)>=0},n.prototype.ltn=function(i){return this.cmpn(i)===-1},n.prototype.lt=function(i){return this.cmp(i)===-1},n.prototype.lten=function(i){return this.cmpn(i)<=0},n.prototype.lte=function(i){return this.cmp(i)<=0},n.prototype.eqn=function(i){return this.cmpn(i)===0},n.prototype.eq=function(i){return this.cmp(i)===0},n.red=function(i){return new tt(i)},n.prototype.toRed=function(i){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),i.convertTo(this)._forceRed(i)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(i){return this.red=i,this},n.prototype.forceRed=function(i){return r(!this.red,"Already a number in reduction context"),this._forceRed(i)},n.prototype.redAdd=function(i){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,i)},n.prototype.redIAdd=function(i){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,i)},n.prototype.redSub=function(i){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,i)},n.prototype.redISub=function(i){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,i)},n.prototype.redShl=function(i){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,i)},n.prototype.redMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.mul(this,i)},n.prototype.redIMul=function(i){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,i),this.red.imul(this,i)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(i){return r(this.red&&!i.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,i)};var Ot={k256:null,p224:null,p192:null,p25519:null};function ht(v,i){this.name=v,this.p=new n(i,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ht.prototype._tmp=function(){var i=new n(null);return i.words=new Array(Math.ceil(this.n/13)),i},ht.prototype.ireduce=function(i){var o=i,h;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),h=o.bitLength();while(h>this.n);var s=h0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},ht.prototype.split=function(i,o){i.iushrn(this.n,0,o)},ht.prototype.imulK=function(i){return i.imul(this.k)};function Lt(){ht.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(Lt,ht),Lt.prototype.split=function(i,o){for(var h=4194303,s=Math.min(i.length,9),u=0;u>>22,p=g}p>>>=22,i.words[u-10]=p,p===0&&i.length>10?i.length-=10:i.length-=9},Lt.prototype.imulK=function(i){i.words[i.length]=0,i.words[i.length+1]=0,i.length+=2;for(var o=0,h=0;h>>=26,i.words[h]=u,o=s}return o!==0&&(i.words[i.length++]=o),i},n._prime=function(i){if(Ot[i])return Ot[i];var o;if(i==="k256")o=new Lt;else if(i==="p224")o=new ee;else if(i==="p192")o=new $t;else if(i==="p25519")o=new Gt;else throw new Error("Unknown prime "+i);return Ot[i]=o,o};function tt(v){if(typeof v=="string"){var i=n._prime(v);this.m=i.p,this.prime=i}else r(v.gtn(1),"modulus must be greater than 1"),this.m=v,this.prime=null}tt.prototype._verify1=function(i){r(i.negative===0,"red works only with positives"),r(i.red,"red works only with red numbers")},tt.prototype._verify2=function(i,o){r((i.negative|o.negative)===0,"red works only with positives"),r(i.red&&i.red===o.red,"red works only with red numbers")},tt.prototype.imod=function(i){return this.prime?this.prime.ireduce(i)._forceRed(this):i.umod(this.m)._forceRed(this)},tt.prototype.neg=function(i){return i.isZero()?i.clone():this.m.sub(i)._forceRed(this)},tt.prototype.add=function(i,o){this._verify2(i,o);var h=i.add(o);return h.cmp(this.m)>=0&&h.isub(this.m),h._forceRed(this)},tt.prototype.iadd=function(i,o){this._verify2(i,o);var h=i.iadd(o);return h.cmp(this.m)>=0&&h.isub(this.m),h},tt.prototype.sub=function(i,o){this._verify2(i,o);var h=i.sub(o);return h.cmpn(0)<0&&h.iadd(this.m),h._forceRed(this)},tt.prototype.isub=function(i,o){this._verify2(i,o);var h=i.isub(o);return h.cmpn(0)<0&&h.iadd(this.m),h},tt.prototype.shl=function(i,o){return this._verify1(i),this.imod(i.ushln(o))},tt.prototype.imul=function(i,o){return this._verify2(i,o),this.imod(i.imul(o))},tt.prototype.mul=function(i,o){return this._verify2(i,o),this.imod(i.mul(o))},tt.prototype.isqr=function(i){return this.imul(i,i.clone())},tt.prototype.sqr=function(i){return this.mul(i,i)},tt.prototype.sqrt=function(i){if(i.isZero())return i.clone();var o=this.m.andln(3);if(r(o%2===1),o===3){var h=this.m.add(new n(1)).iushrn(2);return this.pow(i,h)}for(var s=this.m.subn(1),u=0;!s.isZero()&&s.andln(1)===0;)u++,s.iushrn(1);r(!s.isZero());var p=new n(1).toRed(this),g=p.redNeg(),l=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new n(2*f*f).toRed(this);this.pow(f,l).cmp(g)!==0;)f.redIAdd(g);for(var c=this.pow(f,s),I=this.pow(i,s.addn(1).iushrn(1)),w=this.pow(i,s),S=u;w.cmp(p)!==0;){for(var k=w,E=0;k.cmp(p)!==0;E++)k=k.redSqr();r(E=0;u--){for(var c=o.words[u],I=f-1;I>=0;I--){var w=c>>I&1;if(p!==s[0]&&(p=this.sqr(p)),w===0&&g===0){l=0;continue}g<<=1,g|=w,l++,!(l!==h&&(u!==0||I!==0))&&(p=this.mul(p,s[g]),l=0,g=0)}f=26}return p},tt.prototype.convertTo=function(i){var o=i.umod(this.m);return o===i?o.clone():o},tt.prototype.convertFrom=function(i){var o=i.clone();return o.red=null,o},n.mont=function(i){return new rt(i)};function rt(v){tt.call(this,v),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(rt,tt),rt.prototype.convertTo=function(i){return this.imod(i.ushln(this.shift))},rt.prototype.convertFrom=function(i){var o=this.imod(i.mul(this.rinv));return o.red=null,o},rt.prototype.imul=function(i,o){if(i.isZero()||o.isZero())return i.words[0]=0,i.length=1,i;var h=i.imul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.mul=function(i,o){if(i.isZero()||o.isZero())return new n(0)._forceRed(this);var h=i.mul(o),s=h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=h.isub(s).iushrn(this.shift),p=u;return u.cmp(this.m)>=0?p=u.isub(this.m):u.cmpn(0)<0&&(p=u.iadd(this.m)),p._forceRed(this)},rt.prototype.invm=function(i){var o=this.imod(i._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(typeof cp>"u"||cp,$A)});var dp=P((Wnt,WA)=>{M();var ZA=Du(),nH=ve().Buffer;function fH(e,t){return nH.from(e.toRed(ZA.mont(t.modulus)).redPow(new ZA(t.publicExponent)).fromRed().toArray())}WA.exports=fH});var e9=P((Xnt,t9)=>{M();var aH=qs(),vp=qf(),oH=Ba(),JA=up(),XA=lp(),pp=Du(),sH=dp(),hH=fu(),Di=ve().Buffer;t9.exports=function(t,r,a){var n;t.padding?n=t.padding:a?n=1:n=4;var d=aH(t),m;if(n===4)m=uH(d,r);else if(n===1)m=lH(d,r,a);else if(n===3){if(m=new pp(r),m.cmp(d.modulus)>=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return a?hH(m,d):sH(m,d)};function uH(e,t){var r=e.modulus.byteLength(),a=t.length,n=oH("sha1").update(Di.alloc(0)).digest(),d=n.length,m=2*d;if(a>r-m-2)throw new Error("message too long");var b=Di.alloc(r-a-m-2),A=r-d-1,B=vp(d),C=XA(Di.concat([n,b,Di.alloc(1,1),t],A),JA(B,A)),D=XA(B,JA(C,d));return new pp(Di.concat([Di.alloc(1),D,C],r))}function lH(e,t,r){var a=t.length,n=e.modulus.byteLength();if(a>n-11)throw new Error("message too long");var d;return r?d=Di.alloc(n-a-3,255):d=cH(n-a-3),new pp(Di.concat([Di.from([0,r?1:2]),d,Di.alloc(1),t],n))}function cH(e){for(var t=Di.allocUnsafe(e),r=0,a=vp(e*2),n=0,d;r{M();var dH=qs(),r9=up(),i9=lp(),n9=Du(),vH=fu(),pH=Ba(),gH=dp(),Ds=ve().Buffer;f9.exports=function(t,r,a){var n;t.padding?n=t.padding:a?n=1:n=4;var d=dH(t),m=d.modulus.byteLength();if(r.length>m||new n9(r).cmp(d.modulus)>=0)throw new Error("decryption error");var b;a?b=gH(new n9(r),d):b=vH(r,d);var A=Ds.alloc(m-b.length);if(b=Ds.concat([A,b],m),n===4)return mH(d,b);if(n===1)return bH(d,b,a);if(n===3)return b;throw new Error("unknown padding")};function mH(e,t){var r=e.modulus.byteLength(),a=pH("sha1").update(Ds.alloc(0)).digest(),n=a.length;if(t[0]!==0)throw new Error("decryption error");var d=t.slice(1,n+1),m=t.slice(n+1),b=i9(d,r9(m,n)),A=i9(m,r9(b,r-n-1));if(yH(a,A.slice(0,n)))throw new Error("decryption error");for(var B=n;A[B]===0;)B++;if(A[B++]!==1)throw new Error("decryption error");return A.slice(B)}function bH(e,t,r){for(var a=t.slice(0,2),n=2,d=0;t[n++]!==0;)if(n>=t.length){d++;break}var m=t.slice(2,n-1);if((a.toString("hex")!=="0002"&&!r||a.toString("hex")!=="0001"&&r)&&d++,m.length<8&&d++,d)throw new Error("decryption error");return t.slice(n)}function yH(e,t){e=Ds.from(e),t=Ds.from(t);var r=0,a=e.length;e.length!==t.length&&(r++,a=Math.min(e.length,t.length));for(var n=-1;++n{M();ra.publicEncrypt=e9();ra.privateDecrypt=a9();ra.privateEncrypt=function(t,r){return ra.publicEncrypt(t,r,!0)};ra.publicDecrypt=function(t,r){return ra.privateDecrypt(t,r,!0)}});var m9=P(ks=>{"use strict";M();function s9(){throw new Error(`secure random number generation not supported by this browser +use chrome, FireFox or Internet Explorer 11`)}var u9=ve(),h9=qf(),l9=u9.Buffer,c9=u9.kMaxLength,gp=window.crypto||window.msCrypto,d9=Math.pow(2,32)-1;function v9(e,t){if(typeof e!="number"||e!==e)throw new TypeError("offset must be a number");if(e>d9||e<0)throw new TypeError("offset must be a uint32");if(e>c9||e>t)throw new RangeError("offset out of range")}function p9(e,t,r){if(typeof e!="number"||e!==e)throw new TypeError("size must be a number");if(e>d9||e<0)throw new TypeError("size must be a uint32");if(e+t>r||e>c9)throw new RangeError("buffer too small")}gp&&gp.getRandomValues||!process.browser?(ks.randomFill=xH,ks.randomFillSync=wH):(ks.randomFill=s9,ks.randomFillSync=s9);function xH(e,t,r,a){if(!l9.isBuffer(e)&&!(e instanceof window.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof t=="function")a=t,t=0,r=e.length;else if(typeof r=="function")a=r,r=e.length-t;else if(typeof a!="function")throw new TypeError('"cb" argument must be a function');return v9(t,e.length),p9(r,t,e.length),g9(e,t,r,a)}function g9(e,t,r,a){if(process.browser){var n=e.buffer,d=new Uint8Array(n,t,r);if(gp.getRandomValues(d),a){process.nextTick(function(){a(null,e)});return}return e}if(a){h9(r,function(b,A){if(b)return a(b);A.copy(e,t),a(null,e)});return}var m=h9(r);return m.copy(e,t),e}function wH(e,t,r){if(typeof t>"u"&&(t=0),!l9.isBuffer(e)&&!(e instanceof window.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return v9(t,e.length),r===void 0&&(r=e.length-t),p9(r,t,e.length),g9(e,t,r)}});var mp=P(me=>{"use strict";M();me.randomBytes=me.rng=me.pseudoRandomBytes=me.prng=qf();me.createHash=me.Hash=Ba();me.createHmac=me.Hmac=q1();var MH=qw(),AH=Object.keys(MH),_H=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(AH);me.getHashes=function(){return _H};var b9=F1();me.pbkdf2=b9.pbkdf2;me.pbkdf2Sync=b9.pbkdf2Sync;var en=J5();me.Cipher=en.Cipher;me.createCipher=en.createCipher;me.Cipheriv=en.Cipheriv;me.createCipheriv=en.createCipheriv;me.Decipher=en.Decipher;me.createDecipher=en.createDecipher;me.Decipheriv=en.Decipheriv;me.createDecipheriv=en.createDecipheriv;me.getCiphers=en.getCiphers;me.listCiphers=en.listCiphers;var Ps=dM();me.DiffieHellmanGroup=Ps.DiffieHellmanGroup;me.createDiffieHellmanGroup=Ps.createDiffieHellmanGroup;me.getDiffieHellman=Ps.getDiffieHellman;me.createDiffieHellman=Ps.createDiffieHellman;me.DiffieHellman=Ps.DiffieHellman;var ku=QA();me.createSign=ku.createSign;me.Sign=ku.Sign;me.createVerify=ku.createVerify;me.Verify=ku.Verify;me.createECDH=VA();var Pu=o9();me.publicEncrypt=Pu.publicEncrypt;me.privateEncrypt=Pu.privateEncrypt;me.publicDecrypt=Pu.publicDecrypt;me.privateDecrypt=Pu.privateDecrypt;var y9=m9();me.randomFill=y9.randomFill;me.randomFillSync=y9.randomFillSync;me.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join(` +`))};me.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}});var x9=P((hft,Uu)=>{M();(function(){"use strict";var e="input is invalid type",t="finalize already called",r=typeof window=="object",a=r?window:{};a.JS_SHA3_NO_WINDOW&&(r=!1);var n=!r&&typeof self=="object",d=!a.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?a=window:n&&(a=self);var m=!a.JS_SHA3_NO_COMMON_JS&&typeof Uu=="object"&&Uu.exports,b=typeof define=="function"&&define.amd,A=!a.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",B="0123456789abcdef".split(""),C=[31,7936,2031616,520093696],D=[4,1024,262144,67108864],K=[1,256,65536,16777216],j=[6,1536,393216,100663296],Z=[0,8,16,24],qt=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],Rt=[224,256,384,512],J=[128,256],Ot=["hex","buffer","arrayBuffer","array","digest"],ht={128:168,256:136};(a.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(E){return Object.prototype.toString.call(E)==="[object Array]"}),A&&(a.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(E){return typeof E=="object"&&E.buffer&&E.buffer.constructor===ArrayBuffer});for(var Lt=function(E,L,$){return function(F){return new w(E,L,E).update(F)[$]()}},ee=function(E,L,$){return function(F,Q){return new w(E,L,Q).update(F)[$]()}},$t=function(E,L,$){return function(F,Q,Ft,Y){return s["cshake"+E].update(F,Q,Ft,Y)[$]()}},Gt=function(E,L,$){return function(F,Q,Ft,Y){return s["kmac"+E].update(F,Q,Ft,Y)[$]()}},tt=function(E,L,$,F){for(var Q=0;Q>5,this.byteCount=this.blockCount<<2,this.outputBlocks=$>>5,this.extraBytes=($&31)>>3;for(var F=0;F<50;++F)this.s[F]=0}w.prototype.update=function(E){if(this.finalized)throw new Error(t);var L,$=typeof E;if($!=="string"){if($==="object"){if(E===null)throw new Error(e);if(A&&E.constructor===ArrayBuffer)E=new Uint8Array(E);else if(!Array.isArray(E)&&(!A||!ArrayBuffer.isView(E)))throw new Error(e)}else throw new Error(e);L=!0}for(var F=this.blocks,Q=this.byteCount,Ft=E.length,Y=this.blockCount,G=0,se=this.s,W,X;G>2]|=E[G]<>2]|=X<>2]|=(192|X>>6)<>2]|=(128|X&63)<=57344?(F[W>>2]|=(224|X>>12)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<>2]|=(240|X>>18)<>2]|=(128|X>>12&63)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<=Q){for(this.start=W-Q,this.block=F[Y],W=0;W>8,$=E&255;$>0;)Q.unshift($),E=E>>8,$=E&255,++F;return L?Q.push(F):Q.unshift(F),this.update(Q),Q.length},w.prototype.encodeString=function(E){var L,$=typeof E;if($!=="string"){if($==="object"){if(E===null)throw new Error(e);if(A&&E.constructor===ArrayBuffer)E=new Uint8Array(E);else if(!Array.isArray(E)&&(!A||!ArrayBuffer.isView(E)))throw new Error(e)}else throw new Error(e);L=!0}var F=0,Q=E.length;if(L)F=Q;else for(var Ft=0;Ft=57344?F+=3:(Y=65536+((Y&1023)<<10|E.charCodeAt(++Ft)&1023),F+=4)}return F+=this.encode(F*8),this.update(E),F},w.prototype.bytepad=function(E,L){for(var $=this.encode(L),F=0;F>2]|=this.padding[L&3],this.lastByteIndex===this.byteCount)for(E[0]=E[$],L=1;L<$+1;++L)E[L]=0;for(E[$-1]|=2147483648,L=0;L<$;++L)F[L]^=E[L];k(F)}},w.prototype.toString=w.prototype.hex=function(){this.finalize();for(var E=this.blockCount,L=this.s,$=this.outputBlocks,F=this.extraBytes,Q=0,Ft=0,Y="",G;Ft<$;){for(Q=0;Q>4&15]+B[G&15]+B[G>>12&15]+B[G>>8&15]+B[G>>20&15]+B[G>>16&15]+B[G>>28&15]+B[G>>24&15];Ft%E===0&&(k(L),Q=0)}return F&&(G=L[Q],Y+=B[G>>4&15]+B[G&15],F>1&&(Y+=B[G>>12&15]+B[G>>8&15]),F>2&&(Y+=B[G>>20&15]+B[G>>16&15])),Y},w.prototype.arrayBuffer=function(){this.finalize();var E=this.blockCount,L=this.s,$=this.outputBlocks,F=this.extraBytes,Q=0,Ft=0,Y=this.outputBits>>3,G;F?G=new ArrayBuffer($+1<<2):G=new ArrayBuffer(Y);for(var se=new Uint32Array(G);Ft<$;){for(Q=0;Q>8&255,Y[G+2]=se>>16&255,Y[G+3]=se>>24&255;Ft%E===0&&k(L)}return F&&(G=Ft<<2,se=L[Q],Y[G]=se&255,F>1&&(Y[G+1]=se>>8&255),F>2&&(Y[G+2]=se>>16&255)),Y};function S(E,L,$){w.call(this,E,L,$)}S.prototype=new w,S.prototype.finalize=function(){return this.encode(this.outputBits,!0),w.prototype.finalize.call(this)};var k=function(E){var L,$,F,Q,Ft,Y,G,se,W,X,Ne,At,at,Te,_t,gt,De,dt,mt,Oe,bt,yt,Fe,St,xt,ke,vt,ut,Ce,lt,pt,Re,ct,wt,Ke,Bt,Ct,Me,ot,st,Pe,Mt,It,ze,ft,Et,T,R,q,_,O,N,et,H,z,zt,Dt,Jt,Qt,Xt,te,ie,re;for(F=0;F<48;F+=2)Q=E[0]^E[10]^E[20]^E[30]^E[40],Ft=E[1]^E[11]^E[21]^E[31]^E[41],Y=E[2]^E[12]^E[22]^E[32]^E[42],G=E[3]^E[13]^E[23]^E[33]^E[43],se=E[4]^E[14]^E[24]^E[34]^E[44],W=E[5]^E[15]^E[25]^E[35]^E[45],X=E[6]^E[16]^E[26]^E[36]^E[46],Ne=E[7]^E[17]^E[27]^E[37]^E[47],At=E[8]^E[18]^E[28]^E[38]^E[48],at=E[9]^E[19]^E[29]^E[39]^E[49],L=At^(Y<<1|G>>>31),$=at^(G<<1|Y>>>31),E[0]^=L,E[1]^=$,E[10]^=L,E[11]^=$,E[20]^=L,E[21]^=$,E[30]^=L,E[31]^=$,E[40]^=L,E[41]^=$,L=Q^(se<<1|W>>>31),$=Ft^(W<<1|se>>>31),E[2]^=L,E[3]^=$,E[12]^=L,E[13]^=$,E[22]^=L,E[23]^=$,E[32]^=L,E[33]^=$,E[42]^=L,E[43]^=$,L=Y^(X<<1|Ne>>>31),$=G^(Ne<<1|X>>>31),E[4]^=L,E[5]^=$,E[14]^=L,E[15]^=$,E[24]^=L,E[25]^=$,E[34]^=L,E[35]^=$,E[44]^=L,E[45]^=$,L=se^(At<<1|at>>>31),$=W^(at<<1|At>>>31),E[6]^=L,E[7]^=$,E[16]^=L,E[17]^=$,E[26]^=L,E[27]^=$,E[36]^=L,E[37]^=$,E[46]^=L,E[47]^=$,L=X^(Q<<1|Ft>>>31),$=Ne^(Ft<<1|Q>>>31),E[8]^=L,E[9]^=$,E[18]^=L,E[19]^=$,E[28]^=L,E[29]^=$,E[38]^=L,E[39]^=$,E[48]^=L,E[49]^=$,Te=E[0],_t=E[1],Et=E[11]<<4|E[10]>>>28,T=E[10]<<4|E[11]>>>28,ut=E[20]<<3|E[21]>>>29,Ce=E[21]<<3|E[20]>>>29,Xt=E[31]<<9|E[30]>>>23,te=E[30]<<9|E[31]>>>23,Mt=E[40]<<18|E[41]>>>14,It=E[41]<<18|E[40]>>>14,wt=E[2]<<1|E[3]>>>31,Ke=E[3]<<1|E[2]>>>31,gt=E[13]<<12|E[12]>>>20,De=E[12]<<12|E[13]>>>20,R=E[22]<<10|E[23]>>>22,q=E[23]<<10|E[22]>>>22,lt=E[33]<<13|E[32]>>>19,pt=E[32]<<13|E[33]>>>19,ie=E[42]<<2|E[43]>>>30,re=E[43]<<2|E[42]>>>30,H=E[5]<<30|E[4]>>>2,z=E[4]<<30|E[5]>>>2,Bt=E[14]<<6|E[15]>>>26,Ct=E[15]<<6|E[14]>>>26,dt=E[25]<<11|E[24]>>>21,mt=E[24]<<11|E[25]>>>21,_=E[34]<<15|E[35]>>>17,O=E[35]<<15|E[34]>>>17,Re=E[45]<<29|E[44]>>>3,ct=E[44]<<29|E[45]>>>3,St=E[6]<<28|E[7]>>>4,xt=E[7]<<28|E[6]>>>4,zt=E[17]<<23|E[16]>>>9,Dt=E[16]<<23|E[17]>>>9,Me=E[26]<<25|E[27]>>>7,ot=E[27]<<25|E[26]>>>7,Oe=E[36]<<21|E[37]>>>11,bt=E[37]<<21|E[36]>>>11,N=E[47]<<24|E[46]>>>8,et=E[46]<<24|E[47]>>>8,ze=E[8]<<27|E[9]>>>5,ft=E[9]<<27|E[8]>>>5,ke=E[18]<<20|E[19]>>>12,vt=E[19]<<20|E[18]>>>12,Jt=E[29]<<7|E[28]>>>25,Qt=E[28]<<7|E[29]>>>25,st=E[38]<<8|E[39]>>>24,Pe=E[39]<<8|E[38]>>>24,yt=E[48]<<14|E[49]>>>18,Fe=E[49]<<14|E[48]>>>18,E[0]=Te^~gt&dt,E[1]=_t^~De&mt,E[10]=St^~ke&ut,E[11]=xt^~vt&Ce,E[20]=wt^~Bt&Me,E[21]=Ke^~Ct&ot,E[30]=ze^~Et&R,E[31]=ft^~T&q,E[40]=H^~zt&Jt,E[41]=z^~Dt&Qt,E[2]=gt^~dt&Oe,E[3]=De^~mt&bt,E[12]=ke^~ut<,E[13]=vt^~Ce&pt,E[22]=Bt^~Me&st,E[23]=Ct^~ot&Pe,E[32]=Et^~R&_,E[33]=T^~q&O,E[42]=zt^~Jt&Xt,E[43]=Dt^~Qt&te,E[4]=dt^~Oe&yt,E[5]=mt^~bt&Fe,E[14]=ut^~lt&Re,E[15]=Ce^~pt&ct,E[24]=Me^~st&Mt,E[25]=ot^~Pe&It,E[34]=R^~_&N,E[35]=q^~O&et,E[44]=Jt^~Xt&ie,E[45]=Qt^~te&re,E[6]=Oe^~yt&Te,E[7]=bt^~Fe&_t,E[16]=lt^~Re&St,E[17]=pt^~ct&xt,E[26]=st^~Mt&wt,E[27]=Pe^~It&Ke,E[36]=_^~N&ze,E[37]=O^~et&ft,E[46]=Xt^~ie&H,E[47]=te^~re&z,E[8]=yt^~Te>,E[9]=Fe^~_t&De,E[18]=Re^~St&ke,E[19]=ct^~xt&vt,E[28]=Mt^~wt&Bt,E[29]=It^~Ke&Ct,E[38]=N^~ze&Et,E[39]=et^~ft&T,E[48]=ie^~H&zt,E[49]=re^~z&Dt,E[0]^=qt[F],E[1]^=qt[F+1]};if(m)Uu.exports=s;else{for(p=0;p{M();M9.exports=w9;var Lu=class extends Error{};Lu.prototype.name="AssertionError";function w9(e,t){if(!e){var r=new Lu(t);throw Error.captureStackTrace&&Error.captureStackTrace(r,w9),r}}});var I9=P((dft,_9)=>{M();function A9(e){return e.length}function IH(e){let t=e.byteLength,r="";for(let a=0;a{M();var eo="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ia=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(t-1)===61&&t--,t*3>>>2}function SH(e){let t=e.byteLength,r="";for(let a=0;a>2]+eo[(e[a]&3)<<4|e[a+1]>>4]+eo[(e[a+1]&15)<<2|e[a+2]>>6]+eo[e[a+2]&63];return t%3===2?r=r.substring(0,r.length-1)+"=":t%3===1&&(r=r.substring(0,r.length-2)+"=="),r}function BH(e,t,r=0,a=E9(t)){let n=Math.min(a,e.byteLength-r);for(let d=0,m=0;d>4,e[m++]=(A&15)<<4|B>>2,e[m++]=(B&3)<<6|C&63}return n}S9.exports={byteLength:E9,toString:SH,write:BH}});var T9=P((mft,R9)=>{M();function q9(e){return e.length>>>1}function CH(e){let t=e.byteLength;e=new DataView(e.buffer,e.byteOffset,t);let r="",a=0;for(let n=t-t%4;a=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}});var D9=P((yft,O9)=>{M();function yp(e){let t=0;for(let r=0,a=e.length;r=55296&&n<=56319&&r+1=56320&&d<=57343){t+=4,r++;continue}}n<=127?t+=1:n<=2047?t+=2:t+=3}return t}var xp;if(typeof TextDecoder<"u"){let e=new TextDecoder;xp=function(r){return e.decode(r)}}else xp=function(t){let r=t.byteLength,a="",n=0;for(;n0){let A=0;for(;A>B,B-=6;B>=0;)t[b++]=128|A>>B&63,B-=6;m+=A>=65536?2:1}return d};O9.exports={byteLength:yp,toString:xp,write:wp}});var U9=P((wft,P9)=>{M();function k9(e){return e.length*2}function RH(e){let t=e.byteLength,r="";for(let a=0;a>8,B=b%256;e[r+m*2]=B,e[r+m*2+1]=A}return n}P9.exports={byteLength:k9,toString:RH,write:TH}});var Q9=P((Ap,K9)=>{M();var OH=I9(),DH=B9(),kH=T9(),PH=D9(),UH=U9(),Nu=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Us(e){switch(e){case"ascii":return OH;case"base64":return DH;case"hex":return kH;case"utf8":case"utf-8":case void 0:return PH;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return UH;default:throw new Error(`Unknown encoding: ${e}`)}}function L9(e){return e instanceof Uint8Array}function LH(e){try{return Us(e),!0}catch{return!1}}function NH(e,t,r){let a=new Uint8Array(e);return t!==void 0&&Ap.fill(a,t,0,a.byteLength,r),a}function FH(e){return new Uint8Array(e)}function KH(e){return new Uint8Array(e)}function QH(e,t){return Us(t).byteLength(e)}function HH(e,t){if(e===t)return 0;let r=Math.min(e.byteLength,t.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),t=new DataView(t.buffer,t.byteOffset,t.byteLength);let a=0;for(let n=r-r%4;ad)return 1}return e.byteLength>t.byteLength?1:e.byteLengtha+n.byteLength,0));let r=new Uint8Array(t);return e.reduce((a,n)=>(r.set(n,a),a+n.byteLength),0),r}function zH(e,t,r=0,a=0,n=e.byteLength){if(n>0&&n=e.byteLength)throw new RangeError("sourceStart is out of range");if(n<0)throw new RangeError("sourceEnd is out of range");r>=t.byteLength&&(r=t.byteLength),n>e.byteLength&&(n=e.byteLength),t.byteLength-r=e.byteLength){if(n)return-1;r=e.byteLength-1}else if(r<0)if(n)r=0;else return-1;if(typeof t=="string")t=Mp(t,a);else if(typeof t=="number")return t=t&255,n?e.indexOf(t,r):e.lastIndexOf(t,r);if(t.byteLength===0)return-1;if(n){let d=-1;for(let m=r;me.byteLength&&(r=e.byteLength-t.byteLength);for(let d=r;d>=0;d--){let m=!0;for(let b=0;b=n||a<=r?"":(r<0&&(r=0),a>n&&(a=n),(r!==0||a{M();var vj=(e,t)=>function(){return t||(0,e[Object.keys(e)[0]])((t={exports:{}}).exports,t),t.exports},pj=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return r=>{for(var a=r.length,n=new Uint8Array((a-(r[a-1]=="=")-(r[a-2]=="="))*3/4|0),d=0,m=0;d>4,n[m++]=A<<4|B>>2,n[m++]=B<<6|C}return n}})(),gj=vj({"wasm-binary:./blake2b.wat"(e,t){t.exports=pj("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")}}),mj=gj(),bj=WebAssembly.compile(mj);H9.exports=async e=>(await WebAssembly.instantiate(await bj,e)).exports});var J9=P((Bft,rn)=>{M();var Gr=bp(),yj=Q9(),qn=null,z9=typeof WebAssembly<"u"&&j9()().then(e=>{qn=e}),Cn=64,Fu=[];rn.exports=Rr;var V9=rn.exports.BYTES_MIN=16,Y9=rn.exports.BYTES_MAX=64,Eft=rn.exports.BYTES=32,G9=rn.exports.KEYBYTES_MIN=16,$9=rn.exports.KEYBYTES_MAX=64,Sft=rn.exports.KEYBYTES=32,Z9=rn.exports.SALTBYTES=16,W9=rn.exports.PERSONALBYTES=16;function Rr(e,t,r,a,n){if(!(this instanceof Rr))return new Rr(e,t,r,a,n);if(!qn)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),n!==!0&&(Gr(e>=V9,"digestLength must be at least "+V9+", was given "+e),Gr(e<=Y9,"digestLength must be at most "+Y9+", was given "+e),t!=null&&(Gr(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),Gr(t.length>=G9,"key must be at least "+G9+", was given "+t.length),Gr(t.length<=$9,"key must be at least "+$9+", was given "+t.length)),r!=null&&(Gr(r instanceof Uint8Array,"salt must be Uint8Array or Buffer"),Gr(r.length===Z9,"salt must be exactly "+Z9+", was given "+r.length)),a!=null&&(Gr(a instanceof Uint8Array,"personal must be Uint8Array or Buffer"),Gr(a.length===W9,"personal must be exactly "+W9+", was given "+a.length))),Fu.length||(Fu.push(Cn),Cn+=216),this.digestLength=e,this.finalized=!1,this.pointer=Fu.pop(),this._memory=new Uint8Array(qn.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=t?t.length:0,this._memory[2]=1,this._memory[3]=1,r&&this._memory.set(r,32),a&&this._memory.set(a,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),qn.blake2b_init(this.pointer,this.digestLength),t&&(this.update(t),this._memory.fill(0,Cn,Cn+t.length),this._memory[this.pointer+200]=128)}Rr.prototype._realloc=function(e){qn.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(qn.memory.buffer)};Rr.prototype.update=function(e){return Gr(this.finalized===!1,"Hash instance finalized"),Gr(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),Cn+e.length>this._memory.length&&this._realloc(Cn+e.length),this._memory.set(e,Cn),qn.blake2b_update(this.pointer,Cn,Cn+e.length),this};Rr.prototype.digest=function(e){if(Gr(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,Fu.push(this.pointer),qn.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return yj.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);Gr(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var t=0;te(),e):e(new Error("WebAssembly not supported"))};Rr.prototype.ready=Rr.ready;Rr.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};Rr.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function xj(){}});var u_=P((Tft,Tr)=>{M();var gi=bp(),Ns=J9();function Ku(e,t,r){var a=e[t]+e[r],n=e[t+1]+e[r+1];a>=4294967296&&n++,e[t]=a,e[t+1]=n}function X9(e,t,r,a){var n=e[t]+r;r<0&&(n+=4294967296);var d=e[t+1]+a;n>=4294967296&&d++,e[t]=n,e[t+1]=d}function a_(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function sf(e,t,r,a,n,d){var m=Ls[n],b=Ls[n+1],A=Ls[d],B=Ls[d+1];Ku(ce,e,t),X9(ce,e,m,b);var C=ce[a]^ce[e],D=ce[a+1]^ce[e+1];ce[a]=D,ce[a+1]=C,Ku(ce,r,a),C=ce[t]^ce[r],D=ce[t+1]^ce[r+1],ce[t]=C>>>24^D<<8,ce[t+1]=D>>>24^C<<8,Ku(ce,e,t),X9(ce,e,A,B),C=ce[a]^ce[e],D=ce[a+1]^ce[e+1],ce[a]=C>>>16^D<<16,ce[a+1]=D>>>16^C<<16,Ku(ce,r,a),C=ce[t]^ce[r],D=ce[t+1]^ce[r+1],ce[t]=D>>>31^C<<1,ce[t+1]=C>>>31^D<<1}var o_=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),wj=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],Sr=new Uint8Array(wj.map(function(e){return e*2})),ce=new Uint32Array(32),Ls=new Uint32Array(32);function s_(e,t){var r=0;for(r=0;r<16;r++)ce[r]=e.h[r],ce[r+16]=o_[r];for(ce[24]=ce[24]^e.t,ce[25]=ce[25]^e.t/4294967296,t&&(ce[28]=~ce[28],ce[29]=~ce[29]),r=0;r<32;r++)Ls[r]=a_(e.b,4*r);for(r=0;r<12;r++)sf(0,8,16,24,Sr[r*16+0],Sr[r*16+1]),sf(2,10,18,26,Sr[r*16+2],Sr[r*16+3]),sf(4,12,20,28,Sr[r*16+4],Sr[r*16+5]),sf(6,14,22,30,Sr[r*16+6],Sr[r*16+7]),sf(0,10,20,30,Sr[r*16+8],Sr[r*16+9]),sf(2,12,22,24,Sr[r*16+10],Sr[r*16+11]),sf(4,14,16,26,Sr[r*16+12],Sr[r*16+13]),sf(6,8,18,28,Sr[r*16+14],Sr[r*16+15]);for(r=0;r<16;r++)e.h[r]=e.h[r]^ce[r]^ce[r+16]}var hf=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function ro(e,t,r,a){hf.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,hf[0]=e,t&&(hf[1]=t.length),hf[2]=1,hf[3]=1,r&&hf.set(r,32),a&&hf.set(a,48);for(var n=0;n<16;n++)this.h[n]=o_[n]^a_(hf,n*4);t&&(h_(this,t),this.c=128)}ro.prototype.update=function(e){return gi(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),h_(this,e),this};ro.prototype.digest=function(e){var t=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return gi(t instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),gi(t.length>=this.outlen,"out must have at least outlen bytes of space"),Mj(this,t),e==="hex"?Aj(t):t};ro.prototype.final=ro.prototype.digest;ro.ready=function(e){Ns.ready(function(){e()})};function h_(e,t){for(var r=0;r>2]>>8*(r&3);return t}function Aj(e){for(var t="",r=0;r=t_,"outlen must be at least "+t_+", was given "+t),gi(t<=e_,"outlen must be at most "+e_+", was given "+t),r!=null&&(gi(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),gi(r.length>=r_,"key must be at least "+r_+", was given "+r.length),gi(r.length<=i_,"key must be at most "+i_+", was given "+r.length)),a!=null&&(gi(a instanceof Uint8Array,"salt must be Uint8Array or Buffer"),gi(a.length===n_,"salt must be exactly "+n_+", was given "+a.length)),n!=null&&(gi(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),gi(n.length===f_,"personal must be exactly "+f_+", was given "+n.length))),new Ij(t,r,a,n)};Tr.exports.ready=function(e){Ns.ready(function(){e()})};Tr.exports.WASM_SUPPORTED=Ns.SUPPORTED;Tr.exports.WASM_LOADED=!1;var t_=Tr.exports.BYTES_MIN=16,e_=Tr.exports.BYTES_MAX=64,qft=Tr.exports.BYTES=32,r_=Tr.exports.KEYBYTES_MIN=16,i_=Tr.exports.KEYBYTES_MAX=64,Rft=Tr.exports.KEYBYTES=32,n_=Tr.exports.SALTBYTES=16,f_=Tr.exports.PERSONALBYTES=16;Ns.ready(function(e){e||(Tr.exports.WASM_LOADED=!0,Tr.exports=Ns)})});var __=P(Rn=>{"use strict";M();Object.defineProperty(Rn,"__esModule",{value:!0});var Dft=new Uint8Array(16),b_=new Uint8Array(32);b_[0]=9;function oe(e){var t,r=new Float64Array(16);if(e)for(t=0;t>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=r&255,e[t+4]=a>>24&255,e[t+5]=a>>16&255,e[t+6]=a>>8&255,e[t+7]=a&255}function qj(e,t,r,a,n){var d,m=0;for(d=0;d>>8)-1}function y_(e,t,r,a){return qj(e,t,r,a,32)}function uf(e,t){var r;for(r=0;r<16;r++)e[r]=t[r]|0}function _p(e){var t,r,a=1;for(t=0;t<16;t++)r=e[t]+a+65535,a=Math.floor(r/65536),e[t]=r-a*65536;e[0]+=a-1+37*(a-1)}function io(e,t,r){for(var a,n=~(r-1),d=0;d<16;d++)a=n&(e[d]^t[d]),e[d]^=a,t[d]^=a}function fo(e,t){var r,a,n,d=oe(),m=oe();for(r=0;r<16;r++)m[r]=t[r];for(_p(m),_p(m),_p(m),a=0;a<2;a++){for(d[0]=m[0]-65517,r=1;r<15;r++)d[r]=m[r]-65535-(d[r-1]>>16&1),d[r-1]&=65535;d[15]=m[15]-32767-(d[14]>>16&1),n=d[15]>>16&1,d[14]&=65535,io(m,d,1-n)}for(r=0;r<16;r++)e[2*r]=m[r]&255,e[2*r+1]=m[r]>>8}function v_(e,t){var r=new Uint8Array(32),a=new Uint8Array(32);return fo(r,e),fo(a,t),y_(r,0,a,0)}function x_(e){var t=new Uint8Array(32);return fo(t,e),t[0]&1}function Cp(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function ki(e,t,r){for(var a=0;a<16;a++)e[a]=t[a]+r[a]}function Ui(e,t,r){for(var a=0;a<16;a++)e[a]=t[a]-r[a]}function Ae(e,t,r){var a,n,d=0,m=0,b=0,A=0,B=0,C=0,D=0,K=0,j=0,Z=0,qt=0,Rt=0,J=0,Ot=0,ht=0,Lt=0,ee=0,$t=0,Gt=0,tt=0,rt=0,v=0,i=0,o=0,h=0,s=0,u=0,p=0,g=0,l=0,f=0,c=r[0],I=r[1],w=r[2],S=r[3],k=r[4],E=r[5],L=r[6],$=r[7],F=r[8],Q=r[9],Ft=r[10],Y=r[11],G=r[12],se=r[13],W=r[14],X=r[15];a=t[0],d+=a*c,m+=a*I,b+=a*w,A+=a*S,B+=a*k,C+=a*E,D+=a*L,K+=a*$,j+=a*F,Z+=a*Q,qt+=a*Ft,Rt+=a*Y,J+=a*G,Ot+=a*se,ht+=a*W,Lt+=a*X,a=t[1],m+=a*c,b+=a*I,A+=a*w,B+=a*S,C+=a*k,D+=a*E,K+=a*L,j+=a*$,Z+=a*F,qt+=a*Q,Rt+=a*Ft,J+=a*Y,Ot+=a*G,ht+=a*se,Lt+=a*W,ee+=a*X,a=t[2],b+=a*c,A+=a*I,B+=a*w,C+=a*S,D+=a*k,K+=a*E,j+=a*L,Z+=a*$,qt+=a*F,Rt+=a*Q,J+=a*Ft,Ot+=a*Y,ht+=a*G,Lt+=a*se,ee+=a*W,$t+=a*X,a=t[3],A+=a*c,B+=a*I,C+=a*w,D+=a*S,K+=a*k,j+=a*E,Z+=a*L,qt+=a*$,Rt+=a*F,J+=a*Q,Ot+=a*Ft,ht+=a*Y,Lt+=a*G,ee+=a*se,$t+=a*W,Gt+=a*X,a=t[4],B+=a*c,C+=a*I,D+=a*w,K+=a*S,j+=a*k,Z+=a*E,qt+=a*L,Rt+=a*$,J+=a*F,Ot+=a*Q,ht+=a*Ft,Lt+=a*Y,ee+=a*G,$t+=a*se,Gt+=a*W,tt+=a*X,a=t[5],C+=a*c,D+=a*I,K+=a*w,j+=a*S,Z+=a*k,qt+=a*E,Rt+=a*L,J+=a*$,Ot+=a*F,ht+=a*Q,Lt+=a*Ft,ee+=a*Y,$t+=a*G,Gt+=a*se,tt+=a*W,rt+=a*X,a=t[6],D+=a*c,K+=a*I,j+=a*w,Z+=a*S,qt+=a*k,Rt+=a*E,J+=a*L,Ot+=a*$,ht+=a*F,Lt+=a*Q,ee+=a*Ft,$t+=a*Y,Gt+=a*G,tt+=a*se,rt+=a*W,v+=a*X,a=t[7],K+=a*c,j+=a*I,Z+=a*w,qt+=a*S,Rt+=a*k,J+=a*E,Ot+=a*L,ht+=a*$,Lt+=a*F,ee+=a*Q,$t+=a*Ft,Gt+=a*Y,tt+=a*G,rt+=a*se,v+=a*W,i+=a*X,a=t[8],j+=a*c,Z+=a*I,qt+=a*w,Rt+=a*S,J+=a*k,Ot+=a*E,ht+=a*L,Lt+=a*$,ee+=a*F,$t+=a*Q,Gt+=a*Ft,tt+=a*Y,rt+=a*G,v+=a*se,i+=a*W,o+=a*X,a=t[9],Z+=a*c,qt+=a*I,Rt+=a*w,J+=a*S,Ot+=a*k,ht+=a*E,Lt+=a*L,ee+=a*$,$t+=a*F,Gt+=a*Q,tt+=a*Ft,rt+=a*Y,v+=a*G,i+=a*se,o+=a*W,h+=a*X,a=t[10],qt+=a*c,Rt+=a*I,J+=a*w,Ot+=a*S,ht+=a*k,Lt+=a*E,ee+=a*L,$t+=a*$,Gt+=a*F,tt+=a*Q,rt+=a*Ft,v+=a*Y,i+=a*G,o+=a*se,h+=a*W,s+=a*X,a=t[11],Rt+=a*c,J+=a*I,Ot+=a*w,ht+=a*S,Lt+=a*k,ee+=a*E,$t+=a*L,Gt+=a*$,tt+=a*F,rt+=a*Q,v+=a*Ft,i+=a*Y,o+=a*G,h+=a*se,s+=a*W,u+=a*X,a=t[12],J+=a*c,Ot+=a*I,ht+=a*w,Lt+=a*S,ee+=a*k,$t+=a*E,Gt+=a*L,tt+=a*$,rt+=a*F,v+=a*Q,i+=a*Ft,o+=a*Y,h+=a*G,s+=a*se,u+=a*W,p+=a*X,a=t[13],Ot+=a*c,ht+=a*I,Lt+=a*w,ee+=a*S,$t+=a*k,Gt+=a*E,tt+=a*L,rt+=a*$,v+=a*F,i+=a*Q,o+=a*Ft,h+=a*Y,s+=a*G,u+=a*se,p+=a*W,g+=a*X,a=t[14],ht+=a*c,Lt+=a*I,ee+=a*w,$t+=a*S,Gt+=a*k,tt+=a*E,rt+=a*L,v+=a*$,i+=a*F,o+=a*Q,h+=a*Ft,s+=a*Y,u+=a*G,p+=a*se,g+=a*W,l+=a*X,a=t[15],Lt+=a*c,ee+=a*I,$t+=a*w,Gt+=a*S,tt+=a*k,rt+=a*E,v+=a*L,i+=a*$,o+=a*F,h+=a*Q,s+=a*Ft,u+=a*Y,p+=a*G,g+=a*se,l+=a*W,f+=a*X,d+=38*ee,m+=38*$t,b+=38*Gt,A+=38*tt,B+=38*rt,C+=38*v,D+=38*i,K+=38*o,j+=38*h,Z+=38*s,qt+=38*u,Rt+=38*p,J+=38*g,Ot+=38*l,ht+=38*f,n=1,a=d+n+65535,n=Math.floor(a/65536),d=a-n*65536,a=m+n+65535,n=Math.floor(a/65536),m=a-n*65536,a=b+n+65535,n=Math.floor(a/65536),b=a-n*65536,a=A+n+65535,n=Math.floor(a/65536),A=a-n*65536,a=B+n+65535,n=Math.floor(a/65536),B=a-n*65536,a=C+n+65535,n=Math.floor(a/65536),C=a-n*65536,a=D+n+65535,n=Math.floor(a/65536),D=a-n*65536,a=K+n+65535,n=Math.floor(a/65536),K=a-n*65536,a=j+n+65535,n=Math.floor(a/65536),j=a-n*65536,a=Z+n+65535,n=Math.floor(a/65536),Z=a-n*65536,a=qt+n+65535,n=Math.floor(a/65536),qt=a-n*65536,a=Rt+n+65535,n=Math.floor(a/65536),Rt=a-n*65536,a=J+n+65535,n=Math.floor(a/65536),J=a-n*65536,a=Ot+n+65535,n=Math.floor(a/65536),Ot=a-n*65536,a=ht+n+65535,n=Math.floor(a/65536),ht=a-n*65536,a=Lt+n+65535,n=Math.floor(a/65536),Lt=a-n*65536,d+=n-1+37*(n-1),n=1,a=d+n+65535,n=Math.floor(a/65536),d=a-n*65536,a=m+n+65535,n=Math.floor(a/65536),m=a-n*65536,a=b+n+65535,n=Math.floor(a/65536),b=a-n*65536,a=A+n+65535,n=Math.floor(a/65536),A=a-n*65536,a=B+n+65535,n=Math.floor(a/65536),B=a-n*65536,a=C+n+65535,n=Math.floor(a/65536),C=a-n*65536,a=D+n+65535,n=Math.floor(a/65536),D=a-n*65536,a=K+n+65535,n=Math.floor(a/65536),K=a-n*65536,a=j+n+65535,n=Math.floor(a/65536),j=a-n*65536,a=Z+n+65535,n=Math.floor(a/65536),Z=a-n*65536,a=qt+n+65535,n=Math.floor(a/65536),qt=a-n*65536,a=Rt+n+65535,n=Math.floor(a/65536),Rt=a-n*65536,a=J+n+65535,n=Math.floor(a/65536),J=a-n*65536,a=Ot+n+65535,n=Math.floor(a/65536),Ot=a-n*65536,a=ht+n+65535,n=Math.floor(a/65536),ht=a-n*65536,a=Lt+n+65535,n=Math.floor(a/65536),Lt=a-n*65536,d+=n-1+37*(n-1),e[0]=d,e[1]=m,e[2]=b,e[3]=A,e[4]=B,e[5]=C,e[6]=D,e[7]=K,e[8]=j,e[9]=Z,e[10]=qt,e[11]=Rt,e[12]=J,e[13]=Ot,e[14]=ht,e[15]=Lt}function Pi(e,t){Ae(e,t,t)}function qp(e,t){var r=oe(),a;for(a=0;a<16;a++)r[a]=t[a];for(a=253;a>=0;a--)Pi(r,r),a!==2&&a!==4&&Ae(r,r,t);for(a=0;a<16;a++)e[a]=r[a]}function Rj(e,t){var r=oe(),a;for(a=0;a<16;a++)r[a]=t[a];for(a=250;a>=0;a--)Pi(r,r),a!==1&&Ae(r,r,t);for(a=0;a<16;a++)e[a]=r[a]}function w_(e,t,r){var a=new Uint8Array(32),n=new Float64Array(80),d,m,b=oe(),A=oe(),B=oe(),C=oe(),D=oe(),K=oe();for(m=0;m<31;m++)a[m]=t[m];for(a[31]=t[31]&127|64,a[0]&=248,Cp(n,r),m=0;m<16;m++)A[m]=n[m],C[m]=b[m]=B[m]=0;for(b[0]=C[0]=1,m=254;m>=0;--m)d=a[m>>>3]>>>(m&7)&1,io(b,A,d),io(B,C,d),ki(D,b,B),Ui(b,b,B),ki(B,A,C),Ui(A,A,C),Pi(C,D),Pi(K,b),Ae(b,B,b),Ae(B,A,D),ki(D,b,B),Ui(b,b,B),Pi(A,b),Ui(B,C,K),Ae(b,B,Ej),ki(b,b,C),Ae(B,B,b),Ae(b,C,K),Ae(C,A,n),Pi(A,D),io(b,A,d),io(B,C,d);for(m=0;m<16;m++)n[m+16]=b[m],n[m+32]=B[m],n[m+48]=A[m],n[m+64]=C[m];var j=n.subarray(32),Z=n.subarray(16);return qp(j,j),Ae(Z,Z,j),fo(e,Z),0}function Tj(e,t){return w_(e,t,b_)}var p_=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function g_(e,t,r,a){for(var n=new Int32Array(16),d=new Int32Array(16),m,b,A,B,C,D,K,j,Z,qt,Rt,J,Ot,ht,Lt,ee,$t,Gt,tt,rt,v,i,o,h,s,u,p=e[0],g=e[1],l=e[2],f=e[3],c=e[4],I=e[5],w=e[6],S=e[7],k=t[0],E=t[1],L=t[2],$=t[3],F=t[4],Q=t[5],Ft=t[6],Y=t[7],G=0;a>=128;){for(tt=0;tt<16;tt++)rt=8*tt+G,n[tt]=r[rt+0]<<24|r[rt+1]<<16|r[rt+2]<<8|r[rt+3],d[tt]=r[rt+4]<<24|r[rt+5]<<16|r[rt+6]<<8|r[rt+7];for(tt=0;tt<80;tt++)if(m=p,b=g,A=l,B=f,C=c,D=I,K=w,j=S,Z=k,qt=E,Rt=L,J=$,Ot=F,ht=Q,Lt=Ft,ee=Y,v=S,i=Y,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=(c>>>14|F<<32-14)^(c>>>18|F<<32-18)^(F>>>41-32|c<<32-(41-32)),i=(F>>>14|c<<32-14)^(F>>>18|c<<32-18)^(c>>>41-32|F<<32-(41-32)),o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,v=c&I^~c&w,i=F&Q^~F&Ft,o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,v=p_[tt*2],i=p_[tt*2+1],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,v=n[tt%16],i=d[tt%16],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,$t=s&65535|u<<16,Gt=o&65535|h<<16,v=$t,i=Gt,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=(p>>>28|k<<32-28)^(k>>>34-32|p<<32-(34-32))^(k>>>39-32|p<<32-(39-32)),i=(k>>>28|p<<32-28)^(p>>>34-32|k<<32-(34-32))^(p>>>39-32|k<<32-(39-32)),o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,v=p&g^p&l^g&l,i=k&E^k&L^E&L,o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,j=s&65535|u<<16,ee=o&65535|h<<16,v=B,i=J,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=$t,i=Gt,o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,B=s&65535|u<<16,J=o&65535|h<<16,g=m,l=b,f=A,c=B,I=C,w=D,S=K,p=j,E=Z,L=qt,$=Rt,F=J,Q=Ot,Ft=ht,Y=Lt,k=ee,tt%16===15)for(rt=0;rt<16;rt++)v=n[rt],i=d[rt],o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=n[(rt+9)%16],i=d[(rt+9)%16],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,$t=n[(rt+1)%16],Gt=d[(rt+1)%16],v=($t>>>1|Gt<<32-1)^($t>>>8|Gt<<32-8)^$t>>>7,i=(Gt>>>1|$t<<32-1)^(Gt>>>8|$t<<32-8)^(Gt>>>7|$t<<32-7),o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,$t=n[(rt+14)%16],Gt=d[(rt+14)%16],v=($t>>>19|Gt<<32-19)^(Gt>>>61-32|$t<<32-(61-32))^$t>>>6,i=(Gt>>>19|$t<<32-19)^($t>>>61-32|Gt<<32-(61-32))^(Gt>>>6|$t<<32-6),o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,n[rt]=s&65535|u<<16,d[rt]=o&65535|h<<16;v=p,i=k,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[0],i=t[0],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[0]=p=s&65535|u<<16,t[0]=k=o&65535|h<<16,v=g,i=E,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[1],i=t[1],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[1]=g=s&65535|u<<16,t[1]=E=o&65535|h<<16,v=l,i=L,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[2],i=t[2],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[2]=l=s&65535|u<<16,t[2]=L=o&65535|h<<16,v=f,i=$,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[3],i=t[3],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[3]=f=s&65535|u<<16,t[3]=$=o&65535|h<<16,v=c,i=F,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[4],i=t[4],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[4]=c=s&65535|u<<16,t[4]=F=o&65535|h<<16,v=I,i=Q,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[5],i=t[5],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[5]=I=s&65535|u<<16,t[5]=Q=o&65535|h<<16,v=w,i=Ft,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[6],i=t[6],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[6]=w=s&65535|u<<16,t[6]=Ft=o&65535|h<<16,v=S,i=Y,o=i&65535,h=i>>>16,s=v&65535,u=v>>>16,v=e[7],i=t[7],o+=i&65535,h+=i>>>16,s+=v&65535,u+=v>>>16,h+=o>>>16,s+=h>>>16,u+=s>>>16,e[7]=S=s&65535|u<<16,t[7]=Y=o&65535|h<<16,G+=128,a-=128}return a}function Fs(e,t,r){var a=new Int32Array(8),n=new Int32Array(8),d=new Uint8Array(256),m,b=r;for(a[0]=1779033703,a[1]=3144134277,a[2]=1013904242,a[3]=2773480762,a[4]=1359893119,a[5]=2600822924,a[6]=528734635,a[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,g_(a,n,t,r),r%=128,m=0;m=0;--n)a=r[n/8|0]>>(n&7)&1,m_(e,t,a),Sp(t,e),Sp(e,e),m_(e,t,a)}function Hu(e,t){var r=[oe(),oe(),oe(),oe()];uf(r[0],l_),uf(r[1],c_),uf(r[2],no),Ae(r[3],l_,c_),M_(e,r,t)}var Ip=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Rp(e,t){var r,a,n,d;for(a=63;a>=32;--a){for(r=0,n=a-32,d=a-12;n>8,t[n]-=r*256;t[n]+=r,t[a]=0}for(r=0,n=0;n<32;n++)t[n]+=r-(t[31]>>4)*Ip[n],r=t[n]>>8,t[n]&=255;for(n=0;n<32;n++)t[n]-=r*Ip[n];for(a=0;a<32;a++)t[a+1]+=t[a]>>8,e[a]=t[a]&255}function Ks(e){var t=new Float64Array(64),r;for(r=0;r<64;r++)t[r]=e[r];for(r=0;r<64;r++)e[r]=0;Rp(e,t)}function Oj(e,t,r,a){var n=new Uint8Array(64),d=new Uint8Array(64),m,b,A=new Float64Array(64),B=[oe(),oe(),oe(),oe()];for(m=0;m>7&&Ui(e[0],Ep,e[0]),Ae(e[3],e[0],e[1]),0)}function Pj(e,t,r,a){var n,d,m=new Uint8Array(32),b=new Uint8Array(64),A=[oe(),oe(),oe(),oe()],B=[oe(),oe(),oe(),oe()];if(d=-1,r<64||kj(B,a))return-1;for(n=0;n=0}Rn.verify=Qj;function Hj(e){if(lf(e),e.length!==32)throw new Error("wrong seed length");for(var t=new Uint8Array(32),r=new Uint8Array(32),a=0;a<32;a++)t[a]=e[a];return Tj(r,t),t[0]&=248,t[31]&=127,t[31]|=64,r[31]&=127,{public:r,private:t}}Rn.generateKeyPair=Hj;Rn.default={}});var I_=P((Uft,ju)=>{M();(function(e){"use strict";var t=function(T){var R,q=new Float64Array(16);if(T)for(R=0;R>24&255,T[R+1]=q>>16&255,T[R+2]=q>>8&255,T[R+3]=q&255,T[R+4]=_>>24&255,T[R+5]=_>>16&255,T[R+6]=_>>8&255,T[R+7]=_&255}function Z(T,R,q,_,O){var N,et=0;for(N=0;N>>8)-1}function qt(T,R,q,_){return Z(T,R,q,_,16)}function Rt(T,R,q,_){return Z(T,R,q,_,32)}function J(T,R,q,_){for(var O=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,N=q[0]&255|(q[1]&255)<<8|(q[2]&255)<<16|(q[3]&255)<<24,et=q[4]&255|(q[5]&255)<<8|(q[6]&255)<<16|(q[7]&255)<<24,H=q[8]&255|(q[9]&255)<<8|(q[10]&255)<<16|(q[11]&255)<<24,z=q[12]&255|(q[13]&255)<<8|(q[14]&255)<<16|(q[15]&255)<<24,zt=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,Dt=R[0]&255|(R[1]&255)<<8|(R[2]&255)<<16|(R[3]&255)<<24,Jt=R[4]&255|(R[5]&255)<<8|(R[6]&255)<<16|(R[7]&255)<<24,Qt=R[8]&255|(R[9]&255)<<8|(R[10]&255)<<16|(R[11]&255)<<24,Xt=R[12]&255|(R[13]&255)<<8|(R[14]&255)<<16|(R[15]&255)<<24,te=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,ie=q[16]&255|(q[17]&255)<<8|(q[18]&255)<<16|(q[19]&255)<<24,re=q[20]&255|(q[21]&255)<<8|(q[22]&255)<<16|(q[23]&255)<<24,ne=q[24]&255|(q[25]&255)<<8|(q[26]&255)<<16|(q[27]&255)<<24,ae=q[28]&255|(q[29]&255)<<8|(q[30]&255)<<16|(q[31]&255)<<24,fe=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,Vt=O,Wt=N,Ht=et,Yt=H,Zt=z,Kt=zt,it=Dt,nt=Jt,Nt=Qt,kt=Xt,Ut=te,jt=ie,he=re,ue=ne,de=ae,le=fe,V,be=0;be<20;be+=2)V=Vt+he|0,Zt^=V<<7|V>>>32-7,V=Zt+Vt|0,Nt^=V<<9|V>>>32-9,V=Nt+Zt|0,he^=V<<13|V>>>32-13,V=he+Nt|0,Vt^=V<<18|V>>>32-18,V=Kt+Wt|0,kt^=V<<7|V>>>32-7,V=kt+Kt|0,ue^=V<<9|V>>>32-9,V=ue+kt|0,Wt^=V<<13|V>>>32-13,V=Wt+ue|0,Kt^=V<<18|V>>>32-18,V=Ut+it|0,de^=V<<7|V>>>32-7,V=de+Ut|0,Ht^=V<<9|V>>>32-9,V=Ht+de|0,it^=V<<13|V>>>32-13,V=it+Ht|0,Ut^=V<<18|V>>>32-18,V=le+jt|0,Yt^=V<<7|V>>>32-7,V=Yt+le|0,nt^=V<<9|V>>>32-9,V=nt+Yt|0,jt^=V<<13|V>>>32-13,V=jt+nt|0,le^=V<<18|V>>>32-18,V=Vt+Yt|0,Wt^=V<<7|V>>>32-7,V=Wt+Vt|0,Ht^=V<<9|V>>>32-9,V=Ht+Wt|0,Yt^=V<<13|V>>>32-13,V=Yt+Ht|0,Vt^=V<<18|V>>>32-18,V=Kt+Zt|0,it^=V<<7|V>>>32-7,V=it+Kt|0,nt^=V<<9|V>>>32-9,V=nt+it|0,Zt^=V<<13|V>>>32-13,V=Zt+nt|0,Kt^=V<<18|V>>>32-18,V=Ut+kt|0,jt^=V<<7|V>>>32-7,V=jt+Ut|0,Nt^=V<<9|V>>>32-9,V=Nt+jt|0,kt^=V<<13|V>>>32-13,V=kt+Nt|0,Ut^=V<<18|V>>>32-18,V=le+de|0,he^=V<<7|V>>>32-7,V=he+le|0,ue^=V<<9|V>>>32-9,V=ue+he|0,de^=V<<13|V>>>32-13,V=de+ue|0,le^=V<<18|V>>>32-18;Vt=Vt+O|0,Wt=Wt+N|0,Ht=Ht+et|0,Yt=Yt+H|0,Zt=Zt+z|0,Kt=Kt+zt|0,it=it+Dt|0,nt=nt+Jt|0,Nt=Nt+Qt|0,kt=kt+Xt|0,Ut=Ut+te|0,jt=jt+ie|0,he=he+re|0,ue=ue+ne|0,de=de+ae|0,le=le+fe|0,T[0]=Vt>>>0&255,T[1]=Vt>>>8&255,T[2]=Vt>>>16&255,T[3]=Vt>>>24&255,T[4]=Wt>>>0&255,T[5]=Wt>>>8&255,T[6]=Wt>>>16&255,T[7]=Wt>>>24&255,T[8]=Ht>>>0&255,T[9]=Ht>>>8&255,T[10]=Ht>>>16&255,T[11]=Ht>>>24&255,T[12]=Yt>>>0&255,T[13]=Yt>>>8&255,T[14]=Yt>>>16&255,T[15]=Yt>>>24&255,T[16]=Zt>>>0&255,T[17]=Zt>>>8&255,T[18]=Zt>>>16&255,T[19]=Zt>>>24&255,T[20]=Kt>>>0&255,T[21]=Kt>>>8&255,T[22]=Kt>>>16&255,T[23]=Kt>>>24&255,T[24]=it>>>0&255,T[25]=it>>>8&255,T[26]=it>>>16&255,T[27]=it>>>24&255,T[28]=nt>>>0&255,T[29]=nt>>>8&255,T[30]=nt>>>16&255,T[31]=nt>>>24&255,T[32]=Nt>>>0&255,T[33]=Nt>>>8&255,T[34]=Nt>>>16&255,T[35]=Nt>>>24&255,T[36]=kt>>>0&255,T[37]=kt>>>8&255,T[38]=kt>>>16&255,T[39]=kt>>>24&255,T[40]=Ut>>>0&255,T[41]=Ut>>>8&255,T[42]=Ut>>>16&255,T[43]=Ut>>>24&255,T[44]=jt>>>0&255,T[45]=jt>>>8&255,T[46]=jt>>>16&255,T[47]=jt>>>24&255,T[48]=he>>>0&255,T[49]=he>>>8&255,T[50]=he>>>16&255,T[51]=he>>>24&255,T[52]=ue>>>0&255,T[53]=ue>>>8&255,T[54]=ue>>>16&255,T[55]=ue>>>24&255,T[56]=de>>>0&255,T[57]=de>>>8&255,T[58]=de>>>16&255,T[59]=de>>>24&255,T[60]=le>>>0&255,T[61]=le>>>8&255,T[62]=le>>>16&255,T[63]=le>>>24&255}function Ot(T,R,q,_){for(var O=_[0]&255|(_[1]&255)<<8|(_[2]&255)<<16|(_[3]&255)<<24,N=q[0]&255|(q[1]&255)<<8|(q[2]&255)<<16|(q[3]&255)<<24,et=q[4]&255|(q[5]&255)<<8|(q[6]&255)<<16|(q[7]&255)<<24,H=q[8]&255|(q[9]&255)<<8|(q[10]&255)<<16|(q[11]&255)<<24,z=q[12]&255|(q[13]&255)<<8|(q[14]&255)<<16|(q[15]&255)<<24,zt=_[4]&255|(_[5]&255)<<8|(_[6]&255)<<16|(_[7]&255)<<24,Dt=R[0]&255|(R[1]&255)<<8|(R[2]&255)<<16|(R[3]&255)<<24,Jt=R[4]&255|(R[5]&255)<<8|(R[6]&255)<<16|(R[7]&255)<<24,Qt=R[8]&255|(R[9]&255)<<8|(R[10]&255)<<16|(R[11]&255)<<24,Xt=R[12]&255|(R[13]&255)<<8|(R[14]&255)<<16|(R[15]&255)<<24,te=_[8]&255|(_[9]&255)<<8|(_[10]&255)<<16|(_[11]&255)<<24,ie=q[16]&255|(q[17]&255)<<8|(q[18]&255)<<16|(q[19]&255)<<24,re=q[20]&255|(q[21]&255)<<8|(q[22]&255)<<16|(q[23]&255)<<24,ne=q[24]&255|(q[25]&255)<<8|(q[26]&255)<<16|(q[27]&255)<<24,ae=q[28]&255|(q[29]&255)<<8|(q[30]&255)<<16|(q[31]&255)<<24,fe=_[12]&255|(_[13]&255)<<8|(_[14]&255)<<16|(_[15]&255)<<24,Vt=O,Wt=N,Ht=et,Yt=H,Zt=z,Kt=zt,it=Dt,nt=Jt,Nt=Qt,kt=Xt,Ut=te,jt=ie,he=re,ue=ne,de=ae,le=fe,V,be=0;be<20;be+=2)V=Vt+he|0,Zt^=V<<7|V>>>32-7,V=Zt+Vt|0,Nt^=V<<9|V>>>32-9,V=Nt+Zt|0,he^=V<<13|V>>>32-13,V=he+Nt|0,Vt^=V<<18|V>>>32-18,V=Kt+Wt|0,kt^=V<<7|V>>>32-7,V=kt+Kt|0,ue^=V<<9|V>>>32-9,V=ue+kt|0,Wt^=V<<13|V>>>32-13,V=Wt+ue|0,Kt^=V<<18|V>>>32-18,V=Ut+it|0,de^=V<<7|V>>>32-7,V=de+Ut|0,Ht^=V<<9|V>>>32-9,V=Ht+de|0,it^=V<<13|V>>>32-13,V=it+Ht|0,Ut^=V<<18|V>>>32-18,V=le+jt|0,Yt^=V<<7|V>>>32-7,V=Yt+le|0,nt^=V<<9|V>>>32-9,V=nt+Yt|0,jt^=V<<13|V>>>32-13,V=jt+nt|0,le^=V<<18|V>>>32-18,V=Vt+Yt|0,Wt^=V<<7|V>>>32-7,V=Wt+Vt|0,Ht^=V<<9|V>>>32-9,V=Ht+Wt|0,Yt^=V<<13|V>>>32-13,V=Yt+Ht|0,Vt^=V<<18|V>>>32-18,V=Kt+Zt|0,it^=V<<7|V>>>32-7,V=it+Kt|0,nt^=V<<9|V>>>32-9,V=nt+it|0,Zt^=V<<13|V>>>32-13,V=Zt+nt|0,Kt^=V<<18|V>>>32-18,V=Ut+kt|0,jt^=V<<7|V>>>32-7,V=jt+Ut|0,Nt^=V<<9|V>>>32-9,V=Nt+jt|0,kt^=V<<13|V>>>32-13,V=kt+Nt|0,Ut^=V<<18|V>>>32-18,V=le+de|0,he^=V<<7|V>>>32-7,V=he+le|0,ue^=V<<9|V>>>32-9,V=ue+he|0,de^=V<<13|V>>>32-13,V=de+ue|0,le^=V<<18|V>>>32-18;T[0]=Vt>>>0&255,T[1]=Vt>>>8&255,T[2]=Vt>>>16&255,T[3]=Vt>>>24&255,T[4]=Kt>>>0&255,T[5]=Kt>>>8&255,T[6]=Kt>>>16&255,T[7]=Kt>>>24&255,T[8]=Ut>>>0&255,T[9]=Ut>>>8&255,T[10]=Ut>>>16&255,T[11]=Ut>>>24&255,T[12]=le>>>0&255,T[13]=le>>>8&255,T[14]=le>>>16&255,T[15]=le>>>24&255,T[16]=it>>>0&255,T[17]=it>>>8&255,T[18]=it>>>16&255,T[19]=it>>>24&255,T[20]=nt>>>0&255,T[21]=nt>>>8&255,T[22]=nt>>>16&255,T[23]=nt>>>24&255,T[24]=Nt>>>0&255,T[25]=Nt>>>8&255,T[26]=Nt>>>16&255,T[27]=Nt>>>24&255,T[28]=kt>>>0&255,T[29]=kt>>>8&255,T[30]=kt>>>16&255,T[31]=kt>>>24&255}function ht(T,R,q,_){J(T,R,q,_)}function Lt(T,R,q,_){Ot(T,R,q,_)}var ee=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function $t(T,R,q,_,O,N,et){var H=new Uint8Array(16),z=new Uint8Array(64),zt,Dt;for(Dt=0;Dt<16;Dt++)H[Dt]=0;for(Dt=0;Dt<8;Dt++)H[Dt]=N[Dt];for(;O>=64;){for(ht(z,H,et,ee),Dt=0;Dt<64;Dt++)T[R+Dt]=q[_+Dt]^z[Dt];for(zt=1,Dt=8;Dt<16;Dt++)zt=zt+(H[Dt]&255)|0,H[Dt]=zt&255,zt>>>=8;O-=64,R+=64,_+=64}if(O>0)for(ht(z,H,et,ee),Dt=0;Dt=64;){for(ht(et,N,O,ee),z=0;z<64;z++)T[R+z]=et[z];for(H=1,z=8;z<16;z++)H=H+(N[z]&255)|0,N[z]=H&255,H>>>=8;q-=64,R+=64}if(q>0)for(ht(et,N,O,ee),z=0;z>>13|q<<3)&8191,_=T[4]&255|(T[5]&255)<<8,this.r[2]=(q>>>10|_<<6)&7939,O=T[6]&255|(T[7]&255)<<8,this.r[3]=(_>>>7|O<<9)&8191,N=T[8]&255|(T[9]&255)<<8,this.r[4]=(O>>>4|N<<12)&255,this.r[5]=N>>>1&8190,et=T[10]&255|(T[11]&255)<<8,this.r[6]=(N>>>14|et<<2)&8191,H=T[12]&255|(T[13]&255)<<8,this.r[7]=(et>>>11|H<<5)&8065,z=T[14]&255|(T[15]&255)<<8,this.r[8]=(H>>>8|z<<8)&8191,this.r[9]=z>>>5&127,this.pad[0]=T[16]&255|(T[17]&255)<<8,this.pad[1]=T[18]&255|(T[19]&255)<<8,this.pad[2]=T[20]&255|(T[21]&255)<<8,this.pad[3]=T[22]&255|(T[23]&255)<<8,this.pad[4]=T[24]&255|(T[25]&255)<<8,this.pad[5]=T[26]&255|(T[27]&255)<<8,this.pad[6]=T[28]&255|(T[29]&255)<<8,this.pad[7]=T[30]&255|(T[31]&255)<<8};v.prototype.blocks=function(T,R,q){for(var _=this.fin?0:2048,O,N,et,H,z,zt,Dt,Jt,Qt,Xt,te,ie,re,ne,ae,fe,Vt,Wt,Ht,Yt=this.h[0],Zt=this.h[1],Kt=this.h[2],it=this.h[3],nt=this.h[4],Nt=this.h[5],kt=this.h[6],Ut=this.h[7],jt=this.h[8],he=this.h[9],ue=this.r[0],de=this.r[1],le=this.r[2],V=this.r[3],be=this.r[4],Ee=this.r[5],Se=this.r[6],pe=this.r[7],_e=this.r[8],Ie=this.r[9];q>=16;)O=T[R+0]&255|(T[R+1]&255)<<8,Yt+=O&8191,N=T[R+2]&255|(T[R+3]&255)<<8,Zt+=(O>>>13|N<<3)&8191,et=T[R+4]&255|(T[R+5]&255)<<8,Kt+=(N>>>10|et<<6)&8191,H=T[R+6]&255|(T[R+7]&255)<<8,it+=(et>>>7|H<<9)&8191,z=T[R+8]&255|(T[R+9]&255)<<8,nt+=(H>>>4|z<<12)&8191,Nt+=z>>>1&8191,zt=T[R+10]&255|(T[R+11]&255)<<8,kt+=(z>>>14|zt<<2)&8191,Dt=T[R+12]&255|(T[R+13]&255)<<8,Ut+=(zt>>>11|Dt<<5)&8191,Jt=T[R+14]&255|(T[R+15]&255)<<8,jt+=(Dt>>>8|Jt<<8)&8191,he+=Jt>>>5|_,Qt=0,Xt=Qt,Xt+=Yt*ue,Xt+=Zt*(5*Ie),Xt+=Kt*(5*_e),Xt+=it*(5*pe),Xt+=nt*(5*Se),Qt=Xt>>>13,Xt&=8191,Xt+=Nt*(5*Ee),Xt+=kt*(5*be),Xt+=Ut*(5*V),Xt+=jt*(5*le),Xt+=he*(5*de),Qt+=Xt>>>13,Xt&=8191,te=Qt,te+=Yt*de,te+=Zt*ue,te+=Kt*(5*Ie),te+=it*(5*_e),te+=nt*(5*pe),Qt=te>>>13,te&=8191,te+=Nt*(5*Se),te+=kt*(5*Ee),te+=Ut*(5*be),te+=jt*(5*V),te+=he*(5*le),Qt+=te>>>13,te&=8191,ie=Qt,ie+=Yt*le,ie+=Zt*de,ie+=Kt*ue,ie+=it*(5*Ie),ie+=nt*(5*_e),Qt=ie>>>13,ie&=8191,ie+=Nt*(5*pe),ie+=kt*(5*Se),ie+=Ut*(5*Ee),ie+=jt*(5*be),ie+=he*(5*V),Qt+=ie>>>13,ie&=8191,re=Qt,re+=Yt*V,re+=Zt*le,re+=Kt*de,re+=it*ue,re+=nt*(5*Ie),Qt=re>>>13,re&=8191,re+=Nt*(5*_e),re+=kt*(5*pe),re+=Ut*(5*Se),re+=jt*(5*Ee),re+=he*(5*be),Qt+=re>>>13,re&=8191,ne=Qt,ne+=Yt*be,ne+=Zt*V,ne+=Kt*le,ne+=it*de,ne+=nt*ue,Qt=ne>>>13,ne&=8191,ne+=Nt*(5*Ie),ne+=kt*(5*_e),ne+=Ut*(5*pe),ne+=jt*(5*Se),ne+=he*(5*Ee),Qt+=ne>>>13,ne&=8191,ae=Qt,ae+=Yt*Ee,ae+=Zt*be,ae+=Kt*V,ae+=it*le,ae+=nt*de,Qt=ae>>>13,ae&=8191,ae+=Nt*ue,ae+=kt*(5*Ie),ae+=Ut*(5*_e),ae+=jt*(5*pe),ae+=he*(5*Se),Qt+=ae>>>13,ae&=8191,fe=Qt,fe+=Yt*Se,fe+=Zt*Ee,fe+=Kt*be,fe+=it*V,fe+=nt*le,Qt=fe>>>13,fe&=8191,fe+=Nt*de,fe+=kt*ue,fe+=Ut*(5*Ie),fe+=jt*(5*_e),fe+=he*(5*pe),Qt+=fe>>>13,fe&=8191,Vt=Qt,Vt+=Yt*pe,Vt+=Zt*Se,Vt+=Kt*Ee,Vt+=it*be,Vt+=nt*V,Qt=Vt>>>13,Vt&=8191,Vt+=Nt*le,Vt+=kt*de,Vt+=Ut*ue,Vt+=jt*(5*Ie),Vt+=he*(5*_e),Qt+=Vt>>>13,Vt&=8191,Wt=Qt,Wt+=Yt*_e,Wt+=Zt*pe,Wt+=Kt*Se,Wt+=it*Ee,Wt+=nt*be,Qt=Wt>>>13,Wt&=8191,Wt+=Nt*V,Wt+=kt*le,Wt+=Ut*de,Wt+=jt*ue,Wt+=he*(5*Ie),Qt+=Wt>>>13,Wt&=8191,Ht=Qt,Ht+=Yt*Ie,Ht+=Zt*_e,Ht+=Kt*pe,Ht+=it*Se,Ht+=nt*Ee,Qt=Ht>>>13,Ht&=8191,Ht+=Nt*be,Ht+=kt*V,Ht+=Ut*le,Ht+=jt*de,Ht+=he*ue,Qt+=Ht>>>13,Ht&=8191,Qt=(Qt<<2)+Qt|0,Qt=Qt+Xt|0,Xt=Qt&8191,Qt=Qt>>>13,te+=Qt,Yt=Xt,Zt=te,Kt=ie,it=re,nt=ne,Nt=ae,kt=fe,Ut=Vt,jt=Wt,he=Ht,R+=16,q-=16;this.h[0]=Yt,this.h[1]=Zt,this.h[2]=Kt,this.h[3]=it,this.h[4]=nt,this.h[5]=Nt,this.h[6]=kt,this.h[7]=Ut,this.h[8]=jt,this.h[9]=he},v.prototype.finish=function(T,R){var q=new Uint16Array(10),_,O,N,et;if(this.leftover){for(et=this.leftover,this.buffer[et++]=1;et<16;et++)this.buffer[et]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(_=this.h[1]>>>13,this.h[1]&=8191,et=2;et<10;et++)this.h[et]+=_,_=this.h[et]>>>13,this.h[et]&=8191;for(this.h[0]+=_*5,_=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=_,_=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=_,q[0]=this.h[0]+5,_=q[0]>>>13,q[0]&=8191,et=1;et<10;et++)q[et]=this.h[et]+_,_=q[et]>>>13,q[et]&=8191;for(q[9]-=1<<13,O=(_^1)-1,et=0;et<10;et++)q[et]&=O;for(O=~O,et=0;et<10;et++)this.h[et]=this.h[et]&O|q[et];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,N=this.h[0]+this.pad[0],this.h[0]=N&65535,et=1;et<8;et++)N=(this.h[et]+this.pad[et]|0)+(N>>>16)|0,this.h[et]=N&65535;T[R+0]=this.h[0]>>>0&255,T[R+1]=this.h[0]>>>8&255,T[R+2]=this.h[1]>>>0&255,T[R+3]=this.h[1]>>>8&255,T[R+4]=this.h[2]>>>0&255,T[R+5]=this.h[2]>>>8&255,T[R+6]=this.h[3]>>>0&255,T[R+7]=this.h[3]>>>8&255,T[R+8]=this.h[4]>>>0&255,T[R+9]=this.h[4]>>>8&255,T[R+10]=this.h[5]>>>0&255,T[R+11]=this.h[5]>>>8&255,T[R+12]=this.h[6]>>>0&255,T[R+13]=this.h[6]>>>8&255,T[R+14]=this.h[7]>>>0&255,T[R+15]=this.h[7]>>>8&255},v.prototype.update=function(T,R,q){var _,O;if(this.leftover){for(O=16-this.leftover,O>q&&(O=q),_=0;_=16&&(O=q-q%16,this.blocks(T,R,O),R+=O,q-=O),q){for(_=0;_>16&1),N[q-1]&=65535;N[15]=et[15]-32767-(N[14]>>16&1),O=N[15]>>16&1,N[14]&=65535,g(et,N,1-O)}for(q=0;q<16;q++)T[2*q]=et[q]&255,T[2*q+1]=et[q]>>8}function f(T,R){var q=new Uint8Array(32),_=new Uint8Array(32);return l(q,T),l(_,R),Rt(q,0,_,0)}function c(T){var R=new Uint8Array(32);return l(R,T),R[0]&1}function I(T,R){var q;for(q=0;q<16;q++)T[q]=R[2*q]+(R[2*q+1]<<8);T[15]&=32767}function w(T,R,q){for(var _=0;_<16;_++)T[_]=R[_]+q[_]}function S(T,R,q){for(var _=0;_<16;_++)T[_]=R[_]-q[_]}function k(T,R,q){var _,O,N=0,et=0,H=0,z=0,zt=0,Dt=0,Jt=0,Qt=0,Xt=0,te=0,ie=0,re=0,ne=0,ae=0,fe=0,Vt=0,Wt=0,Ht=0,Yt=0,Zt=0,Kt=0,it=0,nt=0,Nt=0,kt=0,Ut=0,jt=0,he=0,ue=0,de=0,le=0,V=q[0],be=q[1],Ee=q[2],Se=q[3],pe=q[4],_e=q[5],Ie=q[6],er=q[7],Ue=q[8],Ze=q[9],We=q[10],Je=q[11],nr=q[12],mr=q[13],br=q[14],yr=q[15];_=R[0],N+=_*V,et+=_*be,H+=_*Ee,z+=_*Se,zt+=_*pe,Dt+=_*_e,Jt+=_*Ie,Qt+=_*er,Xt+=_*Ue,te+=_*Ze,ie+=_*We,re+=_*Je,ne+=_*nr,ae+=_*mr,fe+=_*br,Vt+=_*yr,_=R[1],et+=_*V,H+=_*be,z+=_*Ee,zt+=_*Se,Dt+=_*pe,Jt+=_*_e,Qt+=_*Ie,Xt+=_*er,te+=_*Ue,ie+=_*Ze,re+=_*We,ne+=_*Je,ae+=_*nr,fe+=_*mr,Vt+=_*br,Wt+=_*yr,_=R[2],H+=_*V,z+=_*be,zt+=_*Ee,Dt+=_*Se,Jt+=_*pe,Qt+=_*_e,Xt+=_*Ie,te+=_*er,ie+=_*Ue,re+=_*Ze,ne+=_*We,ae+=_*Je,fe+=_*nr,Vt+=_*mr,Wt+=_*br,Ht+=_*yr,_=R[3],z+=_*V,zt+=_*be,Dt+=_*Ee,Jt+=_*Se,Qt+=_*pe,Xt+=_*_e,te+=_*Ie,ie+=_*er,re+=_*Ue,ne+=_*Ze,ae+=_*We,fe+=_*Je,Vt+=_*nr,Wt+=_*mr,Ht+=_*br,Yt+=_*yr,_=R[4],zt+=_*V,Dt+=_*be,Jt+=_*Ee,Qt+=_*Se,Xt+=_*pe,te+=_*_e,ie+=_*Ie,re+=_*er,ne+=_*Ue,ae+=_*Ze,fe+=_*We,Vt+=_*Je,Wt+=_*nr,Ht+=_*mr,Yt+=_*br,Zt+=_*yr,_=R[5],Dt+=_*V,Jt+=_*be,Qt+=_*Ee,Xt+=_*Se,te+=_*pe,ie+=_*_e,re+=_*Ie,ne+=_*er,ae+=_*Ue,fe+=_*Ze,Vt+=_*We,Wt+=_*Je,Ht+=_*nr,Yt+=_*mr,Zt+=_*br,Kt+=_*yr,_=R[6],Jt+=_*V,Qt+=_*be,Xt+=_*Ee,te+=_*Se,ie+=_*pe,re+=_*_e,ne+=_*Ie,ae+=_*er,fe+=_*Ue,Vt+=_*Ze,Wt+=_*We,Ht+=_*Je,Yt+=_*nr,Zt+=_*mr,Kt+=_*br,it+=_*yr,_=R[7],Qt+=_*V,Xt+=_*be,te+=_*Ee,ie+=_*Se,re+=_*pe,ne+=_*_e,ae+=_*Ie,fe+=_*er,Vt+=_*Ue,Wt+=_*Ze,Ht+=_*We,Yt+=_*Je,Zt+=_*nr,Kt+=_*mr,it+=_*br,nt+=_*yr,_=R[8],Xt+=_*V,te+=_*be,ie+=_*Ee,re+=_*Se,ne+=_*pe,ae+=_*_e,fe+=_*Ie,Vt+=_*er,Wt+=_*Ue,Ht+=_*Ze,Yt+=_*We,Zt+=_*Je,Kt+=_*nr,it+=_*mr,nt+=_*br,Nt+=_*yr,_=R[9],te+=_*V,ie+=_*be,re+=_*Ee,ne+=_*Se,ae+=_*pe,fe+=_*_e,Vt+=_*Ie,Wt+=_*er,Ht+=_*Ue,Yt+=_*Ze,Zt+=_*We,Kt+=_*Je,it+=_*nr,nt+=_*mr,Nt+=_*br,kt+=_*yr,_=R[10],ie+=_*V,re+=_*be,ne+=_*Ee,ae+=_*Se,fe+=_*pe,Vt+=_*_e,Wt+=_*Ie,Ht+=_*er,Yt+=_*Ue,Zt+=_*Ze,Kt+=_*We,it+=_*Je,nt+=_*nr,Nt+=_*mr,kt+=_*br,Ut+=_*yr,_=R[11],re+=_*V,ne+=_*be,ae+=_*Ee,fe+=_*Se,Vt+=_*pe,Wt+=_*_e,Ht+=_*Ie,Yt+=_*er,Zt+=_*Ue,Kt+=_*Ze,it+=_*We,nt+=_*Je,Nt+=_*nr,kt+=_*mr,Ut+=_*br,jt+=_*yr,_=R[12],ne+=_*V,ae+=_*be,fe+=_*Ee,Vt+=_*Se,Wt+=_*pe,Ht+=_*_e,Yt+=_*Ie,Zt+=_*er,Kt+=_*Ue,it+=_*Ze,nt+=_*We,Nt+=_*Je,kt+=_*nr,Ut+=_*mr,jt+=_*br,he+=_*yr,_=R[13],ae+=_*V,fe+=_*be,Vt+=_*Ee,Wt+=_*Se,Ht+=_*pe,Yt+=_*_e,Zt+=_*Ie,Kt+=_*er,it+=_*Ue,nt+=_*Ze,Nt+=_*We,kt+=_*Je,Ut+=_*nr,jt+=_*mr,he+=_*br,ue+=_*yr,_=R[14],fe+=_*V,Vt+=_*be,Wt+=_*Ee,Ht+=_*Se,Yt+=_*pe,Zt+=_*_e,Kt+=_*Ie,it+=_*er,nt+=_*Ue,Nt+=_*Ze,kt+=_*We,Ut+=_*Je,jt+=_*nr,he+=_*mr,ue+=_*br,de+=_*yr,_=R[15],Vt+=_*V,Wt+=_*be,Ht+=_*Ee,Yt+=_*Se,Zt+=_*pe,Kt+=_*_e,it+=_*Ie,nt+=_*er,Nt+=_*Ue,kt+=_*Ze,Ut+=_*We,jt+=_*Je,he+=_*nr,ue+=_*mr,de+=_*br,le+=_*yr,N+=38*Wt,et+=38*Ht,H+=38*Yt,z+=38*Zt,zt+=38*Kt,Dt+=38*it,Jt+=38*nt,Qt+=38*Nt,Xt+=38*kt,te+=38*Ut,ie+=38*jt,re+=38*he,ne+=38*ue,ae+=38*de,fe+=38*le,O=1,_=N+O+65535,O=Math.floor(_/65536),N=_-O*65536,_=et+O+65535,O=Math.floor(_/65536),et=_-O*65536,_=H+O+65535,O=Math.floor(_/65536),H=_-O*65536,_=z+O+65535,O=Math.floor(_/65536),z=_-O*65536,_=zt+O+65535,O=Math.floor(_/65536),zt=_-O*65536,_=Dt+O+65535,O=Math.floor(_/65536),Dt=_-O*65536,_=Jt+O+65535,O=Math.floor(_/65536),Jt=_-O*65536,_=Qt+O+65535,O=Math.floor(_/65536),Qt=_-O*65536,_=Xt+O+65535,O=Math.floor(_/65536),Xt=_-O*65536,_=te+O+65535,O=Math.floor(_/65536),te=_-O*65536,_=ie+O+65535,O=Math.floor(_/65536),ie=_-O*65536,_=re+O+65535,O=Math.floor(_/65536),re=_-O*65536,_=ne+O+65535,O=Math.floor(_/65536),ne=_-O*65536,_=ae+O+65535,O=Math.floor(_/65536),ae=_-O*65536,_=fe+O+65535,O=Math.floor(_/65536),fe=_-O*65536,_=Vt+O+65535,O=Math.floor(_/65536),Vt=_-O*65536,N+=O-1+37*(O-1),O=1,_=N+O+65535,O=Math.floor(_/65536),N=_-O*65536,_=et+O+65535,O=Math.floor(_/65536),et=_-O*65536,_=H+O+65535,O=Math.floor(_/65536),H=_-O*65536,_=z+O+65535,O=Math.floor(_/65536),z=_-O*65536,_=zt+O+65535,O=Math.floor(_/65536),zt=_-O*65536,_=Dt+O+65535,O=Math.floor(_/65536),Dt=_-O*65536,_=Jt+O+65535,O=Math.floor(_/65536),Jt=_-O*65536,_=Qt+O+65535,O=Math.floor(_/65536),Qt=_-O*65536,_=Xt+O+65535,O=Math.floor(_/65536),Xt=_-O*65536,_=te+O+65535,O=Math.floor(_/65536),te=_-O*65536,_=ie+O+65535,O=Math.floor(_/65536),ie=_-O*65536,_=re+O+65535,O=Math.floor(_/65536),re=_-O*65536,_=ne+O+65535,O=Math.floor(_/65536),ne=_-O*65536,_=ae+O+65535,O=Math.floor(_/65536),ae=_-O*65536,_=fe+O+65535,O=Math.floor(_/65536),fe=_-O*65536,_=Vt+O+65535,O=Math.floor(_/65536),Vt=_-O*65536,N+=O-1+37*(O-1),T[0]=N,T[1]=et,T[2]=H,T[3]=z,T[4]=zt,T[5]=Dt,T[6]=Jt,T[7]=Qt,T[8]=Xt,T[9]=te,T[10]=ie,T[11]=re,T[12]=ne,T[13]=ae,T[14]=fe,T[15]=Vt}function E(T,R){k(T,R,R)}function L(T,R){var q=t(),_;for(_=0;_<16;_++)q[_]=R[_];for(_=253;_>=0;_--)E(q,q),_!==2&&_!==4&&k(q,q,R);for(_=0;_<16;_++)T[_]=q[_]}function $(T,R){var q=t(),_;for(_=0;_<16;_++)q[_]=R[_];for(_=250;_>=0;_--)E(q,q),_!==1&&k(q,q,R);for(_=0;_<16;_++)T[_]=q[_]}function F(T,R,q){var _=new Uint8Array(32),O=new Float64Array(80),N,et,H=t(),z=t(),zt=t(),Dt=t(),Jt=t(),Qt=t();for(et=0;et<31;et++)_[et]=R[et];for(_[31]=R[31]&127|64,_[0]&=248,I(O,q),et=0;et<16;et++)z[et]=O[et],Dt[et]=H[et]=zt[et]=0;for(H[0]=Dt[0]=1,et=254;et>=0;--et)N=_[et>>>3]>>>(et&7)&1,g(H,z,N),g(zt,Dt,N),w(Jt,H,zt),S(H,H,zt),w(zt,z,Dt),S(z,z,Dt),E(Dt,Jt),E(Qt,H),k(H,zt,H),k(zt,z,Jt),w(Jt,H,zt),S(H,H,zt),E(z,H),S(zt,Dt,Qt),k(H,zt,b),w(H,H,Dt),k(zt,zt,H),k(H,Dt,Qt),k(Dt,z,O),E(z,Jt),g(H,z,N),g(zt,Dt,N);for(et=0;et<16;et++)O[et+16]=H[et],O[et+32]=zt[et],O[et+48]=z[et],O[et+64]=Dt[et];var Xt=O.subarray(32),te=O.subarray(16);return L(Xt,Xt),k(te,te,Xt),l(T,te),0}function Q(T,R){return F(T,R,n)}function Ft(T,R){return r(R,32),Q(T,R)}function Y(T,R,q){var _=new Uint8Array(32);return F(_,q,R),Lt(T,a,_,ee)}var G=h,se=s;function W(T,R,q,_,O,N){var et=new Uint8Array(32);return Y(et,O,N),G(T,R,q,_,et)}function X(T,R,q,_,O,N){var et=new Uint8Array(32);return Y(et,O,N),se(T,R,q,_,et)}var Ne=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function At(T,R,q,_){for(var O=new Int32Array(16),N=new Int32Array(16),et,H,z,zt,Dt,Jt,Qt,Xt,te,ie,re,ne,ae,fe,Vt,Wt,Ht,Yt,Zt,Kt,it,nt,Nt,kt,Ut,jt,he=T[0],ue=T[1],de=T[2],le=T[3],V=T[4],be=T[5],Ee=T[6],Se=T[7],pe=R[0],_e=R[1],Ie=R[2],er=R[3],Ue=R[4],Ze=R[5],We=R[6],Je=R[7],nr=0;_>=128;){for(Zt=0;Zt<16;Zt++)Kt=8*Zt+nr,O[Zt]=q[Kt+0]<<24|q[Kt+1]<<16|q[Kt+2]<<8|q[Kt+3],N[Zt]=q[Kt+4]<<24|q[Kt+5]<<16|q[Kt+6]<<8|q[Kt+7];for(Zt=0;Zt<80;Zt++)if(et=he,H=ue,z=de,zt=le,Dt=V,Jt=be,Qt=Ee,Xt=Se,te=pe,ie=_e,re=Ie,ne=er,ae=Ue,fe=Ze,Vt=We,Wt=Je,it=Se,nt=Je,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=(V>>>14|Ue<<32-14)^(V>>>18|Ue<<32-18)^(Ue>>>41-32|V<<32-(41-32)),nt=(Ue>>>14|V<<32-14)^(Ue>>>18|V<<32-18)^(V>>>41-32|Ue<<32-(41-32)),Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,it=V&be^~V&Ee,nt=Ue&Ze^~Ue&We,Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,it=Ne[Zt*2],nt=Ne[Zt*2+1],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,it=O[Zt%16],nt=N[Zt%16],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,Ht=Ut&65535|jt<<16,Yt=Nt&65535|kt<<16,it=Ht,nt=Yt,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=(he>>>28|pe<<32-28)^(pe>>>34-32|he<<32-(34-32))^(pe>>>39-32|he<<32-(39-32)),nt=(pe>>>28|he<<32-28)^(he>>>34-32|pe<<32-(34-32))^(he>>>39-32|pe<<32-(39-32)),Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,it=he&ue^he&de^ue&de,nt=pe&_e^pe&Ie^_e&Ie,Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,Xt=Ut&65535|jt<<16,Wt=Nt&65535|kt<<16,it=zt,nt=ne,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=Ht,nt=Yt,Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,zt=Ut&65535|jt<<16,ne=Nt&65535|kt<<16,ue=et,de=H,le=z,V=zt,be=Dt,Ee=Jt,Se=Qt,he=Xt,_e=te,Ie=ie,er=re,Ue=ne,Ze=ae,We=fe,Je=Vt,pe=Wt,Zt%16===15)for(Kt=0;Kt<16;Kt++)it=O[Kt],nt=N[Kt],Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=O[(Kt+9)%16],nt=N[(Kt+9)%16],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,Ht=O[(Kt+1)%16],Yt=N[(Kt+1)%16],it=(Ht>>>1|Yt<<32-1)^(Ht>>>8|Yt<<32-8)^Ht>>>7,nt=(Yt>>>1|Ht<<32-1)^(Yt>>>8|Ht<<32-8)^(Yt>>>7|Ht<<32-7),Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,Ht=O[(Kt+14)%16],Yt=N[(Kt+14)%16],it=(Ht>>>19|Yt<<32-19)^(Yt>>>61-32|Ht<<32-(61-32))^Ht>>>6,nt=(Yt>>>19|Ht<<32-19)^(Ht>>>61-32|Yt<<32-(61-32))^(Yt>>>6|Ht<<32-6),Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,O[Kt]=Ut&65535|jt<<16,N[Kt]=Nt&65535|kt<<16;it=he,nt=pe,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[0],nt=R[0],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[0]=he=Ut&65535|jt<<16,R[0]=pe=Nt&65535|kt<<16,it=ue,nt=_e,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[1],nt=R[1],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[1]=ue=Ut&65535|jt<<16,R[1]=_e=Nt&65535|kt<<16,it=de,nt=Ie,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[2],nt=R[2],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[2]=de=Ut&65535|jt<<16,R[2]=Ie=Nt&65535|kt<<16,it=le,nt=er,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[3],nt=R[3],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[3]=le=Ut&65535|jt<<16,R[3]=er=Nt&65535|kt<<16,it=V,nt=Ue,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[4],nt=R[4],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[4]=V=Ut&65535|jt<<16,R[4]=Ue=Nt&65535|kt<<16,it=be,nt=Ze,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[5],nt=R[5],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[5]=be=Ut&65535|jt<<16,R[5]=Ze=Nt&65535|kt<<16,it=Ee,nt=We,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[6],nt=R[6],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[6]=Ee=Ut&65535|jt<<16,R[6]=We=Nt&65535|kt<<16,it=Se,nt=Je,Nt=nt&65535,kt=nt>>>16,Ut=it&65535,jt=it>>>16,it=T[7],nt=R[7],Nt+=nt&65535,kt+=nt>>>16,Ut+=it&65535,jt+=it>>>16,kt+=Nt>>>16,Ut+=kt>>>16,jt+=Ut>>>16,T[7]=Se=Ut&65535|jt<<16,R[7]=Je=Nt&65535|kt<<16,nr+=128,_-=128}return _}function at(T,R,q){var _=new Int32Array(8),O=new Int32Array(8),N=new Uint8Array(256),et,H=q;for(_[0]=1779033703,_[1]=3144134277,_[2]=1013904242,_[3]=2773480762,_[4]=1359893119,_[5]=2600822924,_[6]=528734635,_[7]=1541459225,O[0]=4089235720,O[1]=2227873595,O[2]=4271175723,O[3]=1595750129,O[4]=2917565137,O[5]=725511199,O[6]=4215389547,O[7]=327033209,At(_,O,R,q),q%=128,et=0;et=0;--O)_=q[O/8|0]>>(O&7)&1,_t(T,R,_),Te(R,T),Te(T,T),_t(T,R,_)}function dt(T,R){var q=[t(),t(),t(),t()];u(q[0],C),u(q[1],D),u(q[2],m),k(q[3],C,D),De(T,q,R)}function mt(T,R,q){var _=new Uint8Array(64),O=[t(),t(),t(),t()],N;for(q||r(R,32),at(_,R,32),_[0]&=248,_[31]&=127,_[31]|=64,dt(O,_),gt(T,O),N=0;N<32;N++)R[N+32]=T[N];return 0}var Oe=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function bt(T,R){var q,_,O,N;for(_=63;_>=32;--_){for(q=0,O=_-32,N=_-12;O>4)*Oe[O],q=R[O]>>8,R[O]&=255;for(O=0;O<32;O++)R[O]-=q*Oe[O];for(_=0;_<32;_++)R[_+1]+=R[_]>>8,T[_]=R[_]&255}function yt(T){var R=new Float64Array(64),q;for(q=0;q<64;q++)R[q]=T[q];for(q=0;q<64;q++)T[q]=0;bt(T,R)}function Fe(T,R,q,_){var O=new Uint8Array(64),N=new Uint8Array(64),et=new Uint8Array(64),H,z,zt=new Float64Array(64),Dt=[t(),t(),t(),t()];at(O,_,32),O[0]&=248,O[31]&=127,O[31]|=64;var Jt=q+64;for(H=0;H>7&&S(T[0],d,T[0]),k(T[3],T[0],T[1]),0)}function xt(T,R,q,_){var O,N=new Uint8Array(32),et=new Uint8Array(64),H=[t(),t(),t(),t()],z=[t(),t(),t(),t()];if(q<64||St(z,_))return-1;for(O=0;O=0},e.sign.keyPair=function(){var T=new Uint8Array(ot),R=new Uint8Array(st);return mt(T,R),{publicKey:T,secretKey:R}},e.sign.keyPair.fromSecretKey=function(T){if(ft(T),T.length!==st)throw new Error("bad secret key size");for(var R=new Uint8Array(ot),q=0;q{M();(function(e,t){"use strict";typeof zu<"u"&&zu.exports?zu.exports=t(I_()):e.ed2curve=t(e.nacl)})(E_,function(e){"use strict";if(!e)throw new Error("tweetnacl not loaded");var t=function(rt){var v,i=new Float64Array(16);if(rt)for(v=0;v=0;o--)K(i,i),o!==2&&o!==4&&D(i,i,v);for(o=0;o<16;o++)rt[o]=i[o]}function Z(rt,v){var i,o,h,s=t(),u=t();for(i=0;i<16;i++)u[i]=v[i];for(m(u),m(u),m(u),o=0;o<2;o++){for(s[0]=u[0]-65517,i=1;i<15;i++)s[i]=u[i]-65535-(s[i-1]>>16&1),s[i-1]&=65535;s[15]=u[15]-32767-(s[14]>>16&1),h=s[15]>>16&1,s[14]&=65535,b(u,s,1-h)}for(i=0;i<16;i++)rt[2*i]=u[i]&255,rt[2*i+1]=u[i]>>8}function qt(rt){var v=new Uint8Array(32);return Z(v,rt),v[0]&1}function Rt(rt,v,i,o,h){var s,u=0;for(s=0;s>>8)-1}function J(rt,v,i,o){return Rt(rt,v,i,o,32)}function Ot(rt,v){var i=new Uint8Array(32),o=new Uint8Array(32);return Z(i,rt),Z(o,v),J(i,0,o,0)}function ht(rt,v){var i=t(),o;for(o=0;o<16;o++)i[o]=v[o];for(o=250;o>=0;o--)K(i,i),o!==1&&D(i,i,v);for(o=0;o<16;o++)rt[o]=i[o]}function Lt(rt,v){var i;for(i=0;i<16;i++)rt[i]=v[i]|0}function ee(rt,v){var i=t(),o=t(),h=t(),s=t(),u=t(),p=t(),g=t();return Lt(rt[2],a),A(rt[1],v),K(h,rt[1]),D(s,h,n),C(h,h,rt[2]),B(s,rt[2],s),K(u,s),K(p,u),D(g,p,u),D(i,g,h),D(i,i,s),ht(i,i),D(i,i,h),D(i,i,s),D(i,i,s),D(rt[0],i,s),K(o,rt[0]),D(o,o,s),Ot(o,h)&&D(rt[0],rt[0],d),K(o,rt[0]),D(o,o,s),Ot(o,h)?-1:(qt(rt[0])===v[31]>>7&&C(rt[0],r,rt[0]),D(rt[3],rt[0],rt[1]),0)}function $t(rt){var v=new Uint8Array(32),i=[t(),t(),t(),t()],o=t(),h=t();if(ee(i,rt))return null;var s=i[1];return B(o,a,s),C(h,a,s),j(h,h),D(o,o,h),Z(v,o),v}function Gt(rt){var v=new Uint8Array(64),i=new Uint8Array(32),o;for(e.lowlevel.crypto_hash(v,rt,32),v[0]&=248,v[31]&=127,v[31]|=64,o=0;o<32;o++)i[o]=v[o];for(o=0;o<64;o++)v[o]=0;return i}function tt(rt){var v=$t(rt.publicKey);return v?{publicKey:v,secretKey:Gt(rt.secretKey)}:null}return{convertPublicKey:$t,convertSecretKey:Gt,convertKeyPair:tt}})});var O_=P(Np=>{"use strict";M();Object.defineProperty(Np,"__esModule",{value:!0});function Wj(e){var t=4,r=e.length,a=r%t;if(!a)return e;var n=r,d=t-a,m=r+d,b=U.alloc(m);for(b.write(e);d--;)b.write("=",n++);return b.toString()}Np.default=Wj});var k_=P(Qp=>{"use strict";M();Object.defineProperty(Qp,"__esModule",{value:!0});var Jj=O_();function D_(e,t){return t===void 0&&(t="utf8"),U.isBuffer(e)?Fp(e.toString("base64")):Fp(U.from(e,t).toString("base64"))}function Xj(e,t){return t===void 0&&(t="utf8"),U.from(Kp(e),"base64").toString(t)}function Kp(e){return e=e.toString(),Jj.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function Fp(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function tz(e){return U.from(Kp(e),"base64")}var ho=D_;ho.encode=D_;ho.decode=Xj;ho.toBase64=Kp;ho.fromBase64=Fp;ho.toBuffer=tz;Qp.default=ho});var P_=P((Yft,rl)=>{M();rl.exports=k_().default;rl.exports.default=rl.exports});var hz={};al(hz,{Crypto:()=>Lp,Utils:()=>Hd,default:()=>fl});M();M();var pn=$r(ml(),1),Ma=$r(Kd(),1);var Hd={};al(Hd,{concatUint8Arrays:()=>Le,decodeInt32:()=>Qd,encodeInt32:()=>Hi,encodeInt64:()=>fh,fromBigInt:()=>KD,hexToUint8Array:()=>qe,isHex:()=>we,originPrivateKey:()=>ND,toBigInt:()=>FD,toByteArray:()=>jn,uint8ArrayToHex:()=>Qe});M();var y8=[];for(let e=0;e<=255;++e){let t=e.toString(16).padStart(2,"0");y8.push(t)}var ND="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function we(e){return/^([0-9A-Fa-f])*$/.test(e)}function qe(e){return new Uint8Array(e.match(/.{1,2}/g).map(t=>parseInt(t,16)))}function Qe(e){let t=new Uint8Array(e),r=new Array(t.length);for(let a=0;aa+n.byteLength,0),{buffer:r}=e.reduce(({buffer:a,pos:n},d)=>(a.set(new Uint8Array(d),n),{buffer:a,pos:n+d.byteLength}),{buffer:new Uint8Array(t),pos:0});return r}function Hi(e){let t=new ArrayBuffer(4);return new DataView(t).setUint32(0,e,!0),new Uint8Array(t).reverse()}function fh(e){let t=new ArrayBuffer(8);return new DataView(t).setBigInt64(0,BigInt(e),!0),new Uint8Array(t).reverse()}function Qd(e){let t=0;for(let r=0;r=256;)e=e>>>8,t.unshift(e&255);return t}async function x8(e){let t=new URL("/api",e);return(0,pn.default)(t,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { nearestEndpoints { ip, port } - }`})}).then(zn).then(r=>r.errors||r.data.nearestEndpoints==null?[]:r.data.nearestEndpoints)}async function i5(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - lastTransaction(address: "${t}") { + }`})}).then(zn).then(r=>r.errors||r.data.nearestEndpoints==null?[]:r.data.nearestEndpoints)}async function w8(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof e=="string"&&!we(e))throw"'address' must be in hexadecimal form if it's string";e instanceof Uint8Array&&(e=Qe(e));let r=new URL("/api",t);return(0,pn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + lastTransaction(address: "${e}") { chainLength } - }`})}).then(zn).then(i=>i.errors||i.data.lastTransaction==null?0:i.data.lastTransaction.chainLength)}async function n5(t){let e=new URL("/api",t);return(0,bn.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + }`})}).then(zn).then(a=>a.errors||a.data.lastTransaction==null?0:a.data.lastTransaction.chainLength)}async function M8(e){let t=new URL("/api",e);return(0,pn.default)(t,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { sharedSecrets { storageNoncePublicKey } - }`})}).then(zn).then(r=>r.errors||r.data.sharedSecrets==null?"":r.data.sharedSecrets.storageNoncePublicKey)}async function f5(t,e){let r=new URL("/api/transaction_fee",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(zn)}async function a5(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - transaction(address: "${t}") { + }`})}).then(zn).then(r=>r.errors||r.data.sharedSecrets==null?"":r.data.sharedSecrets.storageNoncePublicKey)}async function A8(e,t){let r=new URL("/api/transaction_fee",t);return(0,pn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(zn)}async function _8(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof e=="string"&&!we(e))throw"'address' must be in hexadecimal form if it's string";e instanceof Uint8Array&&(e=Qe(e));let r=new URL("/api",t);return(0,pn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + transaction(address: "${e}") { data { ownerships { secret, @@ -29,12 +29,12 @@ use chrome, FireFox or Internet Explorer 11`)}var Q9=vt(),N9=qf(),K9=Q9.Buffer,j } } } - }`})}).then(zn).then(i=>i.errors||i.data==null?[]:i.data.transaction.data.ownerships)}async function o5(t,e){if(typeof t!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - token(address: "${t}") { + }`})}).then(zn).then(a=>a.errors||a.data==null?[]:a.data.transaction.data.ownerships)}async function I8(e,t){if(typeof e!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"&&!we(e))throw"'address' must be in hexadecimal form if it's string";e instanceof Uint8Array&&(e=Qe(e));let r=new URL("/api",t);return(0,pn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { + token(address: "${e}") { genesis, name, symbol, supply, type properties, collection, id, decimals } - }`})}).then(zn).then(i=>i.errors||i.data==null?[]:i.data.token)}async function s5(t,e,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'originPublicKey' must be in hexadecimal form if it's string";if(t instanceof Uint8Array&&(t=jt(t)),typeof e!="string")throw"'certificate' must be a string";let i=new URL("/api/origin_key",r);return(0,bn.default)(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:t,certificate:e})}).then(zn)}async function u5(t,e=void 0){let r;e===void 0?r=`query { + }`})}).then(zn).then(a=>a.errors||a.data==null?[]:a.data.token)}async function E8(e,t,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof e=="string"&&!we(e))throw"'originPublicKey' must be in hexadecimal form if it's string";if(e instanceof Uint8Array&&(e=Qe(e)),typeof t!="string")throw"'certificate' must be a string";let a=new URL("/api/origin_key",r);return(0,pn.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:e,certificate:t})}).then(zn)}async function S8(e,t=void 0){let r;t===void 0?r=`query { oracleData { timestamp, services { @@ -45,7 +45,7 @@ use chrome, FireFox or Internet Explorer 11`)}var Q9=vt(),N9=qf(),K9=Q9.Buffer,j } } }`:r=`query { - oracleData(timestamp: ${e}) { + oracleData(timestamp: ${t}) { services { uco { eur, @@ -53,7 +53,7 @@ use chrome, FireFox or Internet Explorer 11`)}var Q9=vt(),N9=qf(),K9=Q9.Buffer,j } } } - }`;let i=new URL("/api",t);return(0,bn.default)(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:r})}).then(zn).then(n=>n.data.oracleData==null?{}:n.data.oracleData)}async function h5(t,e){let{host:r,protocol:i}=new URL(t),n=i=="https:"?"wss":"ws",a=(0,xa.absintheCreate)(`${n}://${r}/socket`),c=(0,xa.absintheSend)(a,` + }`;let a=new URL("/api",e);return(0,pn.default)(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:r})}).then(zn).then(n=>n.data.oracleData==null?{}:n.data.oracleData)}async function B8(e,t){let{host:r,protocol:a}=new URL(e),n=a=="https:"?"wss":"ws",d=(0,Ma.absintheCreate)(`${n}://${r}/socket`),b=(0,Ma.absintheSend)(d,` subscription { oracleUpdate { timestamp, @@ -65,21 +65,21 @@ use chrome, FireFox or Internet Explorer 11`)}var Q9=vt(),N9=qf(),K9=Q9.Buffer,j } } } - `);return(0,xa.absintheObserve)(a,c,m=>{e(m.data.oracelUpdate)})}async function zn(t){return new Promise(function(e,r){t.status>=200&&t.status<=299?t.json().then(e):r(t.statusText)})}var wv={};Xh(wv,{IDToCurve:()=>xv,IDToHashAlgo:()=>mv,aesDecrypt:()=>Yh,aesEncrypt:()=>Gh,curveToID:()=>no,deriveAddress:()=>ia,deriveKeyPair:()=>na,ecDecrypt:()=>zh,ecEncrypt:()=>Hh,generateDeterministicKeyPair:()=>jh,getHashDigest:()=>K_,hash:()=>Kh,hashAlgoToID:()=>Qh,randomSecretKey:()=>Nh,sign:()=>fo,verify:()=>lj});g();var $t=$r(nv(),1),F_=$r(Ms(),1),L_=$r(J9(),1),N_=$r(x_(),1),Fs=$r(D_(),1),vv=$r(k_(),1);var{ec:Q_,eddsa:sj}=F_.default,bv=new sj("ed25519"),gv=new Q_("p256"),yv=new Q_("secp256k1"),{sha3_512:uj,sha3_256:hj}=L_.default,cj=1;function Nh(){return new Uint8Array((0,$t.randomBytes)(32))}function Qh(t){switch(t){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function mv(t){switch(t){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function no(t){switch(t){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function xv(t){switch(t){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function ia(t,e,r="ed25519",i="sha256"){let{publicKey:n}=na(t,e,r),a=no(r),o=Kh(n,i);return Kt([Uint8Array.from([a]),Uint8Array.from(o)])}function Kh(t,e="sha256"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t));let r=Qh(e),i=K_(t,e);return Kt([Uint8Array.from([r]),Uint8Array.from(i)])}function K_(t,e){switch(e){case"sha256":{let r=(0,$t.createHash)(e);return r.update(t),r.digest()}case"sha512":{let r=(0,$t.createHash)(e);return r.update(t),r.digest()}case"sha3-256":{let r=hj.create();return r.update(t),r.digest()}case"sha3-512":{let r=uj.create();return r.update(t),r.digest()}case"blake2b":{let r=new Uint8Array(64),i=(0,N_.default)(64);return i.update(t),i.digest(r),r}default:throw"Hash algorithm not supported"}}function na(t,e,r="ed25519"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'seed must be a string";if(typeof e!="number"||e<0)throw"'index' must be a positive number";let i=pj(t,e);return jh(i,r,cj)}function jh(t,e,r){let i=no(e),{publicKey:n,privateKey:a}=dj(t,e);return{privateKey:Kt([Uint8Array.from([i]),Uint8Array.from([r]),a]),publicKey:Kt([Uint8Array.from([i]),Uint8Array.from([r]),n])}}function dj(t,e){switch(e){case"ed25519":{let r=bv.keyFromSecret(t),i=new Uint8Array(r.pubBytes());return{privateKey:t,publicKey:i}}case"P256":{let r=gv.keyFromPrivate(t),i=Nt(r.getPublic().encode("hex"));return{privateKey:t,publicKey:i}}case"secp256k1":{let r=yv.keyFromPrivate(t),i=Nt(r.getPublic().encode("hex"));return{privateKey:t,publicKey:i}}default:throw"Curve not supported"}}function fo(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'privateKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let n=bv.keyFromSecret(i);return Uint8Array.from(n.sign(t).toBytes())}case 1:{let n=(0,$t.createHash)("sha256").update(t).digest(),a=gv.keyFromPrivate(i);return Uint8Array.from(a.sign(n).toDER())}case 2:{let n=(0,$t.createHash)("sha256").update(t).digest(),a=yv.keyFromPrivate(i);return Uint8Array.from(a.sign(n).toDER())}default:throw"Curve not supported"}}function lj(t,e,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'signature' must be an hexadecimal string";if(typeof e=="string"&&(Mt(e)?e=Nt(e):e=new TextEncoder().encode(e)),typeof r=="string")if(Mt(r))r=Nt(r);else throw"'publicKey' must be an hexadecimal string";let i=r.slice(0,1),n=r.slice(2,r.length);switch(i[0]){case 0:return bv.keyFromPublic(Array.from(n)).verify(e,Array.from(t));case 1:{let a=(0,$t.createHash)("sha256").update(e).digest();return gv.keyFromPublic(n).verify(a,t)}case 2:{let a=(0,$t.createHash)("sha256").update(e).digest();return yv.keyFromPublic(n).verify(a,t)}default:throw"Curve not supported"}}function Hh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'publicKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let{public:n,private:a}=Fs.generateKeyPair((0,$t.randomBytes)(32)),o=vv.default.convertPublicKey(i),c=Fs.sharedKey(a,o),{aesKey:m,iv:M}=io(c),{tag:B,encrypted:R}=Fh(t,m,M);return Kt([Uint8Array.from(n),B,R])}case 1:{let n=(0,$t.createECDH)("prime256v1");n.generateKeys();let a=n.computeSecret(i),{aesKey:o,iv:c}=io(a),{tag:m,encrypted:M}=Fh(t,o,c);return Kt([Uint8Array.from(n.getPublicKey()),m,M])}case 2:{let n=(0,$t.createECDH)("secp256k1");n.generateKeys();let a=n.computeSecret(i),{aesKey:o,iv:c}=io(a),{tag:m,encrypted:M}=Fh(t,o,c);return Kt([Uint8Array.from(n.getPublicKey()),m,M])}default:throw"Curve not supported"}}function zh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'ciphertext' must be an hexadecimal string";if(typeof e=="string")if(Mt(e))e=Nt(e);else throw"'privateKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let n=t.slice(0,32),a=t.slice(32,32+16),o=t.slice(32+16,t.length),c=vv.default.convertSecretKey(i),m=Fs.sharedKey(c,n),{aesKey:M,iv:B}=io(m);return Lh(o,M,B,a)}case 1:{let n=t.slice(0,65),a=t.slice(65,65+16),o=t.slice(65+16,t.length),c=(0,$t.createECDH)("prime256v1");c.setPrivateKey(i);let m=c.computeSecret(n),{aesKey:M,iv:B}=io(m);return Lh(o,M,B,a)}case 2:{let n=t.slice(0,65),a=t.slice(65,65+16),o=t.slice(65+16,t.length),c=(0,$t.createECDH)("secp256k1");c.setPrivateKey(i);let m=c.computeSecret(n),{aesKey:M,iv:B}=io(m);return Lh(o,M,B,a)}default:throw"Curve not supported"}}function Gh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'key' must be an hexadecimal string";let r=(0,$t.randomBytes)(12),{tag:i,encrypted:n}=Fh(t,e,r);return Kt([new Uint8Array(r),i,n])}function Yh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'cipherText' must be an hexadecimal string";if(typeof e=="string")if(Mt(e))e=Nt(e);else throw"'key' must be an be hexadecimal string";let r=t.slice(0,12),i=t.slice(12,12+16),n=t.slice(28,t.length);return Lh(n,e,r,i)}function pj(t,e){Mt(t)&&(t=Nt(t));let r=(0,$t.createHash)("sha512").update(t).digest(),i=r.subarray(0,32),n=r.subarray(32,64),a=ji(e),o=Kt([i,a]);return(0,$t.createHmac)("sha512",n).update(o).digest().subarray(0,32)}function io(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'sharedKey' must be an hexadecimal string";let e=(0,$t.createHash)("sha256").update(t).digest(),r=(0,$t.createHmac)("sha256",e).update("0").digest().subarray(0,32),i=(0,$t.createHmac)("sha256",r).update("1").digest().subarray(0,32);return{iv:r,aesKey:i}}function Fh(t,e,r){let i=(0,$t.createCipheriv)("aes-256-gcm",e,r),n=i.update(t);return n=Kt([n,i.final()]),{tag:new Uint8Array(i.getAuthTag()),encrypted:n}}function Lh(t,e,r,i){let n=(0,$t.createDecipheriv)("aes-256-gcm",e,r);n.setAuthTag(i);let a=[n.update(t)];return a.push(n.final()),Kt(a)}g();g();var Wh=$r(nv(),1),so=$r(G_(),1),mj=0,df=class{constructor(e,r=1){e instanceof Uint8Array||(e=new TextEncoder().encode(e)),this.version=r,this.seed=e,this.services={}}addService(e,r,i="ed25519",n="sha256"){return this.services[e]={derivationPath:r,curve:i,hashAlgo:n},this}encode(){let e=[];for(let r in this.services){let{derivationPath:i,curve:n,hashAlgo:a}=this.services[r];e.push(Kt([Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([i.length]),new TextEncoder().encode(i),Uint8Array.from([no(n)]),Uint8Array.from([Qh(a)])]))}return Kt([ji(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),Kt(e)])}deriveKeypair(e,r=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:i,curve:n}=this.services[e];return Mv(this.seed,i,r,n)}deriveAddress(e,r=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:i,curve:n,hashAlgo:a}=this.services[e],{publicKey:o}=Mv(this.seed,i,r,n),c=no(n),m=Kh(o,a);return Kt([Uint8Array.from([c]),Uint8Array.from(m)])}buildTransaction(e,r,i){let n=this.deriveKeypair(r,i),a=this.deriveAddress(r,i+1);e.setAddress(a);let o=e.previousSignaturePayload(),c=fo(o,n.privateKey);return e.setPreviousSignatureAndPreviousPublicKey(c,n.publicKey),e}static decode(e){var o=0,{bytes:r,pos:o}=$h(e,o,4),{byte:i,pos:o}=oo(e,o,1),{bytes:n,pos:o}=$h(e,o,i),{byte:a,pos:o}=oo(e,o,1);let c=new df(n,Dl(r));for(let G=0;GM.replace("'","")).at(1);if(m=="650"){let{publicKey:M}=Mv(this.seed,o,0,c);i.push({id:`did:archethic:${r}#${a}`,type:"JsonWebKey2020",publicKeyJwk:wj(M,a),controller:`did:archethic:${r}`}),n.push(`did:archethic:${r}#${a}`)}else throw"Purpose '"+m+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${r}`,authentication:n,verificationMethod:i}}};function oo(t,e,r){return{byte:t.slice(e,e+r)[0],pos:e+r}}function $h(t,e,r){return{bytes:t.slice(e,e+r),pos:e+r}}function Mv(t,e,r,i="ed25519"){let n=(0,Wh.createHash)("sha256").update(xj(e,r)).digest(),a=(0,Wh.createHmac)("sha512",t).update(n).digest().subarray(0,32);return jh(a,i,mj)}function xj(t,e){return t.split("/").slice(0,-1).concat(`${e}`).join("/")}function wj(t,e){let r=t[0],i=t.slice(2,t.length);switch(r){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,so.default)(i),kid:e};case 1:return x=i.subarray(16),y=i.subarray(-16),{kty:"EC",crv:"P-256",x:(0,so.default)(x),y:(0,so.default)(y),kid:e};case 2:return x=i.subarray(16),y=i.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,so.default)(x),y:(0,so.default)(y),kid:e}}}var Ls=class{constructor(e){this.core=e}newKeychainTransaction(e,r){let i=new df(e);i.addService("uco","m/650'/0/0");let n=Nh(),a=r.map(o=>({publicKey:o,encryptedSecretKey:Hh(n,o)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(i.toDID())).addOwnership(Gh(i.encode(),n),a).build(e,0)}newAccessTransaction(e,r){let i=Nh(),{publicKey:n}=na(e,0),a=Hh(i,n),o=[{publicKey:n,encryptedSecretKey:a}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(Gh(r,i),o).build(e,0)}async getKeychain(e){let{publicKey:r,privateKey:i}=na(e,0),n=ia(e,1),a=await this.core.transaction.getTransactionOwnerships(n);if(a.length==0)throw"Keychain doesn't exist";let{secret:o,authorizedPublicKeys:c}=a[0],{encryptedSecretKey:m}=c.find(fe=>fe.publicKey.toLocaleUpperCase()==jt(r).toLocaleUpperCase()),M=zh(m,i),B=Yh(o,M),R=await this.core.transaction.getTransactionOwnerships(B),{secret:F,authorizedPublicKeys:N}=R[0],{encryptedSecretKey:G}=N.find(({publicKey:fe})=>fe.toUpperCase()==jt(r).toUpperCase()),Z=zh(G,i),ie=Yh(F,Z);return df.decode(ie)}};g();var Ns=class{constructor(e){this.core=e}async getStorageNoncePublicKey(){return this.core.requestNode(e=>n5(e))}async addOriginKey(e,r){return this.core.requestNode(i=>s5(e,r,i))}async getOracleData(e=void 0){return this.core.requestNode(r=>u5(r,e))}async subscribeToOracleUpdates(e,r){return this.core.requestNode(i=>h5(i,e,r))}async getToken(e){return this.core.requestNode(r=>o5(e,r))}};g();g();var Y_=1,V_={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,code_proposal:7,code_approval:8},Qs=class{constructor(e){this.version=Y_,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(e){if(!Object.keys(V_).includes(e))throw"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'";return this.type=e,this}setCode(e){if(typeof e!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(e),this}setContent(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof e=="string"&&(e=new TextEncoder().encode(e)),this.data.content=e,this}addOwnership(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof e=="string"&&(Mt(e)?e=Nt(e):e=new TextEncoder().encode(e)),typeof r!="object"&&!(r instanceof Array))throw"'authorizedKeys must be an array";let i=[];return r.reduce((n,{publicKey:a,encryptedSecretKey:o})=>{if(typeof a!="string"&&!(a instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof a=="string"){if(!Mt(a))throw"Authorized public key must be an hexadecimal";a=Nt(a)}if(typeof o!="string"&&!(o instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof o=="string"){if(!Mt(o))throw"Encrypted secret key must be an hexadecimal";o=Nt(o)}return n[a]||(i.push({publicKey:a,encryptedSecretKey:o}),n[a]=o),n},{}),this.data.ownerships.push({secret:e,authorizedKeys:i}),this}addUCOTransfer(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}if(isNaN(r)||r<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:e,amount:r}),this}addTokenTransfer(e,r,i,n=0){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof i!="string"&&!(i instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}if(isNaN(r)||r<=0)throw"Token transfer amount must be a positive number";if(typeof i=="string"){if(!Mt(i))throw"'tokenAddress' must be in hexadecimal form if it's string";i=Nt(i)}if(isNaN(n)||n<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:e,amount:r,token:i,tokenId:n}),this}addRecipient(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}return this.data.recipients.push(e),this}setPreviousSignatureAndPreviousPublicKey(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'previous Signature' must be in hexadecimal form if it's string";e=Nt(e)}if(typeof r=="string"){if(!Mt(r))throw"'previous Public Key' must be in hexadecimal form if it's string";r=Nt(r)}return this.previousPublicKey=r,this.previousSignature=e,this}setAddress(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'addr' must be in hexadecimal form if it's string";e=Nt(e)}return this.address=e,this}build(e,r,i,n){let a=na(e,r,i),o=ia(e,r+1,i,n);this.address=o,this.previousPublicKey=a.publicKey;let c=this.previousSignaturePayload();return this.previousSignature=fo(c,a.privateKey),this}originSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string"&&!Mt(e))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=fo(this.originSignaturePayload(),e),this}setOriginSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'Signature' must be in hexadecimal form if it's string";e=Nt(e)}return this.originSignature=e,this}toJSON(){return JSON.stringify({version:this.version,address:jt(this.address),type:this.type,data:{content:jt(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:e,authorizedKeys:r})=>({secret:jt(e),authorizedKeys:r.map(({publicKey:i,encryptedSecretKey:n})=>({publicKey:jt(i),encryptedSecretKey:jt(n)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(e=>({to:jt(e.to),amount:e.amount}))},token:{transfers:this.data.ledger.token.transfers.map(e=>({to:jt(e.to),amount:e.amount,tokenAddress:jt(e.token),tokenId:e.tokenId}))}},recipients:this.data.recipients.map(jt)},previousPublicKey:jt(this.previousPublicKey),previousSignature:jt(this.previousSignature),originSignature:this.originSignature&&jt(this.originSignature)})}previousSignaturePayload(){let e=ji(this.data.code.length),r=this.data.content.length;this.data.content instanceof ArrayBuffer&&(r=this.data.content.byteLength);let i=ji(r),n=this.data.ownerships.map(({secret:R,authorizedKeys:F})=>{let N=Uint8Array.from(Hn(F.length)),G=[Uint8Array.from([N.length]),N];return F.sort((Z,ie)=>jt(Z.publicKey).localeCompare(jt(ie.publicKey))),F.forEach(({publicKey:Z,encryptedSecretKey:ie})=>{G.push(Z),G.push(ie)}),Kt([ji(R.byteLength),R,Kt(G)])}),a=this.data.ledger.uco.transfers.map(function(R){return Kt([R.to,eu(R.amount)])}),o=this.data.ledger.token.transfers.map(function(R){let F=Uint8Array.from(Hn(R.tokenId));return Kt([R.token,R.to,eu(R.amount),Uint8Array.from([F.length]),F])}),c=Uint8Array.from(Hn(this.data.ownerships.length)),m=Uint8Array.from(Hn(this.data.ledger.uco.transfers.length)),M=Uint8Array.from(Hn(this.data.ledger.token.transfers.length)),B=Uint8Array.from(Hn(this.data.recipients.length));return Kt([ji(Y_),this.address,Uint8Array.from([V_[this.type]]),e,this.data.code,i,this.data.content,Uint8Array.from([c.length]),c,Kt(n),Uint8Array.from([m.length]),m,Kt(a),Uint8Array.from([M.length]),M,Kt(o),Uint8Array.from([B.length]),B,Kt(this.data.recipients)])}originSignaturePayload(){let e=this.previousSignaturePayload();return Kt([e,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};g();var $_=$r(uc(),1);var Wt=$r(Ol(),1),Sv="SENDER",Ks=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(e,r){if(typeof e!="string")throw"'event' must be a string";if(typeof r!="function")throw"'func' must be a function";switch(e){case"sent":this.onSent.push(r);break;case"confirmation":this.onConfirmation.push(r);break;case"requiredConfirmation":this.onRequiredConfirmation.push(r);break;case"fullConfirmation":this.onFullConfirmation.push(r);break;case"error":this.onError.push(r);break;case"timeout":this.onTimeout.push(r);break;default:throw"Event "+e+" is not supported"}return this}async send(e,r,i=100,n=60){if(typeof e!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof r!="string")throw"'endpoint' must be a string";if(typeof i!="number"||i<0&&i>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof n!="number"||n<=0)throw"'timeout' must be an integer greater than 0";let a=jt(e.address),{host:o,protocol:c}=new URL(r),m=c=="https:"?"wss":"ws";this.absintheSocket=(0,Wt.absintheCreate)(`${m}://${o}/socket`);try{this.confirmationNotifier=await Aj(a,this.absintheSocket,(M,B)=>Ij.call(this,i,M,B)),this.errorNotifier=await _j(a,this.absintheSocket,Ej.bind(this))}catch(M){return this.onError.forEach(B=>B(Sv,M.message,this)),this}return(0,$_.default)(r+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(M=>Mj.call(this,n,M)).catch(M=>this.onError.forEach(B=>B(Sv,M,this))),this}unsubscribe(e=void 0){if(e)switch(e){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+e+" is not supported"}else(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function Aj(t,e,r){let i=` + `);return(0,Ma.absintheObserve)(d,b,A=>{t(A.data.oracelUpdate)})}async function zn(e){return new Promise(function(t,r){e.status>=200&&e.status<=299?e.json().then(t):r(e.statusText)})}var Lp={};al(Lp,{IDToCurve:()=>Up,IDToHashAlgo:()=>Pp,aesDecrypt:()=>el,aesEncrypt:()=>tl,curveToID:()=>oo,deriveAddress:()=>fa,deriveKeyPair:()=>aa,ecDecrypt:()=>Xu,ecEncrypt:()=>Ju,generateDeterministicKeyPair:()=>Wu,getHashDigest:()=>T_,hash:()=>Zu,hashAlgoToID:()=>$u,randomSecretKey:()=>Gu,sign:()=>so,verify:()=>$j});M();var Ge=$r(mp(),1),B_=$r(Cs(),1),C_=$r(x9(),1),q_=$r(u_(),1),Qs=$r(__(),1),Tp=$r(S_(),1);var{ec:R_,eddsa:jj}=B_.default,Op=new jj("ed25519"),Dp=new R_("p256"),kp=new R_("secp256k1"),{sha3_512:zj,sha3_256:Vj}=C_.default,Yj=1;function Gu(){return new Uint8Array((0,Ge.randomBytes)(32))}function $u(e){switch(e){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function Pp(e){switch(e){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function oo(e){switch(e){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function Up(e){switch(e){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function fa(e,t,r="ed25519",a="sha256"){let{publicKey:n}=aa(e,t,r),d=oo(r),m=Zu(n,a);return Le([Uint8Array.from([d]),Uint8Array.from(m)])}function Zu(e,t="sha256"){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof e=="string"&&(we(e)?e=qe(e):e=new TextEncoder().encode(e));let r=$u(t),a=T_(e,t);return Le([Uint8Array.from([r]),Uint8Array.from(a)])}function T_(e,t){switch(t){case"sha256":{let r=(0,Ge.createHash)(t);return r.update(e),r.digest()}case"sha512":{let r=(0,Ge.createHash)(t);return r.update(e),r.digest()}case"sha3-256":{let r=Vj.create();return r.update(e),r.digest()}case"sha3-512":{let r=zj.create();return r.update(e),r.digest()}case"blake2b":{let r=new Uint8Array(64),a=(0,q_.default)(64);return a.update(e),a.digest(r),r}default:throw"Hash algorithm not supported"}}function aa(e,t,r="ed25519"){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'seed must be a string";if(typeof t!="number"||t<0)throw"'index' must be a positive number";let a=Zj(e,t);return Wu(a,r,Yj)}function Wu(e,t,r){let a=oo(t),{publicKey:n,privateKey:d}=Gj(e,t);return{privateKey:Le([Uint8Array.from([a]),Uint8Array.from([r]),d]),publicKey:Le([Uint8Array.from([a]),Uint8Array.from([r]),n])}}function Gj(e,t){switch(t){case"ed25519":{let r=Op.keyFromSecret(e),a=new Uint8Array(r.pubBytes());return{privateKey:e,publicKey:a}}case"P256":{let r=Dp.keyFromPrivate(e),a=qe(r.getPublic().encode("hex"));return{privateKey:e,publicKey:a}}case"secp256k1":{let r=kp.keyFromPrivate(e),a=qe(r.getPublic().encode("hex"));return{privateKey:e,publicKey:a}}default:throw"Curve not supported"}}function so(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof e=="string"&&(we(e)?e=qe(e):e=new TextEncoder().encode(e)),typeof t=="string")if(we(t))t=qe(t);else throw"'privateKey' must be an hexadecimal string";let r=t.slice(0,1),a=t.slice(2,t.length);switch(r[0]){case 0:{let n=Op.keyFromSecret(a);return Uint8Array.from(n.sign(e).toBytes())}case 1:{let n=(0,Ge.createHash)("sha256").update(e).digest(),d=Dp.keyFromPrivate(a);return Uint8Array.from(d.sign(n).toDER())}case 2:{let n=(0,Ge.createHash)("sha256").update(e).digest(),d=kp.keyFromPrivate(a);return Uint8Array.from(d.sign(n).toDER())}default:throw"Curve not supported"}}function $j(e,t,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof e=="string")if(we(e))e=qe(e);else throw"'signature' must be an hexadecimal string";if(typeof t=="string"&&(we(t)?t=qe(t):t=new TextEncoder().encode(t)),typeof r=="string")if(we(r))r=qe(r);else throw"'publicKey' must be an hexadecimal string";let a=r.slice(0,1),n=r.slice(2,r.length);switch(a[0]){case 0:return Op.keyFromPublic(Array.from(n)).verify(t,Array.from(e));case 1:{let d=(0,Ge.createHash)("sha256").update(t).digest();return Dp.keyFromPublic(n).verify(d,e)}case 2:{let d=(0,Ge.createHash)("sha256").update(t).digest();return kp.keyFromPublic(n).verify(d,e)}default:throw"Curve not supported"}}function Ju(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof e=="string"&&(we(e)?e=qe(e):e=new TextEncoder().encode(e)),typeof t=="string")if(we(t))t=qe(t);else throw"'publicKey' must be an hexadecimal string";let r=t.slice(0,1),a=t.slice(2,t.length);switch(r[0]){case 0:{let{public:n,private:d}=Qs.generateKeyPair((0,Ge.randomBytes)(32)),m=Tp.default.convertPublicKey(a),b=Qs.sharedKey(d,m),{aesKey:A,iv:B}=ao(b),{tag:C,encrypted:D}=Vu(e,A,B);return Le([Uint8Array.from(n),C,D])}case 1:{let n=(0,Ge.createECDH)("prime256v1");n.generateKeys();let d=n.computeSecret(a),{aesKey:m,iv:b}=ao(d),{tag:A,encrypted:B}=Vu(e,m,b);return Le([Uint8Array.from(n.getPublicKey()),A,B])}case 2:{let n=(0,Ge.createECDH)("secp256k1");n.generateKeys();let d=n.computeSecret(a),{aesKey:m,iv:b}=ao(d),{tag:A,encrypted:B}=Vu(e,m,b);return Le([Uint8Array.from(n.getPublicKey()),A,B])}default:throw"Curve not supported"}}function Xu(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string")if(we(e))e=qe(e);else throw"'ciphertext' must be an hexadecimal string";if(typeof t=="string")if(we(t))t=qe(t);else throw"'privateKey' must be an hexadecimal string";let r=t.slice(0,1),a=t.slice(2,t.length);switch(r[0]){case 0:{let n=e.slice(0,32),d=e.slice(32,32+16),m=e.slice(32+16,e.length),b=Tp.default.convertSecretKey(a),A=Qs.sharedKey(b,n),{aesKey:B,iv:C}=ao(A);return Yu(m,B,C,d)}case 1:{let n=e.slice(0,65),d=e.slice(65,65+16),m=e.slice(65+16,e.length),b=(0,Ge.createECDH)("prime256v1");b.setPrivateKey(a);let A=b.computeSecret(n),{aesKey:B,iv:C}=ao(A);return Yu(m,B,C,d)}case 2:{let n=e.slice(0,65),d=e.slice(65,65+16),m=e.slice(65+16,e.length),b=(0,Ge.createECDH)("secp256k1");b.setPrivateKey(a);let A=b.computeSecret(n),{aesKey:B,iv:C}=ao(A);return Yu(m,B,C,d)}default:throw"Curve not supported"}}function tl(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof e=="string"&&(we(e)?e=qe(e):e=new TextEncoder().encode(e)),typeof t=="string")if(we(t))t=qe(t);else throw"'key' must be an hexadecimal string";let r=(0,Ge.randomBytes)(12),{tag:a,encrypted:n}=Vu(e,t,r);return Le([new Uint8Array(r),a,n])}function el(e,t){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof e=="string")if(we(e))e=qe(e);else throw"'cipherText' must be an hexadecimal string";if(typeof t=="string")if(we(t))t=qe(t);else throw"'key' must be an be hexadecimal string";let r=e.slice(0,12),a=e.slice(12,12+16),n=e.slice(28,e.length);return Yu(n,t,r,a)}function Zj(e,t){we(e)&&(e=qe(e));let r=(0,Ge.createHash)("sha512").update(e).digest(),a=r.subarray(0,32),n=r.subarray(32,64),d=Hi(t),m=Le([a,d]);return(0,Ge.createHmac)("sha512",n).update(m).digest().subarray(0,32)}function ao(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof e=="string")if(we(e))e=qe(e);else throw"'sharedKey' must be an hexadecimal string";let t=(0,Ge.createHash)("sha256").update(e).digest(),r=(0,Ge.createHmac)("sha256",t).update("0").digest().subarray(0,32),a=(0,Ge.createHmac)("sha256",r).update("1").digest().subarray(0,32);return{iv:r,aesKey:a}}function Vu(e,t,r){let a=(0,Ge.createCipheriv)("aes-256-gcm",t,r),n=a.update(e);return n=Le([n,a.final()]),{tag:new Uint8Array(a.getAuthTag()),encrypted:n}}function Yu(e,t,r,a){let n=(0,Ge.createDecipheriv)("aes-256-gcm",t,r);n.setAuthTag(a);let d=[n.update(e)];return d.push(n.final()),Le(d)}M();M();var nl=$r(mp(),1),lo=$r(P_(),1),ez=0,cf=class{constructor(t,r=1){t instanceof Uint8Array||(t=new TextEncoder().encode(t)),this.version=r,this.seed=t,this.services={}}addService(t,r,a="ed25519",n="sha256"){return this.services[t]={derivationPath:r,curve:a,hashAlgo:n},this}encode(){let t=[];for(let r in this.services){let{derivationPath:a,curve:n,hashAlgo:d}=this.services[r];t.push(Le([Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([a.length]),new TextEncoder().encode(a),Uint8Array.from([oo(n)]),Uint8Array.from([$u(d)])]))}return Le([Hi(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),Le(t)])}deriveKeypair(t,r=0){if(!this.services[t])throw"Service doesn't exist in the keychain";let{derivationPath:a,curve:n}=this.services[t];return Hp(this.seed,a,r,n)}deriveAddress(t,r=0){if(!this.services[t])throw"Service doesn't exist in the keychain";let{derivationPath:a,curve:n,hashAlgo:d}=this.services[t],{publicKey:m}=Hp(this.seed,a,r,n),b=oo(n),A=Zu(m,d);return Le([Uint8Array.from([b]),Uint8Array.from(A)])}buildTransaction(t,r,a){let n=this.deriveKeypair(r,a),d=this.deriveAddress(r,a+1);t.setAddress(d);let m=t.previousSignaturePayload(),b=so(m,n.privateKey);return t.setPreviousSignatureAndPreviousPublicKey(b,n.publicKey),t}static decode(t){var m=0,{bytes:r,pos:m}=il(t,m,4),{byte:a,pos:m}=uo(t,m,1),{bytes:n,pos:m}=il(t,m,a),{byte:d,pos:m}=uo(t,m,1);let b=new cf(n,Qd(r));for(let Z=0;ZB.replace("'","")).at(1);if(A=="650"){let{publicKey:B}=Hp(this.seed,m,0,b);a.push({id:`did:archethic:${r}#${d}`,type:"JsonWebKey2020",publicKeyJwk:iz(B,d),controller:`did:archethic:${r}`}),n.push(`did:archethic:${r}#${d}`)}else throw"Purpose '"+A+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${r}`,authentication:n,verificationMethod:a}}};function uo(e,t,r){return{byte:e.slice(t,t+r)[0],pos:t+r}}function il(e,t,r){return{bytes:e.slice(t,t+r),pos:t+r}}function Hp(e,t,r,a="ed25519"){let n=(0,nl.createHash)("sha256").update(rz(t,r)).digest(),d=(0,nl.createHmac)("sha512",e).update(n).digest().subarray(0,32);return Wu(d,a,ez)}function rz(e,t){return e.split("/").slice(0,-1).concat(`${t}`).join("/")}function iz(e,t){let r=e[0],a=e.slice(2,e.length);switch(r){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,lo.default)(a),kid:t};case 1:return x=a.subarray(16),y=a.subarray(-16),{kty:"EC",crv:"P-256",x:(0,lo.default)(x),y:(0,lo.default)(y),kid:t};case 2:return x=a.subarray(16),y=a.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,lo.default)(x),y:(0,lo.default)(y),kid:t}}}var Hs=class{constructor(t){this.core=t}newKeychainTransaction(t,r){let a=new cf(t);a.addService("uco","m/650'/0/0");let n=Gu(),d=r.map(m=>({publicKey:m,encryptedSecretKey:Ju(n,m)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(a.toDID())).addOwnership(tl(a.encode(),n),d).build(t,0)}newAccessTransaction(t,r){let a=Gu(),{publicKey:n}=aa(t,0),d=Ju(a,n),m=[{publicKey:n,encryptedSecretKey:d}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(tl(r,a),m).build(t,0)}async getKeychain(t){let{publicKey:r,privateKey:a}=aa(t,0),n=fa(t,1),d=await this.core.transaction.getTransactionOwnerships(n);if(d.length==0)throw"Keychain doesn't exist";let{secret:m,authorizedPublicKeys:b}=d[0],{encryptedSecretKey:A}=b.find(J=>J.publicKey.toLocaleUpperCase()==Qe(r).toLocaleUpperCase()),B=Xu(A,a),C=el(m,B),D=await this.core.transaction.getTransactionOwnerships(C),{secret:K,authorizedPublicKeys:j}=D[0],{encryptedSecretKey:Z}=j.find(({publicKey:J})=>J.toUpperCase()==Qe(r).toUpperCase()),qt=Xu(Z,a),Rt=el(K,qt);return cf.decode(Rt)}};M();var js=class{constructor(t){this.core=t}async getStorageNoncePublicKey(){return this.core.requestNode(t=>M8(t))}async addOriginKey(t,r){return this.core.requestNode(a=>E8(t,r,a))}async getOracleData(t=void 0){return this.core.requestNode(r=>S8(r,t))}async subscribeToOracleUpdates(t,r){return this.core.requestNode(a=>B8(a,t,r))}async getToken(t){return this.core.requestNode(r=>I8(t,r))}};M();M();var U_=1,jp={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,data:250,contract:249,code_proposal:7,code_approval:8},zs=class{constructor(t){this.version=U_,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(t){if(!Object.keys(jp).includes(t))throw"Transaction type must be in "+Object.keys(jp).map(r=>`'${r}'`).join(", ");return this.type=t,this}setCode(t){if(typeof t!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(t),this}setContent(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof t=="string"&&(t=new TextEncoder().encode(t)),this.data.content=t,this}addOwnership(t,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof t=="string"&&(we(t)?t=qe(t):t=new TextEncoder().encode(t)),typeof r!="object"&&!(r instanceof Array))throw"'authorizedKeys must be an array";let a=[];return r.reduce((n,{publicKey:d,encryptedSecretKey:m})=>{if(typeof d!="string"&&!(d instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof d=="string"){if(!we(d))throw"Authorized public key must be an hexadecimal";d=qe(d)}if(typeof m!="string"&&!(m instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof m=="string"){if(!we(m))throw"Encrypted secret key must be an hexadecimal";m=qe(m)}return n[d]||(a.push({publicKey:d,encryptedSecretKey:m}),n[d]=m),n},{}),this.data.ownerships.push({secret:t,authorizedKeys:a}),this}addUCOTransfer(t,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'to' must be in hexadecimal form if it's string";t=qe(t)}if(isNaN(r)||r<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:t,amount:r}),this}addTokenTransfer(t,r,a,n=0){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof a!="string"&&!(a instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'to' must be in hexadecimal form if it's string";t=qe(t)}if(isNaN(r)||r<=0)throw"Token transfer amount must be a positive number";if(typeof a=="string"){if(!we(a))throw"'tokenAddress' must be in hexadecimal form if it's string";a=qe(a)}if(isNaN(n)||n<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:t,amount:r,token:a,tokenId:n}),this}addRecipient(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'to' must be in hexadecimal form if it's string";t=qe(t)}return this.data.recipients.push(t),this}setPreviousSignatureAndPreviousPublicKey(t,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'previous Signature' must be in hexadecimal form if it's string";t=qe(t)}if(typeof r=="string"){if(!we(r))throw"'previous Public Key' must be in hexadecimal form if it's string";r=qe(r)}return this.previousPublicKey=r,this.previousSignature=t,this}setAddress(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'addr' must be in hexadecimal form if it's string";t=qe(t)}return this.address=t,this}build(t,r,a,n){let d=aa(t,r,a),m=fa(t,r+1,a,n);this.address=m,this.previousPublicKey=d.publicKey;let b=this.previousSignaturePayload();return this.previousSignature=so(b,d.privateKey),this}originSign(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string"&&!we(t))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=so(this.originSignaturePayload(),t),this}setOriginSign(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof t=="string"){if(!we(t))throw"'Signature' must be in hexadecimal form if it's string";t=qe(t)}return this.originSignature=t,this}toJSON(){return JSON.stringify({version:this.version,address:Qe(this.address),type:this.type,data:{content:Qe(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:t,authorizedKeys:r})=>({secret:Qe(t),authorizedKeys:r.map(({publicKey:a,encryptedSecretKey:n})=>({publicKey:Qe(a),encryptedSecretKey:Qe(n)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(t=>({to:Qe(t.to),amount:t.amount}))},token:{transfers:this.data.ledger.token.transfers.map(t=>({to:Qe(t.to),amount:t.amount,tokenAddress:Qe(t.token),tokenId:t.tokenId}))}},recipients:this.data.recipients.map(Qe)},previousPublicKey:Qe(this.previousPublicKey),previousSignature:Qe(this.previousSignature),originSignature:this.originSignature&&Qe(this.originSignature)})}previousSignaturePayload(){let t=Hi(this.data.code.length),r=this.data.content.length;this.data.content instanceof ArrayBuffer&&(r=this.data.content.byteLength);let a=Hi(r),n=this.data.ownerships.map(({secret:D,authorizedKeys:K})=>{let j=Uint8Array.from(jn(K.length)),Z=[Uint8Array.from([j.length]),j];return K.sort((qt,Rt)=>Qe(qt.publicKey).localeCompare(Qe(Rt.publicKey))),K.forEach(({publicKey:qt,encryptedSecretKey:Rt})=>{Z.push(qt),Z.push(Rt)}),Le([Hi(D.byteLength),D,Le(Z)])}),d=this.data.ledger.uco.transfers.map(function(D){return Le([D.to,fh(D.amount)])}),m=this.data.ledger.token.transfers.map(function(D){let K=Uint8Array.from(jn(D.tokenId));return Le([D.token,D.to,fh(D.amount),Uint8Array.from([K.length]),K])}),b=Uint8Array.from(jn(this.data.ownerships.length)),A=Uint8Array.from(jn(this.data.ledger.uco.transfers.length)),B=Uint8Array.from(jn(this.data.ledger.token.transfers.length)),C=Uint8Array.from(jn(this.data.recipients.length));return Le([Hi(U_),this.address,Uint8Array.from([jp[this.type]]),t,this.data.code,a,this.data.content,Uint8Array.from([b.length]),b,Le(n),Uint8Array.from([A.length]),A,Le(d),Uint8Array.from([B.length]),B,Le(m),Uint8Array.from([C.length]),C,Le(this.data.recipients)])}originSignaturePayload(){let t=this.previousSignaturePayload();return Le([t,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};M();var L_=$r(ml(),1);var $e=$r(Kd(),1),zp="SENDER",Vs=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(t,r){if(typeof t!="string")throw"'event' must be a string";if(typeof r!="function")throw"'func' must be a function";switch(t){case"sent":this.onSent.push(r);break;case"confirmation":this.onConfirmation.push(r);break;case"requiredConfirmation":this.onRequiredConfirmation.push(r);break;case"fullConfirmation":this.onFullConfirmation.push(r);break;case"error":this.onError.push(r);break;case"timeout":this.onTimeout.push(r);break;default:throw"Event "+t+" is not supported"}return this}async send(t,r,a=100,n=60){if(typeof t!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof r!="string")throw"'endpoint' must be a string";if(typeof a!="number"||a<0&&a>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof n!="number"||n<=0)throw"'timeout' must be an integer greater than 0";let d=Qe(t.address),{host:m,protocol:b}=new URL(r),A=b=="https:"?"wss":"ws";this.absintheSocket=(0,$e.absintheCreate)(`${A}://${m}/socket`);try{this.confirmationNotifier=await nz(d,this.absintheSocket,(B,C)=>az.call(this,a,B,C)),this.errorNotifier=await fz(d,this.absintheSocket,oz.bind(this))}catch(B){return this.onError.forEach(C=>C(zp,B.message,this)),this}return(0,L_.default)(r+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(B=>sz.call(this,n,B)).catch(B=>this.onError.forEach(C=>C(zp,B,this))),this}unsubscribe(t=void 0){if(t)switch(t){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+t+" is not supported"}else(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function nz(e,t,r){let a=` subscription { - transactionConfirmed(address: "${t}") { + transactionConfirmed(address: "${e}") { nbConfirmations, maxConfirmations } } - `,n=(0,Wt.absintheSend)(e,i);return(0,Wt.absintheObserve)(e,n,a=>{if(a.data.transactionConfirmed){let{nbConfirmations:o,maxConfirmations:c}=a.data.transactionConfirmed;r(o,c)}})}async function _j(t,e,r){let i=` + `,n=(0,$e.absintheSend)(t,a);return(0,$e.absintheObserve)(t,n,d=>{if(d.data.transactionConfirmed){let{nbConfirmations:m,maxConfirmations:b}=d.data.transactionConfirmed;r(m,b)}})}async function fz(e,t,r){let a=` subscription { - transactionError(address: "${t}") { + transactionError(address: "${e}") { context, reason } } - `,n=(0,Wt.absintheSend)(e,i);return(0,Wt.absintheObserve)(e,n,a=>{if(a.data.transactionError){let{context:o,reason:c}=a.data.transactionError;r(o,c)}})}function Ij(t,e,r){this.nbConfirmationReceived=e,e==1&&(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(i=>i(e,r,this)),r*(t/100)<=e&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(i=>i(e,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),e==r&&(clearTimeout(this.timeout),(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(i=>i(r,this)))}function Ej(t,e){clearTimeout(this.timeout),(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(r=>r(t,e,this))}function Mj(t,e){e.status>=200&&e.status<=299?(this.onSent.forEach(r=>r(this)),this.timeout=setTimeout(()=>{(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(r=>r(this.nbConfirmationReceived,this))},t*1e3)):((0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),e.json().then(r=>this.onError.forEach(i=>i(Sv,r.status,this))))}var js=class{constructor(e){this.core=e,this.builder=Cv}new(){return new this.builder(this.core)}getTransactionIndex(e){return this.core.requestNode(r=>i5(e,r))}getTransactionFee(e){return this.core.requestNode(r=>f5(e,r))}getTransactionOwnerships(e){return this.core.requestNode(r=>a5(e,r))}},Cv=class extends Qs{constructor(e){super(),this.core=e,this.sender=new Ks}send(e,r){this.core.requestNode(i=>this.sender.send(this,i,e,r))}on(e,r){return this.sender.on(e,r),this}unsubscribe(e){return this.sender.unsubscribe(e),this}};var Jh=class{constructor(e){this.endpoint=new URL(e),this.transaction=new js(this),this.account=new Ls(this),this.network=new Ns(this)}async connect(){let e=await r5(this.endpoint);return this.nearestEndpoints=e.map(({ip:r,port:i})=>`http://${r}:${i}`),this}async requestNode(e){let r=this.nearestEndpoints[0];try{return await e(r)}catch(i){if(console.error(i),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(e)}}};return rI(Sj);})(); + `,n=(0,$e.absintheSend)(t,a);return(0,$e.absintheObserve)(t,n,d=>{if(d.data.transactionError){let{context:m,reason:b}=d.data.transactionError;r(m,b)}})}function az(e,t,r){this.nbConfirmationReceived=t,t==1&&(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(a=>a(t,r,this)),r*(e/100)<=t&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(a=>a(t,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),t==r&&(clearTimeout(this.timeout),(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(a=>a(r,this)))}function oz(e,t){clearTimeout(this.timeout),(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(r=>r(e,t,this))}function sz(e,t){t.status>=200&&t.status<=299?(this.onSent.forEach(r=>r(this)),this.timeout=setTimeout(()=>{(0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(r=>r(this.nbConfirmationReceived,this))},e*1e3)):((0,$e.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,$e.absintheCancel)(this.absintheSocket,this.errorNotifier),t.json().then(r=>this.onError.forEach(a=>a(zp,r.status,this))))}var Ys=class{constructor(t){this.core=t,this.builder=Vp}new(){return new this.builder(this.core)}getTransactionIndex(t){return this.core.requestNode(r=>w8(t,r))}getTransactionFee(t){return this.core.requestNode(r=>A8(t,r))}getTransactionOwnerships(t){return this.core.requestNode(r=>_8(t,r))}},Vp=class extends zs{constructor(t){super(),this.core=t,this.sender=new Vs}send(t,r){this.core.requestNode(a=>this.sender.send(this,a,t,r))}on(t,r){return this.sender.on(t,r),this}unsubscribe(t){return this.sender.unsubscribe(t),this}};var fl=class{constructor(t){this.endpoint=new URL(t),this.transaction=new Ys(this),this.account=new Hs(this),this.network=new js(this)}async connect(){let t=await x8(this.endpoint);return this.nearestEndpoints=t.map(({ip:r,port:a})=>`http://${r}:${a}`),this}async requestNode(t){let r=this.nearestEndpoints[0];try{return await t(r)}catch(a){if(console.error(a),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(t)}}};return z_(hz);})(); /*! * The buffer module from node.js, for the browser. * diff --git a/dist/archethic.js.map b/dist/archethic.js.map index fea2536..6f06e77 100644 --- a/dist/archethic.js.map +++ b/dist/archethic.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../node_modules/base64-js/index.js", "../node_modules/ieee754/index.js", "../node_modules/buffer/index.js", "../esbuild.inject.js", "../node_modules/cross-fetch/dist/browser-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/isomorphic-ws/browser.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/safe-buffer/index.js", "../node_modules/randombytes/browser.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/events/events.js", "../node_modules/readable-stream/lib/internal/streams/stream-browser.js", "(disabled):util", "../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../node_modules/readable-stream/lib/internal/streams/destroy.js", "../node_modules/readable-stream/errors-browser.js", "../node_modules/readable-stream/lib/internal/streams/state.js", "../node_modules/util-deprecate/browser.js", "../node_modules/readable-stream/lib/_stream_writable.js", "../node_modules/readable-stream/lib/_stream_duplex.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../node_modules/readable-stream/lib/internal/streams/from-browser.js", "../node_modules/readable-stream/lib/_stream_readable.js", "../node_modules/readable-stream/lib/_stream_transform.js", "../node_modules/readable-stream/lib/_stream_passthrough.js", "../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../node_modules/readable-stream/readable-browser.js", "../node_modules/hash-base/index.js", "../node_modules/md5.js/index.js", "../node_modules/ripemd160/index.js", "../node_modules/sha.js/hash.js", "../node_modules/sha.js/sha.js", "../node_modules/sha.js/sha1.js", "../node_modules/sha.js/sha256.js", "../node_modules/sha.js/sha224.js", "../node_modules/sha.js/sha512.js", "../node_modules/sha.js/sha384.js", "../node_modules/sha.js/index.js", "../node_modules/stream-browserify/index.js", "../node_modules/cipher-base/index.js", "../node_modules/create-hash/browser.js", "../node_modules/create-hmac/legacy.js", "../node_modules/create-hash/md5.js", "../node_modules/create-hmac/browser.js", "../node_modules/browserify-sign/algos.js", "../node_modules/pbkdf2/lib/precondition.js", "../node_modules/pbkdf2/lib/default-encoding.js", "../node_modules/pbkdf2/lib/to-buffer.js", "../node_modules/pbkdf2/lib/sync-browser.js", "../node_modules/pbkdf2/lib/async.js", "../node_modules/pbkdf2/browser.js", "../node_modules/des.js/lib/des/utils.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/des.js/lib/des/cipher.js", "../node_modules/des.js/lib/des/des.js", "../node_modules/des.js/lib/des/cbc.js", "../node_modules/des.js/lib/des/ede.js", "../node_modules/des.js/lib/des.js", "../node_modules/browserify-des/index.js", "../node_modules/browserify-aes/modes/ecb.js", "../node_modules/buffer-xor/index.js", "../node_modules/browserify-aes/modes/cbc.js", "../node_modules/browserify-aes/modes/cfb.js", "../node_modules/browserify-aes/modes/cfb8.js", "../node_modules/browserify-aes/modes/cfb1.js", "../node_modules/browserify-aes/modes/ofb.js", "../node_modules/browserify-aes/incr32.js", "../node_modules/browserify-aes/modes/ctr.js", "../node_modules/browserify-aes/modes/index.js", "../node_modules/browserify-aes/aes.js", "../node_modules/browserify-aes/ghash.js", "../node_modules/browserify-aes/authCipher.js", "../node_modules/browserify-aes/streamCipher.js", "../node_modules/evp_bytestokey/index.js", "../node_modules/browserify-aes/encrypter.js", "../node_modules/browserify-aes/decrypter.js", "../node_modules/browserify-aes/browser.js", "../node_modules/browserify-des/modes.js", "../node_modules/browserify-cipher/browser.js", "../node_modules/buffer/index.js", "../node_modules/bn.js/lib/bn.js", "(disabled):crypto", "../node_modules/brorand/index.js", "../node_modules/miller-rabin/lib/mr.js", "../node_modules/diffie-hellman/lib/generatePrime.js", "../node_modules/diffie-hellman/lib/dh.js", "../node_modules/diffie-hellman/browser.js", "../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js", "../node_modules/browserify-rsa/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js", "../node_modules/safer-buffer/safer.js", "../node_modules/asn1.js/lib/asn1/base/reporter.js", "../node_modules/asn1.js/lib/asn1/base/buffer.js", "../node_modules/asn1.js/lib/asn1/base/node.js", "../node_modules/asn1.js/lib/asn1/constants/der.js", "../node_modules/asn1.js/lib/asn1/encoders/der.js", "../node_modules/asn1.js/lib/asn1/encoders/pem.js", "../node_modules/asn1.js/lib/asn1/encoders/index.js", "../node_modules/asn1.js/lib/asn1/decoders/der.js", "../node_modules/asn1.js/lib/asn1/decoders/pem.js", "../node_modules/asn1.js/lib/asn1/decoders/index.js", "../node_modules/asn1.js/lib/asn1/api.js", "../node_modules/asn1.js/lib/asn1/base/index.js", "../node_modules/asn1.js/lib/asn1/constants/index.js", "../node_modules/asn1.js/lib/asn1.js", "../node_modules/parse-asn1/certificate.js", "../node_modules/parse-asn1/asn1.js", "../node_modules/parse-asn1/fixProc.js", "../node_modules/parse-asn1/index.js", "../node_modules/browserify-sign/browser/sign.js", "../node_modules/browserify-sign/browser/verify.js", "../node_modules/browserify-sign/browser/index.js", "../node_modules/create-ecdh/browser.js", "../node_modules/public-encrypt/mgf.js", "../node_modules/public-encrypt/xor.js", "../node_modules/public-encrypt/withPublic.js", "../node_modules/public-encrypt/publicEncrypt.js", "../node_modules/public-encrypt/privateDecrypt.js", "../node_modules/public-encrypt/browser.js", "../node_modules/randomfill/browser.js", "../node_modules/crypto-browserify/index.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], - "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "export let Buffer = require(\"buffer\").Buffer", "var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || this\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => { callback && callback(null) }\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(){\n this.close()\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry()\n }\n\n poll(){\n if(!(this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting)){ return }\n\n Ajax.request(\"GET\", this.endpointURL(), \"application/json\", null, this.timeout, this.ontimeout.bind(this), (resp) => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => {\n this.onmessage({data: msg})\n }, 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen()\n this.poll()\n break\n case 403:\n this.onerror()\n this.close()\n break\n case 0:\n case 500:\n this.onerror()\n this.closeAndRetry()\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n Ajax.request(\"POST\", this.endpointURL(), \"application/json\", body, this.timeout, this.onerror.bind(this, \"timeout\"), (resp) => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry()\n }\n })\n }\n\n close(_code, _reason){\n this.readyState = SOCKET_STATES.closed\n this.onclose()\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millsec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millsec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.disconnect()\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualifed socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n this.connectClock++\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * @private\n */\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.abnormalClose(\"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n clearTimeout(this.heartbeatTimer)\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n clearTimeout(this.heartbeatTimer)\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n abnormalClose(reason){\n this.closeWasClean = false\n if(this.isConnected()){ this.conn.close(WS_CLOSE_NORMAL, reason) }\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n clearTimeout(this.heartbeatTimer)\n this.pendingHeartbeatRef = null\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}\n", "// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", "module.exports = require('events').EventEmitter;\n", "", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();", "'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;", "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n", "var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n", "var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n", "var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n", "var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n", "var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n", "'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n", "var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n", "module.exports = require('./browser/algorithms.json')\n", "var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n", "var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n", "var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n", "var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n", "exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n", "'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\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\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\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", "'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", "var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n", "exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n", "var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n", "var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n", "var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n", "// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n", "var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho V\u00E4h\u00E4-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\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", "var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n", "var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n", "var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n", "var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\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", "var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n", "var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n", "'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n", "'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n", "'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n", "'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n", "'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n", "'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n", "'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n", "'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n", "// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n", "// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n", "// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n", "var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n", "var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n", "var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n", "var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n", "module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n", "var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n", "var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n", "var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n", "exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n", "'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n", "'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "assert.notEqual = notEqual\nassert.notOk = notOk\nassert.equal = equal\nassert.ok = assert\n\nmodule.exports = assert\n\nfunction equal (a, b, m) {\n assert(a == b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notEqual (a, b, m) {\n assert(a != b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notOk (t, m) {\n assert(!t, m)\n}\n\nfunction assert (t, m) {\n if (!t) throw new Error(m || 'AssertionError')\n}\n", "\nmodule.exports = loadWebAssembly\n\nloadWebAssembly.supported = typeof WebAssembly !== 'undefined'\n\nfunction loadWebAssembly (opts) {\n if (!loadWebAssembly.supported) return null\n\n var imp = opts && opts.imports\n var wasm = toUint8Array('AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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')\n var ready = null\n\n var mod = {\n buffer: wasm,\n memory: null,\n exports: null,\n realloc: realloc,\n onload: onload\n }\n\n onload(function () {})\n\n return mod\n\n function realloc (size) {\n mod.exports.memory.grow(Math.ceil(Math.abs(size - mod.memory.length) / 65536))\n mod.memory = new Uint8Array(mod.exports.memory.buffer)\n }\n\n function onload (cb) {\n if (mod.exports) return cb()\n\n if (ready) {\n ready.then(cb.bind(null, null)).catch(cb)\n return\n }\n\n try {\n if (opts && opts.async) throw new Error('async')\n setup({instance: new WebAssembly.Instance(new WebAssembly.Module(wasm), imp)})\n } catch (err) {\n ready = WebAssembly.instantiate(wasm, imp).then(setup)\n }\n\n onload(cb)\n }\n\n function setup (w) {\n mod.exports = w.instance.exports\n mod.memory = mod.exports.memory && mod.exports.memory.buffer && new Uint8Array(mod.exports.memory.buffer)\n }\n}\n\nfunction toUint8Array (s) {\n if (typeof atob === 'function') return new Uint8Array(atob(s).split('').map(charCodeAt))\n return new (require('buf' + 'fer').Buffer)(s, 'base64')\n}\n\nfunction charCodeAt (c) {\n return c.charCodeAt(0)\n}\n", "var assert = require('nanoassert')\nvar wasm = require('./blake2b')()\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!(wasm && wasm.exports)) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n\n wasm.memory.fill(0, 0, 64)\n wasm.memory[0] = this.digestLength\n wasm.memory[1] = key ? key.length : 0\n wasm.memory[2] = 1 // fanout\n wasm.memory[3] = 1 // depth\n\n if (salt) wasm.memory.set(salt, 32)\n if (personal) wasm.memory.set(personal, 48)\n\n if (this.pointer + 216 > wasm.memory.length) wasm.realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.exports.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n wasm.memory.fill(0, head, head + key.length) // whiteout key\n wasm.memory[this.pointer + 200] = 128\n }\n}\n\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input, 'input must be TypedArray or Buffer')\n\n if (head + input.length > wasm.memory.length) wasm.realloc(head + input.length)\n wasm.memory.set(input, head)\n wasm.exports.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.exports.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return wasm.memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (enc === 'hex') {\n return hexSlice(wasm.memory, this.pointer + 128, this.digestLength)\n }\n\n assert(enc.length >= this.digestLength, 'input must be TypedArray or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = wasm.memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm && wasm.buffer\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasm) return cb(new Error('WebAssembly not supported'))\n\n // backwards compat, can be removed in a new major\n var p = new Promise(function (reject, resolve) {\n wasm.onload(function (err) {\n if (err) resolve()\n else reject()\n cb(err)\n })\n })\n\n return p\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nfunction noop () {}\n\nfunction hexSlice (buf, start, len) {\n var str = ''\n for (var i = 0; i < len; i++) str += toHex(buf[start + i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input != null, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n Proto = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'\"\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({publicKey, encryptedSecretKey})\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({to, amount})\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], - "mappings": "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A,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAE,GAAAC,EAAAC,IAAA,cAAAC,IAEA,IAAIC,GAASF,GAETG,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAEnB,SAASE,GAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAI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EAAErB,GACdU,EAAEV,EAAI,IAAMyB,EAAEzB,GACdU,EAAEV,EAAI,IAAM6B,EAAE7B,GACdU,EAAEV,EAAI,IAAMiB,EAAEjB,GAElB,IAAI+F,EAAMrF,EAAE,SAAS,EAAE,EACnBsF,EAAMtF,EAAE,SAAS,EAAE,EACvB,OAAA+E,GAASM,EAAKA,CAAG,EACjBvD,GAAEwD,EAAKA,EAAKD,CAAG,EACfhE,GAAUH,EAAGoE,CAAG,EACT,CACX,CACA,SAASC,GAAuBrE,EAAGI,EAAG,CAClC,OAAO2D,GAAkB/D,EAAGI,EAAGnC,EAAE,CACrC,CACA,IAAIqG,GAAI,CACJ,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAAqBC,EAAIC,EAAInE,EAAGF,EAAG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", - "names": ["require_base64_js", "__commonJSMin", "exports", "init_esbuild_inject", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "init_esbuild_inject", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "c", "rt", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "i", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "Buffer", "init_esbuild_inject", "__esmMin", "require_browser_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "__self__", "F", "self", "irrelevant", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "error", "fetch", "init", "request", "xhr", "abortXhr", "ctx", "__export", "exports", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "token", "messages", "msg", "_code", "_reason", "opts", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "code", "error", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ws", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "O", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "b", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "i", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "e", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "b", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "i", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "e", "enqueue", "fn", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "i", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "i", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_BYTES", "MAX_UINT32", "oldBrowser", "Buffer", "crypto", "randomBytes", "size", "cb", "bytes", "generated", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_events", "__commonJSMin", "exports", "module", "init_esbuild_inject", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "i", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "require_stream_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_util", "__commonJSMin", "init_esbuild_inject", "require_buffer_list", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "deprecate", "fn", "msg", "config", "warned", "deprecated", "name", "val", "require_stream_writable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "onEndNT", "self", "value", "require_string_decoder", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_stream_readable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_esbuild_inject", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_esbuild_inject", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_hash_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "inherits", "throwIfNotStringOrBuffer", "val", "prefix", "HashBase", "blockSize", "chunk", "encoding", "callback", "error", "err", "data", "block", "offset", "i", "j", "carry", "digest", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "HashBase", "Buffer", "ARRAY16", "MD5", "M", "i", "a", "b", "c", "d", "fnF", "fnG", "fnH", "fnI", "buffer", "rotl", "x", "n", "m", "k", "s", "require_ripemd160", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "inherits", "HashBase", "ARRAY16", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "j", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "i", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "rotl", "t", "buffer", "x", "n", "a", "b", "c", "d", "e", "m", "k", "s", "require_hash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Hash", "blockSize", "finalSize", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "H", "require_sha512", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "algorithm", "Algorithm", "require_stream_browserify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Stream", "EE", "inherits", "dest", "options", "source", "ondata", "chunk", "ondrain", "onend", "onclose", "didOnEnd", "onerror", "er", "cleanup", "require_cipher_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "StringDecoder", "inherits", "CipherBase", "hashMode", "data", "inputEnc", "outputEnc", "outData", "_", "next", "err", "e", "done", "value", "enc", "fin", "out", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "MD5", "RIPEMD160", "sha", "Base", "Hash", "hash", "data", "alg", "require_legacy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Base", "ZEROS", "blocksize", "Hmac", "alg", "key", "ipad", "opad", "i", "data", "h", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MD5", "buffer", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Legacy", "Base", "Buffer", "md5", "RIPEMD160", "sha", "ZEROS", "Hmac", "alg", "key", "blocksize", "hash", "ipad", "opad", "i", "data", "h", "require_algos", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_precondition", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_ALLOC", "iterations", "keylen", "require_default_encoding", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defaultEncoding", "pVersionMajor", "require_to_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "thing", "encoding", "name", "require_sync_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "md5", "RIPEMD160", "sha", "Buffer", "checkParameters", "defaultEncoding", "toBuffer", "ZEROS", "sizes", "Hmac", "alg", "key", "saltLen", "hash", "getDigest", "blocksize", "ipad", "opad", "i", "ipad1", "data", "h", "shaFunc", "rmd160Func", "pbkdf2", "password", "salt", "iterations", "keylen", "digest", "hmac", "DK", "block1", "destPos", "hLen", "l", "T", "U", "j", "k", "require_async", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "checkParameters", "defaultEncoding", "sync", "toBuffer", "ZERO_BUF", "subtle", "toBrowser", "checks", "checkNative", "algo", "prom", "browserPbkdf2", "nextTick", "getNextTick", "password", "salt", "iterations", "length", "key", "res", "resolvePromise", "promise", "callback", "out", "e", "keylen", "digest", "resp", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "bytes", "off", "res", "value", "inL", "inR", "out", "outL", "outR", "i", "j", "num", "shift", "pc2table", "len", "r", "sTable", "b", "sb", "permuteTable", "size", "group", "str", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "require_cipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "Cipher", "options", "data", "off", "min", "i", "out", "inputOff", "outputOff", "count", "max", "buffer", "first", "last", "require_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "utils", "Cipher", "DESState", "DES", "options", "state", "shiftTable", "key", "kL", "kR", "i", "shift", "inp", "inOff", "out", "outOff", "l", "r", "buffer", "off", "value", "pad", "lStart", "rStart", "keyL", "keyR", "s", "f", "t", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "proto", "CBCState", "iv", "i", "instantiate", "Base", "CBC", "options", "keys", "key", "state", "inp", "inOff", "out", "outOff", "superProto", "require_ede", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "Cipher", "DES", "EDEState", "type", "key", "k1", "k2", "k3", "EDE", "options", "state", "inp", "inOff", "out", "outOff", "require_des", "__commonJSMin", "exports", "init_esbuild_inject", "require_browserify_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "CipherBase", "des", "inherits", "Buffer", "modes", "DES", "opts", "modeName", "mode", "type", "key", "iv", "data", "require_ecb", "__commonJSMin", "exports", "init_esbuild_inject", "self", "block", "require_buffer_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "a", "b", "length", "buffer", "i", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "self", "block", "data", "pad", "out", "require_cfb", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "xor", "encryptStart", "self", "data", "decrypt", "len", "out", "require_cfb8", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "out", "chunk", "len", "i", "require_cfb1", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "i", "len", "out", "bit", "value", "shiftIn", "buffer", "chunk", "require_ofb", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "getBlock", "self", "chunk", "Buffer", "pad", "require_incr32", "__commonJSMin", "exports", "module", "init_esbuild_inject", "incr32", "iv", "len", "item", "require_ctr", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "Buffer", "incr32", "getBlock", "self", "out", "blockSize", "chunk", "chunkNum", "start", "i", "offset", "pad", "require_modes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "modeModules", "modes", "key", "require_aes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "asUInt32Array", "buf", "len", "out", "scrubVec", "v", "i", "cryptBlock", "M", "keySchedule", "SUB_MIX", "SBOX", "nRounds", "SUB_MIX0", "SUB_MIX1", "SUB_MIX2", "SUB_MIX3", "s0", "s1", "s2", "s3", "t0", "t1", "t2", "t3", "ksRow", "round", "RCON", "G", "d", "j", "INV_SBOX", "INV_SUB_MIX", "x", "xi", "sx", "x2", "x4", "x8", "t", "AES", "key", "keyWords", "keySize", "ksRows", "k", "invKeySchedule", "ik", "ksR", "tt", "m1", "require_ghash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "ZEROES", "toArray", "buf", "fromArray", "out", "GHASH", "key", "block", "i", "Vi", "Zi", "j", "xi", "lsbVi", "chunk", "abl", "bl", "require_authCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "GHASH", "xor", "incr32", "xorTest", "a", "b", "out", "len", "i", "calcIv", "self", "iv", "ck", "ghash", "toPad", "ivBits", "tail", "StreamCipher", "mode", "key", "decrypt", "h", "chunk", "rump", "tag", "buf", "require_streamCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "StreamCipher", "mode", "key", "iv", "decrypt", "chunk", "require_evp_bytestokey", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "MD5", "EVP_BytesToKey", "password", "salt", "keyBits", "ivLen", "keyLen", "key", "iv", "tmp", "hash", "used", "keyStart", "ivStart", "length", "require_encrypter", "__commonJSMin", "exports", "init_esbuild_inject", "MODES", "AuthCipher", "Buffer", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Cipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "PADDING", "setTo", "len", "padBuff", "i", "createCipheriv", "suite", "password", "config", "createCipher", "keys", "require_decrypter", "__commonJSMin", "exports", "init_esbuild_inject", "AuthCipher", "Buffer", "MODES", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Decipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "unpad", "setTo", "autoPadding", "last", "padded", "i", "createDecipheriv", "suite", "password", "config", "createDecipher", "keys", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "ciphers", "deciphers", "modes", "getCiphers", "require_modes", "__commonJSMin", "exports", "init_esbuild_inject", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "DES", "aes", "aesModes", "desModes", "ebtk", "createCipher", "suite", "password", "keyLen", "ivLen", "keys", "createCipheriv", "createDecipher", "createDecipheriv", "key", "iv", "getCiphers", "require_buffer", "__commonJSMin", "init_esbuild_inject", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex", "str", "end", "r", "len", "c", "parseBase", "mul", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_crypto", "__commonJSMin", "init_esbuild_inject", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "arr", "crypto", "require_mr", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bn", "brorand", "MillerRabin", "rand", "n", "len", "min_bytes", "a", "start", "stop", "size", "k", "cb", "red", "rone", "n1", "s", "d", "rn1", "prime", "x", "i", "g", "require_generatePrime", "__commonJSMin", "exports", "module", "init_esbuild_inject", "randomBytes", "findPrime", "simpleSieve", "fermatTest", "BN", "TWENTYFOUR", "MillerRabin", "millerRabin", "ONE", "TWO", "FIVE", "SIXTEEN", "EIGHT", "TEN", "THREE", "SEVEN", "ELEVEN", "FOUR", "TWELVE", "primes", "_getPrimes", "limit", "res", "i", "k", "sqrt", "j", "p", "red", "bits", "gen", "num", "n2", "require_dh", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "MillerRabin", "millerRabin", "TWENTYFOUR", "ELEVEN", "TEN", "THREE", "SEVEN", "primes", "randomBytes", "DH", "setPublicKey", "pub", "enc", "Buffer", "setPrivateKey", "priv", "primeCache", "checkPrime", "prime", "generator", "gen", "hex", "error", "rem", "malleable", "other", "secret", "out", "front", "formatReturnValue", "bn", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "generatePrime", "primes", "DH", "getDiffieHellman", "mod", "prime", "Buffer", "gen", "ENCODINGS", "createDiffieHellman", "enc", "generator", "genc", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_browserify_rsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "randomBytes", "blind", "priv", "r", "getr", "blinder", "len", "crt", "msg", "blinds", "blinded", "c1", "c2", "qinv", "p", "q", "m1", "m2", "h", "Buffer", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "c", "hi", "lo", "zero2", "word", "toHex", "i", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "m", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "r", "i", "len", "bytes", "k", "res", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "i", "b", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "i", "b", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "i", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "i", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_safer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_reporter", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "options", "obj", "ReporterError", "state", "data", "key", "index", "value", "prev", "now", "msg", "err", "inherited", "elem", "result", "path", "e", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "Buffer", "DecoderBuffer", "base", "options", "data", "save", "res", "fail", "bytes", "EncoderBuffer", "value", "reporter", "item", "out", "offset", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Reporter", "EncoderBuffer", "DecoderBuffer", "assert", "tags", "methods", "overrided", "Node", "enc", "parent", "name", "state", "stateProps", "cstate", "prop", "res", "method", "clone", "body", "child", "args", "children", "arg", "key", "value", "tag", "item", "val", "num", "newKey", "obj", "input", "options", "result", "present", "prevKey", "save", "prevObj", "explicit", "start", "data", "entity", "match", "node", "reporter", "content", "primitive", "cls", "str", "require_der", "__commonJSMin", "exports", "init_esbuild_inject", "reverse", "map", "res", "key", "value", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Node", "der", "DEREncoder", "entity", "DERNode", "data", "reporter", "parent", "tag", "primitive", "cls", "content", "encodedTag", "encodeTag", "header", "lenOctets", "i", "j", "str", "buf", "id", "values", "relative", "size", "ident", "objid", "offset", "two", "num", "time", "date", "numArray", "out", "value", "obj", "dataBuffer", "state", "res", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "DEREncoder", "PEMEncoder", "entity", "data", "options", "p", "out", "i", "require_encoders", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "bignum", "DecoderBuffer", "Node", "der", "DERDecoder", "entity", "DERNode", "data", "options", "parent", "buffer", "tag", "any", "state", "decodedTag", "derDecodeTag", "len", "derDecodeLen", "res", "fail", "decoder", "result", "possibleEnd", "unused", "raw", "str", "i", "numstr", "printstr", "values", "relative", "identifiers", "ident", "subident", "first", "second", "tmp", "year", "mon", "day", "hour", "min", "sec", "obj", "buf", "cls", "primitive", "oct", "tagStr", "num", "j", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "DERDecoder", "PEMDecoder", "entity", "data", "options", "lines", "label", "re", "start", "end", "i", "match", "base64", "input", "require_decoders", "__commonJSMin", "exports", "init_esbuild_inject", "decoders", "require_api", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "decoders", "inherits", "api", "name", "body", "Entity", "Base", "Generated", "entity", "enc", "data", "options", "reporter", "require_base", "__commonJSMin", "exports", "init_esbuild_inject", "base", "require_constants", "__commonJSMin", "exports", "init_esbuild_inject", "constants", "map", "res", "key", "value", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "require_certificate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn", "Time", "AttributeTypeValue", "AlgorithmIdentifier", "SubjectPublicKeyInfo", "RelativeDistinguishedName", "RDNSequence", "Name", "Validity", "Extension", "TBSCertificate", "X509Certificate", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "RSAPrivateKey", "RSAPublicKey", "PublicKey", "AlgorithmIdentifier", "PrivateKeyInfo", "EncryptedPrivateKeyInfo", "DSAPrivateKey", "ECPrivateKey", "ECParameters", "require_fixProc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "findProc", "startRegex", "fullRegex", "evp", "ciphers", "Buffer", "okey", "password", "key", "match", "decrypted", "suite", "iv", "cipherText", "cipherKey", "out", "cipher", "match2", "tag", "require_parse_asn1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn1", "aesid", "fixProc", "ciphers", "compat", "Buffer", "parseKeys", "buffer", "password", "stripped", "type", "data", "subtype", "ndata", "decrypt", "salt", "iters", "algo", "iv", "cipherText", "keylen", "key", "cipher", "out", "require_sign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHmac", "crt", "EC", "BN", "parseKeys", "curves", "sign", "hash", "key", "hashType", "signType", "tag", "priv", "ecSign", "dsaSign", "len", "pad", "i", "out", "curveId", "curve", "algo", "x", "p", "q", "g", "r", "k", "H", "bits2int", "s", "kv", "getKey", "makeKey", "makeR", "toDER", "total", "res", "zeros", "hlen", "hbits", "bits2octets", "v", "obits", "bits", "shift", "t", "require_verify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "BN", "EC", "parseKeys", "curves", "verify", "sig", "hash", "key", "signType", "tag", "pub", "ecVerify", "dsaVerify", "len", "pad", "padNum", "i", "red", "out", "curveId", "curve", "pubkey", "p", "q", "g", "y", "unpacked", "s", "r", "checkValue", "montp", "w", "v", "b", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHash", "stream", "inherits", "sign", "verify", "algorithms", "key", "Sign", "algorithm", "data", "_", "done", "enc", "hash", "sig", "Verify", "createSign", "createVerify", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "elliptic", "BN", "curve", "ECDH", "aliases", "enc", "format", "other", "inenc", "Buffer", "otherPub", "out", "formatReturnValue", "key", "pub", "priv", "_priv", "bn", "len", "buf", "zeros", "require_mgf", "__commonJSMin", "exports", "module", "init_esbuild_inject", "createHash", "Buffer", "seed", "len", "t", "c", "i2ops", "out", "require_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "a", "b", "len", "i", "require_withPublic", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "Buffer", "withPublic", "paddedMsg", "key", "require_publicEncrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "randomBytes", "createHash", "mgf", "xor", "BN", "withPublic", "crt", "Buffer", "publicKey", "msg", "reverse", "padding", "key", "paddedMsg", "oaep", "pkcs1", "k", "mLen", "iHash", "hLen", "hLen2", "ps", "dblen", "seed", "maskedDb", "maskedSeed", "nonZero", "len", "out", "i", "cache", "cur", "num", "require_privateDecrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "mgf", "xor", "BN", "crt", "createHash", "withPublic", "Buffer", "privateKey", "enc", "reverse", "padding", "key", "k", "msg", "zBuffer", "oaep", "pkcs1", "iHash", "hLen", "maskedSeed", "maskedDb", "seed", "db", "compare", "i", "p1", "status", "ps", "a", "b", "dif", "len", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "key", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "oldBrowser", "safeBuffer", "randombytes", "Buffer", "kBufferMaxLength", "crypto", "kMaxUint32", "assertOffset", "offset", "length", "assertSize", "size", "randomFill", "randomFillSync", "buf", "cb", "actualFill", "ourBuf", "uint", "err", "bytes", "require_crypto_browserify", "__commonJSMin", "exports", "init_esbuild_inject", "algos", "algoKeys", "hashes", "p", "aes", "dh", "sign", "publicEncrypt", "rf", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "notEqual", "notOk", "equal", "a", "b", "m", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "loadWebAssembly", "opts", "imp", "wasm", "toUint8Array", "ready", "mod", "realloc", "onload", "size", "cb", "setup", "w", "s", "charCodeAt", "c", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "wasm", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "input", "enc", "hexSlice", "i", "cb", "noop", "p", "reject", "resolve", "err", "buf", "start", "len", "str", "toHex", "n", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "d", "crypto_verify_32", "set25519", "r", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "n", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "b", "m", "par25519", "vn", "x", "xi", "y", "yi", "d", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "libjs_exports", "__export", "crypto_exports", "utils_exports", "Archethic", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "i", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_crypto", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "pseudoRandomKey", "cipher", "decipher", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_crypto", "import_base64url", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "v", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "t", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] + "sources": ["../node_modules/base64-js/index.js", "../node_modules/ieee754/index.js", "../node_modules/buffer/index.js", "../esbuild.inject.js", "../node_modules/cross-fetch/dist/browser-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/isomorphic-ws/browser.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/safe-buffer/index.js", "../node_modules/randombytes/browser.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/events/events.js", "../node_modules/readable-stream/lib/internal/streams/stream-browser.js", "(disabled):util", "../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../node_modules/readable-stream/lib/internal/streams/destroy.js", "../node_modules/readable-stream/errors-browser.js", "../node_modules/readable-stream/lib/internal/streams/state.js", "../node_modules/util-deprecate/browser.js", "../node_modules/readable-stream/lib/_stream_writable.js", "../node_modules/readable-stream/lib/_stream_duplex.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../node_modules/readable-stream/lib/internal/streams/from-browser.js", "../node_modules/readable-stream/lib/_stream_readable.js", "../node_modules/readable-stream/lib/_stream_transform.js", "../node_modules/readable-stream/lib/_stream_passthrough.js", "../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../node_modules/readable-stream/readable-browser.js", "../node_modules/hash-base/index.js", "../node_modules/md5.js/index.js", "../node_modules/ripemd160/index.js", "../node_modules/sha.js/hash.js", "../node_modules/sha.js/sha.js", "../node_modules/sha.js/sha1.js", "../node_modules/sha.js/sha256.js", "../node_modules/sha.js/sha224.js", "../node_modules/sha.js/sha512.js", "../node_modules/sha.js/sha384.js", "../node_modules/sha.js/index.js", "../node_modules/stream-browserify/index.js", "../node_modules/cipher-base/index.js", "../node_modules/create-hash/browser.js", "../node_modules/create-hmac/legacy.js", "../node_modules/create-hash/md5.js", "../node_modules/create-hmac/browser.js", "../node_modules/browserify-sign/algos.js", "../node_modules/pbkdf2/lib/precondition.js", "../node_modules/pbkdf2/lib/default-encoding.js", "../node_modules/pbkdf2/lib/to-buffer.js", "../node_modules/pbkdf2/lib/sync-browser.js", "../node_modules/pbkdf2/lib/async.js", "../node_modules/pbkdf2/browser.js", "../node_modules/des.js/lib/des/utils.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/des.js/lib/des/cipher.js", "../node_modules/des.js/lib/des/des.js", "../node_modules/des.js/lib/des/cbc.js", "../node_modules/des.js/lib/des/ede.js", "../node_modules/des.js/lib/des.js", "../node_modules/browserify-des/index.js", "../node_modules/browserify-aes/modes/ecb.js", "../node_modules/buffer-xor/index.js", "../node_modules/browserify-aes/modes/cbc.js", "../node_modules/browserify-aes/modes/cfb.js", "../node_modules/browserify-aes/modes/cfb8.js", "../node_modules/browserify-aes/modes/cfb1.js", "../node_modules/browserify-aes/modes/ofb.js", "../node_modules/browserify-aes/incr32.js", "../node_modules/browserify-aes/modes/ctr.js", "../node_modules/browserify-aes/modes/index.js", "../node_modules/browserify-aes/aes.js", "../node_modules/browserify-aes/ghash.js", "../node_modules/browserify-aes/authCipher.js", "../node_modules/browserify-aes/streamCipher.js", "../node_modules/evp_bytestokey/index.js", "../node_modules/browserify-aes/encrypter.js", "../node_modules/browserify-aes/decrypter.js", "../node_modules/browserify-aes/browser.js", "../node_modules/browserify-des/modes.js", "../node_modules/browserify-cipher/browser.js", "../node_modules/buffer/index.js", "../node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js", "../node_modules/miller-rabin/node_modules/bn.js/lib/bn.js", "(disabled):crypto", "../node_modules/brorand/index.js", "../node_modules/miller-rabin/lib/mr.js", "../node_modules/diffie-hellman/lib/generatePrime.js", "../node_modules/diffie-hellman/lib/dh.js", "../node_modules/diffie-hellman/browser.js", "../node_modules/bn.js/lib/bn.js", "../node_modules/browserify-rsa/index.js", "../node_modules/elliptic/node_modules/bn.js/lib/bn.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/asn1.js/node_modules/bn.js/lib/bn.js", "../node_modules/safer-buffer/safer.js", "../node_modules/asn1.js/lib/asn1/base/reporter.js", "../node_modules/asn1.js/lib/asn1/base/buffer.js", "../node_modules/asn1.js/lib/asn1/base/node.js", "../node_modules/asn1.js/lib/asn1/constants/der.js", "../node_modules/asn1.js/lib/asn1/encoders/der.js", "../node_modules/asn1.js/lib/asn1/encoders/pem.js", "../node_modules/asn1.js/lib/asn1/encoders/index.js", "../node_modules/asn1.js/lib/asn1/decoders/der.js", "../node_modules/asn1.js/lib/asn1/decoders/pem.js", "../node_modules/asn1.js/lib/asn1/decoders/index.js", "../node_modules/asn1.js/lib/asn1/api.js", "../node_modules/asn1.js/lib/asn1/base/index.js", "../node_modules/asn1.js/lib/asn1/constants/index.js", "../node_modules/asn1.js/lib/asn1.js", "../node_modules/parse-asn1/certificate.js", "../node_modules/parse-asn1/asn1.js", "../node_modules/parse-asn1/fixProc.js", "../node_modules/parse-asn1/index.js", "../node_modules/browserify-sign/browser/sign.js", "../node_modules/browserify-sign/browser/verify.js", "../node_modules/browserify-sign/browser/index.js", "../node_modules/create-ecdh/node_modules/bn.js/lib/bn.js", "../node_modules/create-ecdh/browser.js", "../node_modules/public-encrypt/mgf.js", "../node_modules/public-encrypt/xor.js", "../node_modules/public-encrypt/node_modules/bn.js/lib/bn.js", "../node_modules/public-encrypt/withPublic.js", "../node_modules/public-encrypt/publicEncrypt.js", "../node_modules/public-encrypt/privateDecrypt.js", "../node_modules/public-encrypt/browser.js", "../node_modules/randomfill/browser.js", "../node_modules/crypto-browserify/index.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/b4a/lib/ascii.js", "../node_modules/b4a/lib/base64.js", "../node_modules/b4a/lib/hex.js", "../node_modules/b4a/lib/utf8.js", "../node_modules/b4a/lib/utf16le.js", "../node_modules/b4a/browser.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], + "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "export let Buffer = require(\"buffer\").Buffer", "var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || global\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n return this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n return this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n return req\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => callback && callback(null)\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n return req\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.reqs = new Set()\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(code, reason, wasClean){\n this.close(code, reason, wasClean)\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry(1005, \"timeout\", false)\n }\n\n isActive(){ return this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting }\n\n poll(){\n this.ajax(\"GET\", null, () => this.ontimeout(), resp => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => this.onmessage({data: msg}), 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen({})\n this.poll()\n break\n case 403:\n this.onerror(403)\n this.close(1008, \"forbidden\", false)\n break\n case 0:\n case 500:\n this.onerror(500)\n this.closeAndRetry(1011, \"internal server error\", 500)\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n this.ajax(\"POST\", body, () => this.onerror(\"timeout\"), resp => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry(1011, \"internal server error\", false)\n }\n })\n }\n\n close(code, reason, wasClean){\n for(let req of this.reqs){ req.abort() }\n this.readyState = SOCKET_STATES.closed\n let opts = Object.assign({code: 1000, reason: undefined, wasClean: true}, {code, reason, wasClean})\n if(typeof(CloseEvent) !== \"undefined\"){\n this.onclose(new CloseEvent(\"close\", opts))\n } else {\n this.onclose(opts)\n }\n }\n\n ajax(method, body, onCallerTimeout, callback){\n let req\n let ontimeout = () => {\n this.reqs.delete(req)\n onCallerTimeout()\n }\n req = Ajax.request(method, this.endpointURL(), \"application/json\", body, this.timeout, ontimeout, resp => {\n this.reqs.delete(req)\n if(this.isActive()){ callback(resp) }\n })\n this.reqs.add(req)\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millisec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millisec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimeoutTimer = null\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Returns the LongPoll transport reference\n */\n getLongPollTransport(){ return LongPoll }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.sendBuffer = []\n if(this.conn){\n this.conn.close()\n this.conn = null\n }\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualified socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n\n this.connectClock++\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * Pings the server and invokes the callback with the RTT in milliseconds\n * @param {Function} callback\n *\n * Returns true if the ping was pushed or false if unable to be pushed.\n */\n ping(callback){\n if(!this.isConnected()){ return false }\n let ref = this.makeRef()\n let startTime = Date.now()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: ref})\n let onMsgRef = this.onMessage(msg => {\n if(msg.ref === ref){\n this.off([onMsgRef])\n callback(Date.now() - startTime)\n }\n })\n return true\n }\n\n /**\n * @private\n */\n\n clearHeartbeats(){\n clearTimeout(this.heartbeatTimer)\n clearTimeout(this.heartbeatTimeoutTimer)\n }\n\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.triggerChanError()\n this.closeWasClean = false\n this.teardown(() => this.reconnectTimer.scheduleTimeout(), WS_CLOSE_NORMAL, \"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n this.clearHeartbeats()\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onopen = function (){ } // noop\n this.conn.onerror = function (){ } // noop\n this.conn.onmessage = function (){ } // noop\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n this.clearHeartbeats()\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimeoutTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n this.clearHeartbeats()\n this.pendingHeartbeatRef = null\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}", "// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", "module.exports = require('events').EventEmitter;\n", "", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();", "'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;", "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n", "var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n", "var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n", "var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n", "var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n", "var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n", "'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n", "var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n", "module.exports = require('./browser/algorithms.json')\n", "var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n", "var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n", "var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n", "var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n", "exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n", "'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\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\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\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", "'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", "var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n", "exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n", "var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n", "var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n", "var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n", "// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n", "var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho V\u00E4h\u00E4-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\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", "var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n", "var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n", "var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n", "var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\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", "var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n", "var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n", "'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n", "'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n", "'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n", "'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n", "'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n", "'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n", "'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n", "'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n", "// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n", "// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n", "// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n", "var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n", "var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n", "var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n", "module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n", "var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n", "var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n", "exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n", "'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n", "'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "module.exports = assert\n\nclass AssertionError extends Error {}\nAssertionError.prototype.name = 'AssertionError'\n\n/**\n * Minimal assert function\n * @param {any} t Value to check if falsy\n * @param {string=} m Optional assertion error message\n * @throws {AssertionError}\n */\nfunction assert (t, m) {\n if (!t) {\n var err = new AssertionError(m)\n if (Error.captureStackTrace) Error.captureStackTrace(err, assert)\n throw err\n }\n}\n", "function byteLength (string) {\n return string.length\n}\n\nfunction toString (buffer) {\n const len = buffer.byteLength\n\n let result = ''\n\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buffer[i])\n }\n\n return result\n}\n\nfunction write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n for (let i = 0; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i)\n }\n\n return len\n}\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n", "const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\nconst codes = new Uint8Array(256)\n\nfor (let i = 0; i < alphabet.length; i++) {\n codes[alphabet.charCodeAt(i)] = i\n}\n\ncodes[/* - */ 0x2d] = 62\ncodes[/* _ */ 0x5f] = 63\n\nfunction byteLength (string) {\n let len = string.length\n\n if (string.charCodeAt(len - 1) === 0x3d) len--\n if (len > 1 && string.charCodeAt(len - 1) === 0x3d) len--\n\n return (len * 3) >>> 2\n}\n\nfunction toString (buffer) {\n const len = buffer.byteLength\n\n let result = ''\n\n for (let i = 0; i < len; i += 3) {\n result += (\n alphabet[buffer[i] >> 2] +\n alphabet[((buffer[i] & 3) << 4) | (buffer[i + 1] >> 4)] +\n alphabet[((buffer[i + 1] & 15) << 2) | (buffer[i + 2] >> 6)] +\n alphabet[buffer[i + 2] & 63]\n )\n }\n\n if (len % 3 === 2) {\n result = result.substring(0, result.length - 1) + '='\n } else if (len % 3 === 1) {\n result = result.substring(0, result.length - 2) + '=='\n }\n\n return result\n};\n\nfunction write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n for (let i = 0, j = 0; i < len; i += 4) {\n const a = codes[string.charCodeAt(i)]\n const b = codes[string.charCodeAt(i + 1)]\n const c = codes[string.charCodeAt(i + 2)]\n const d = codes[string.charCodeAt(i + 3)]\n\n buffer[j++] = (a << 2) | (b >> 4)\n buffer[j++] = ((b & 15) << 4) | (c >> 2)\n buffer[j++] = ((c & 3) << 6) | (d & 63)\n }\n\n return len\n};\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n", "function byteLength (string) {\n return string.length >>> 1\n}\n\nfunction toString (buffer) {\n const len = buffer.byteLength\n\n buffer = new DataView(buffer.buffer, buffer.byteOffset, len)\n\n let result = ''\n let i = 0\n\n for (let n = len - (len % 4); i < n; i += 4) {\n result += buffer.getUint32(i).toString(16).padStart(8, '0')\n }\n\n for (; i < len; i++) {\n result += buffer.getUint8(i).toString(16).padStart(2, '0')\n }\n\n return result\n}\n\nfunction write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n for (let i = 0; i < len; i++) {\n const a = hexValue(string.charCodeAt(i * 2))\n const b = hexValue(string.charCodeAt(i * 2 + 1))\n\n if (a === undefined || b === undefined) {\n return buffer.subarray(0, i)\n }\n\n buffer[offset + i] = (a << 4) | b\n }\n\n return len\n}\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n\nfunction hexValue (char) {\n if (char >= 0x30 && char <= 0x39) return char - 0x30\n if (char >= 0x41 && char <= 0x46) return char - 0x41 + 10\n if (char >= 0x61 && char <= 0x66) return char - 0x61 + 10\n}\n", "function byteLength (string) {\n let length = 0\n\n for (let i = 0, n = string.length; i < n; i++) {\n const code = string.charCodeAt(i)\n\n if (code >= 0xd800 && code <= 0xdbff && i + 1 < n) {\n const code = string.charCodeAt(i + 1)\n\n if (code >= 0xdc00 && code <= 0xdfff) {\n length += 4\n i++\n continue\n }\n }\n\n if (code <= 0x7f) length += 1\n else if (code <= 0x7ff) length += 2\n else length += 3\n }\n\n return length\n}\n\nlet toString\n\nif (typeof TextDecoder !== 'undefined') {\n const decoder = new TextDecoder()\n\n toString = function toString (buffer) {\n return decoder.decode(buffer)\n }\n} else {\n toString = function toString (buffer) {\n const len = buffer.byteLength\n\n let output = ''\n let i = 0\n\n while (i < len) {\n let byte = buffer[i]\n\n if (byte <= 0x7f) {\n output += String.fromCharCode(byte)\n i++\n continue\n }\n\n let bytesNeeded = 0\n let codePoint = 0\n\n if (byte <= 0xdf) {\n bytesNeeded = 1\n codePoint = byte & 0x1f\n } else if (byte <= 0xef) {\n bytesNeeded = 2\n codePoint = byte & 0x0f\n } else if (byte <= 0xf4) {\n bytesNeeded = 3\n codePoint = byte & 0x07\n }\n\n if (len - i - bytesNeeded > 0) {\n let k = 0\n\n while (k < bytesNeeded) {\n byte = buffer[i + k + 1]\n codePoint = (codePoint << 6) | (byte & 0x3f)\n k += 1\n }\n } else {\n codePoint = 0xfffd\n bytesNeeded = len - i\n }\n\n output += String.fromCodePoint(codePoint)\n i += bytesNeeded + 1\n }\n\n return output\n }\n}\n\nlet write\n\nif (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder()\n\n write = function write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n encoder.encodeInto(string, buffer.subarray(offset, offset + len))\n return len\n }\n} else {\n write = function write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n buffer = buffer.subarray(offset, offset + len)\n\n let i = 0\n let j = 0\n\n while (i < string.length) {\n const code = string.codePointAt(i)\n\n if (code <= 0x7f) {\n buffer[j++] = code\n i++\n continue\n }\n\n let count = 0\n let bits = 0\n\n if (code <= 0x7ff) {\n count = 6\n bits = 0xc0\n } else if (code <= 0xffff) {\n count = 12\n bits = 0xe0\n } else if (code <= 0x1fffff) {\n count = 18\n bits = 0xf0\n }\n\n buffer[j++] = bits | (code >> count)\n count -= 6\n\n while (count >= 0) {\n buffer[j++] = 0x80 | ((code >> count) & 0x3f)\n count -= 6\n }\n\n i += code >= 0x10000 ? 2 : 1\n }\n\n return len\n }\n}\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n", "function byteLength (string) {\n return string.length * 2\n}\n\nfunction toString (buffer) {\n const len = buffer.byteLength\n\n let result = ''\n\n for (let i = 0; i < len - 1; i += 2) {\n result += String.fromCharCode(buffer[i] + (buffer[i + 1] * 256))\n }\n\n return result\n}\n\nfunction write (buffer, string, offset = 0, length = byteLength(string)) {\n const len = Math.min(length, buffer.byteLength - offset)\n\n let units = len\n\n for (let i = 0; i < string.length; ++i) {\n if ((units -= 2) < 0) break\n\n const c = string.charCodeAt(i)\n const hi = c >> 8\n const lo = c % 256\n\n buffer[offset + i * 2] = lo\n buffer[offset + i * 2 + 1] = hi\n }\n\n return len\n}\n\nmodule.exports = {\n byteLength,\n toString,\n write\n}\n", "const ascii = require('./lib/ascii')\nconst base64 = require('./lib/base64')\nconst hex = require('./lib/hex')\nconst utf8 = require('./lib/utf8')\nconst utf16le = require('./lib/utf16le')\n\nconst LE = new Uint8Array(Uint16Array.of(0xff).buffer)[0] === 0xff\n\nfunction codecFor (encoding) {\n switch (encoding) {\n case 'ascii':\n return ascii\n case 'base64':\n return base64\n case 'hex':\n return hex\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16le\n default:\n throw new Error(`Unknown encoding: ${encoding}`)\n }\n}\n\nfunction isBuffer (value) {\n return value instanceof Uint8Array\n}\n\nfunction isEncoding (encoding) {\n try {\n codecFor(encoding)\n return true\n } catch {\n return false\n }\n}\n\nfunction alloc (size, fill, encoding) {\n const buffer = new Uint8Array(size)\n if (fill !== undefined) exports.fill(buffer, fill, 0, buffer.byteLength, encoding)\n return buffer\n}\n\nfunction allocUnsafe (size) {\n return new Uint8Array(size)\n}\n\nfunction allocUnsafeSlow (size) {\n return new Uint8Array(size)\n}\n\nfunction byteLength (string, encoding) {\n return codecFor(encoding).byteLength(string)\n}\n\nfunction compare (a, b) {\n if (a === b) return 0\n\n const len = Math.min(a.byteLength, b.byteLength)\n\n a = new DataView(a.buffer, a.byteOffset, a.byteLength)\n b = new DataView(b.buffer, b.byteOffset, b.byteLength)\n\n let i = 0\n\n for (let n = len - (len % 4); i < n; i += 4) {\n const x = a.getUint32(i, LE)\n const y = b.getUint32(i, LE)\n if (x !== y) break\n }\n\n for (; i < len; i++) {\n const x = a.getUint8(i)\n const y = b.getUint8(i)\n if (x < y) return -1\n if (x > y) return 1\n }\n\n return a.byteLength > b.byteLength ? 1 : a.byteLength < b.byteLength ? -1 : 0\n}\n\nfunction concat (buffers, totalLength) {\n if (totalLength === undefined) {\n totalLength = buffers.reduce((len, buffer) => len + buffer.byteLength, 0)\n }\n\n const result = new Uint8Array(totalLength)\n\n buffers.reduce(\n (offset, buffer) => {\n result.set(buffer, offset)\n return offset + buffer.byteLength\n },\n 0\n )\n\n return result\n}\n\nfunction copy (source, target, targetStart = 0, start = 0, end = source.byteLength) {\n if (end > 0 && end < start) return 0\n if (end === start) return 0\n if (source.byteLength === 0 || target.byteLength === 0) return 0\n\n if (targetStart < 0) throw new RangeError('targetStart is out of range')\n if (start < 0 || start >= source.byteLength) throw new RangeError('sourceStart is out of range')\n if (end < 0) throw new RangeError('sourceEnd is out of range')\n\n if (targetStart >= target.byteLength) targetStart = target.byteLength\n if (end > source.byteLength) end = source.byteLength\n if (target.byteLength - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (source === target) {\n target.copyWithin(targetStart, start, end)\n } else {\n target.set(source.subarray(start, end), targetStart)\n }\n\n return len\n}\n\nfunction equals (a, b) {\n if (a === b) return true\n if (a.byteLength !== b.byteLength) return false\n\n const len = a.byteLength\n\n a = new DataView(a.buffer, a.byteOffset, a.byteLength)\n b = new DataView(b.buffer, b.byteOffset, b.byteLength)\n\n let i = 0\n\n for (let n = len - (len % 4); i < n; i += 4) {\n if (a.getUint32(i, LE) !== b.getUint32(i, LE)) return false\n }\n\n for (; i < len; i++) {\n if (a.getUint8(i) !== b.getUint8(i)) return false\n }\n\n return true\n}\n\nfunction fill (buffer, value, offset, end, encoding) {\n if (typeof value === 'string') {\n // fill(buffer, string, encoding)\n if (typeof offset === 'string') {\n encoding = offset\n offset = 0\n end = buffer.byteLength\n\n // fill(buffer, string, offset, encoding)\n } else if (typeof end === 'string') {\n encoding = end\n end = buffer.byteLength\n }\n } else if (typeof val === 'number') {\n value = value & 0xff\n } else if (typeof val === 'boolean') {\n value = +value\n }\n\n if (offset < 0 || buffer.byteLength < offset || buffer.byteLength < end) {\n throw new RangeError('Out of range index')\n }\n\n if (offset === undefined) offset = 0\n if (end === undefined) end = buffer.byteLength\n\n if (end <= offset) return buffer\n\n if (!value) value = 0\n\n if (typeof value === 'number') {\n for (let i = offset; i < end; ++i) {\n buffer[i] = value\n }\n } else {\n value = isBuffer(value) ? value : from(value, encoding)\n\n const len = value.byteLength\n\n for (let i = 0; i < end - offset; ++i) {\n buffer[i + offset] = value[i % len]\n }\n }\n\n return buffer\n}\n\nfunction from (value, encodingOrOffset, length) {\n // from(string, encoding)\n if (typeof value === 'string') return fromString(value, encodingOrOffset)\n\n // from(array)\n if (Array.isArray(value)) return fromArray(value)\n\n // from(buffer)\n if (ArrayBuffer.isView(value)) return fromBuffer(value)\n\n // from(arrayBuffer[, byteOffset[, length]])\n return fromArrayBuffer(value, encodingOrOffset, length)\n}\n\nfunction fromString (string, encoding) {\n const codec = codecFor(encoding)\n const buffer = new Uint8Array(codec.byteLength(string))\n codec.write(buffer, string, 0, buffer.byteLength)\n return buffer\n}\n\nfunction fromArray (array) {\n const buffer = new Uint8Array(array.length)\n buffer.set(array)\n return buffer\n}\n\nfunction fromBuffer (buffer) {\n const copy = new Uint8Array(buffer.byteLength)\n copy.set(buffer)\n return copy\n}\n\nfunction fromArrayBuffer (arrayBuffer, byteOffset, length) {\n return new Uint8Array(arrayBuffer, byteOffset, length)\n}\n\nfunction includes (buffer, value, byteOffset, encoding) {\n return indexOf(buffer, value, byteOffset, encoding) !== -1\n}\n\nfunction bidirectionalIndexOf (buffer, value, byteOffset, encoding, first) {\n if (buffer.byteLength === 0) return -1\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset === undefined) {\n byteOffset = first ? 0 : (buffer.length - 1)\n } else if (byteOffset < 0) {\n byteOffset += buffer.byteLength\n }\n\n if (byteOffset >= buffer.byteLength) {\n if (first) return -1\n else byteOffset = buffer.byteLength - 1\n } else if (byteOffset < 0) {\n if (first) byteOffset = 0\n else return -1\n }\n\n if (typeof value === 'string') {\n value = from(value, encoding)\n } else if (typeof value === 'number') {\n value = value & 0xff\n\n if (first) {\n return buffer.indexOf(value, byteOffset)\n } else {\n return buffer.lastIndexOf(value, byteOffset)\n }\n }\n\n if (value.byteLength === 0) return -1\n\n if (first) {\n let foundIndex = -1\n\n for (let i = byteOffset; i < buffer.byteLength; i++) {\n if (buffer[i] === value[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === value.byteLength) return foundIndex\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + value.byteLength > buffer.byteLength) {\n byteOffset = buffer.byteLength - value.byteLength\n }\n\n for (let i = byteOffset; i >= 0; i--) {\n let found = true\n\n for (let j = 0; j < value.byteLength; j++) {\n if (buffer[i + j] !== value[j]) {\n found = false\n break\n }\n }\n\n if (found) return i\n }\n }\n\n return -1\n}\n\nfunction indexOf (buffer, value, byteOffset, encoding) {\n return bidirectionalIndexOf(buffer, value, byteOffset, encoding, true /* first */)\n}\n\nfunction lastIndexOf (buffer, value, byteOffset, encoding) {\n return bidirectionalIndexOf(buffer, value, byteOffset, encoding, false /* last */)\n}\n\nfunction swap (buffer, n, m) {\n const i = buffer[n]\n buffer[n] = buffer[m]\n buffer[m] = i\n}\n\nfunction swap16 (buffer) {\n const len = buffer.byteLength\n\n if (len % 2 !== 0) throw new RangeError('Buffer size must be a multiple of 16-bits')\n\n for (let i = 0; i < len; i += 2) swap(buffer, i, i + 1)\n\n return buffer\n}\n\nfunction swap32 (buffer) {\n const len = buffer.byteLength\n\n if (len % 4 !== 0) throw new RangeError('Buffer size must be a multiple of 32-bits')\n\n for (let i = 0; i < len; i += 4) {\n swap(buffer, i, i + 3)\n swap(buffer, i + 1, i + 2)\n }\n\n return buffer\n}\n\nfunction swap64 (buffer) {\n const len = buffer.byteLength\n\n if (len % 8 !== 0) throw new RangeError('Buffer size must be a multiple of 64-bits')\n\n for (let i = 0; i < len; i += 8) {\n swap(buffer, i, i + 7)\n swap(buffer, i + 1, i + 6)\n swap(buffer, i + 2, i + 5)\n swap(buffer, i + 3, i + 4)\n }\n\n return buffer\n}\n\nfunction toBuffer (buffer) {\n return buffer\n}\n\nfunction toString (buffer, encoding, start = 0, end = buffer.byteLength) {\n const len = buffer.byteLength\n\n if (start >= len) return ''\n if (end <= start) return ''\n if (start < 0) start = 0\n if (end > len) end = len\n\n if (start !== 0 || end < len) buffer = buffer.subarray(start, end)\n\n return codecFor(encoding).toString(buffer)\n}\n\nfunction write (buffer, string, offset, length, encoding) {\n // write(buffer, string)\n if (offset === undefined) {\n encoding = 'utf8'\n\n // write(buffer, string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n offset = undefined\n\n // write(buffer, string, offset, encoding)\n } else if (encoding === undefined && typeof length === 'string') {\n encoding = length\n length = undefined\n }\n\n return codecFor(encoding).write(buffer, string, offset, length)\n}\n\nfunction writeDoubleLE (buffer, value, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n view.setFloat64(offset, value, true)\n\n return offset + 8\n}\n\nfunction writeFloatLE (buffer, value, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n view.setFloat32(offset, value, true)\n\n return offset + 4\n}\n\nfunction writeUInt32LE (buffer, value, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n view.setUint32(offset, value, true)\n\n return offset + 4\n}\n\nfunction writeInt32LE (buffer, value, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n view.setInt32(offset, value, true)\n\n return offset + 4\n}\n\nfunction readDoubleLE (buffer, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\n return view.getFloat64(offset, true)\n}\n\nfunction readFloatLE (buffer, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\n return view.getFloat32(offset, true)\n}\n\nfunction readUInt32LE (buffer, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\n return view.getUint32(offset, true)\n}\n\nfunction readInt32LE (buffer, offset) {\n if (offset === undefined) offset = 0\n\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\n return view.getInt32(offset, true)\n}\n\nmodule.exports = exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n writeDoubleLE,\n writeFloatLE,\n writeUInt32LE,\n writeInt32LE,\n readDoubleLE,\n readFloatLE,\n readUInt32LE,\n readInt32LE\n}\n", "var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __toBinary = /* @__PURE__ */ (() => {\n var table = new Uint8Array(128);\n for (var i = 0; i < 64; i++)\n table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i;\n return (base64) => {\n var n = base64.length, bytes2 = new Uint8Array((n - (base64[n - 1] == \"=\") - (base64[n - 2] == \"=\")) * 3 / 4 | 0);\n for (var i2 = 0, j = 0; i2 < n; ) {\n var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)];\n var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)];\n bytes2[j++] = c0 << 2 | c1 >> 4;\n bytes2[j++] = c1 << 4 | c2 >> 2;\n bytes2[j++] = c2 << 6 | c3;\n }\n return bytes2;\n };\n})();\n\n// wasm-binary:./blake2b.wat\nvar require_blake2b = __commonJS({\n \"wasm-binary:./blake2b.wat\"(exports2, module2) {\n module2.exports = __toBinary(\"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\");\n }\n});\n\n// wasm-module:./blake2b.wat\nvar bytes = require_blake2b();\nvar compiled = WebAssembly.compile(bytes);\nmodule.exports = async (imports) => {\n const instance = await WebAssembly.instantiate(await compiled, imports);\n return instance.exports;\n};\n", "var assert = require('nanoassert')\nvar b4a = require('b4a')\n\nvar wasm = null\nvar wasmPromise = typeof WebAssembly !== \"undefined\" && require('./blake2b')().then(mod => {\n wasm = mod\n})\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!wasm) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) {\n assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')\n assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n }\n if (salt != null) {\n assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')\n assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n }\n if (personal != null) {\n assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')\n assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n this._memory = new Uint8Array(wasm.memory.buffer)\n\n this._memory.fill(0, 0, 64)\n this._memory[0] = this.digestLength\n this._memory[1] = key ? key.length : 0\n this._memory[2] = 1 // fanout\n this._memory[3] = 1 // depth\n\n if (salt) this._memory.set(salt, 32)\n if (personal) this._memory.set(personal, 48)\n\n if (this.pointer + 216 > this._memory.length) this._realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n this._memory.fill(0, head, head + key.length) // whiteout key\n this._memory[this.pointer + 200] = 128\n }\n}\n\nBlake2b.prototype._realloc = function (size) {\n wasm.memory.grow(Math.max(0, Math.ceil(Math.abs(size - this._memory.length) / 65536)))\n this._memory = new Uint8Array(wasm.memory.buffer)\n}\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')\n\n if (head + input.length > this._memory.length) this._realloc(head + input.length)\n this._memory.set(input, head)\n wasm.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return this._memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (typeof enc === 'string') {\n return b4a.toString(this._memory, enc, this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n assert(enc instanceof Uint8Array && enc.length >= this.digestLength, 'input must be Uint8Array or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = this._memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasmPromise) return cb(new Error('WebAssembly not supported'))\n return wasmPromise.then(() => cb(), cb)\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nBlake2b.prototype.getPartialHash = function () {\n return this._memory.slice(this.pointer, this.pointer + 216);\n}\n\nBlake2b.prototype.setPartialHash = function (ph) {\n this._memory.set(ph, this.pointer);\n}\n\nfunction noop () {}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf instanceof Uint8Array, 'out must be \"binary\", \"hex\", Uint8Array, or Buffer')\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) {\n assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')\n assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n }\n if (salt != null) {\n assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')\n assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n }\n if (personal != null) {\n assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')\n assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n module.exports = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n \"data\": 250,\n \"contract\": 249,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be in \" + Object.keys(txTypes).map(t => `'${t}'`).join(\", \")\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({ publicKey, encryptedSecretKey })\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({ to, amount })\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], + "mappings": "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IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAE,GAAAC,EAAAC,IAAA,cAAAC,IAEA,IAAIC,GAASF,GAETG,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAEnB,SAASE,GAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAIJ,GAAM,QAAQI,CAAO,EAEtC,KAAK,MAAQ,IAAIJ,GAAM,KAAKI,CAAO,EACrC,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,KAA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A+E,GAASM,EAAKA,CAAG,EACjBvD,GAAEwD,EAAKA,EAAKD,CAAG,EACfhE,GAAUH,EAAGoE,CAAG,EACT,CACX,CACA,SAASC,GAAuBrE,EAAGI,EAAG,CAClC,OAAO2D,GAAkB/D,EAAGI,EAAGnC,EAAE,CACrC,CACA,IAAIqG,GAAI,CACJ,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAAqBC,EAAIC,EAAInE,EAAGF,EAAG,CAIxC,QAHIsE,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAIC,GAAIzH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", + "names": ["require_base64_js", "__commonJSMin", "exports", "init_esbuild_inject", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "init_esbuild_inject", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "m", "c", "rt", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "i", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "Buffer", "init_esbuild_inject", "__esmMin", "require_browser_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "__self__", "F", "self", "irrelevant", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "error", "fetch", "init", "request", "xhr", "abortXhr", "ctx", "phoenix_exports", "__export", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "module", "__toCommonJS", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "code", "wasClean", "token", "messages", "msg", "opts", "onCallerTimeout", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "error", "startTime", "onMsgRef", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ws", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "O", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "i", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "i", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "i", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "i", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "enqueue", "fn", "e", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "i", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_BYTES", "MAX_UINT32", "oldBrowser", "Buffer", "crypto", "randomBytes", "size", "cb", "bytes", "generated", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_events", "__commonJSMin", "exports", "module", "init_esbuild_inject", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "i", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "require_stream_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_util", "__commonJSMin", "init_esbuild_inject", "require_buffer_list", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "i", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "deprecate", "fn", "msg", "config", "warned", "deprecated", "name", "val", "require_stream_writable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "onEndNT", "self", "value", "require_string_decoder", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_stream_readable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_esbuild_inject", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_esbuild_inject", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_hash_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "inherits", "throwIfNotStringOrBuffer", "val", "prefix", "HashBase", "blockSize", "chunk", "encoding", "callback", "error", "err", "data", "block", "offset", "i", "j", "carry", "digest", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "HashBase", "Buffer", "ARRAY16", "MD5", "M", "i", "a", "b", "c", "fnF", "fnG", "fnH", "fnI", "buffer", "rotl", "x", "n", "d", "m", "k", "s", "require_ripemd160", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "inherits", "HashBase", "ARRAY16", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "j", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "i", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "rotl", "t", "buffer", "x", "n", "a", "b", "c", "d", "e", "m", "k", "s", "require_hash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Hash", "blockSize", "finalSize", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "a", "b", "c", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "H", "require_sha512", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "algorithm", "Algorithm", "require_stream_browserify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Stream", "EE", "inherits", "dest", "options", "source", "ondata", "chunk", "ondrain", "onend", "onclose", "didOnEnd", "onerror", "er", "cleanup", "require_cipher_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "StringDecoder", "inherits", "CipherBase", "hashMode", "data", "inputEnc", "outputEnc", "outData", "_", "next", "err", "e", "done", "value", "enc", "fin", "out", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "MD5", "RIPEMD160", "sha", "Base", "Hash", "hash", "data", "alg", "require_legacy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Base", "ZEROS", "blocksize", "Hmac", "alg", "key", "ipad", "opad", "i", "data", "h", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MD5", "buffer", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Legacy", "Base", "Buffer", "md5", "RIPEMD160", "sha", "ZEROS", "Hmac", "alg", "key", "blocksize", "hash", "ipad", "opad", "i", "data", "h", "require_algos", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_precondition", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_ALLOC", "iterations", "keylen", "require_default_encoding", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defaultEncoding", "pVersionMajor", "require_to_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "thing", "encoding", "name", "require_sync_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "md5", "RIPEMD160", "sha", "Buffer", "checkParameters", "defaultEncoding", "toBuffer", "ZEROS", "sizes", "Hmac", "alg", "key", "saltLen", "hash", "getDigest", "blocksize", "ipad", "opad", "i", "ipad1", "data", "h", "shaFunc", "rmd160Func", "pbkdf2", "password", "salt", "iterations", "keylen", "digest", "hmac", "DK", "block1", "destPos", "hLen", "l", "T", "U", "j", "k", "require_async", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "checkParameters", "defaultEncoding", "sync", "toBuffer", "ZERO_BUF", "subtle", "toBrowser", "checks", "checkNative", "algo", "prom", "browserPbkdf2", "nextTick", "getNextTick", "password", "salt", "iterations", "length", "key", "res", "resolvePromise", "promise", "callback", "out", "e", "keylen", "digest", "resp", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "bytes", "off", "res", "value", "inL", "inR", "out", "outL", "outR", "i", "j", "num", "shift", "pc2table", "len", "r", "sTable", "b", "sb", "permuteTable", "size", "group", "str", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "require_cipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "Cipher", "options", "data", "off", "min", "i", "out", "inputOff", "outputOff", "count", "max", "buffer", "first", "last", "require_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "utils", "Cipher", "DESState", "DES", "options", "state", "shiftTable", "key", "kL", "kR", "i", "shift", "inp", "inOff", "out", "outOff", "l", "r", "buffer", "off", "value", "pad", "lStart", "rStart", "keyL", "keyR", "s", "f", "t", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "proto", "CBCState", "iv", "i", "instantiate", "Base", "CBC", "options", "keys", "key", "state", "inp", "inOff", "out", "outOff", "superProto", "require_ede", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "Cipher", "DES", "EDEState", "type", "key", "k1", "k2", "k3", "EDE", "options", "state", "inp", "inOff", "out", "outOff", "require_des", "__commonJSMin", "exports", "init_esbuild_inject", "require_browserify_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "CipherBase", "des", "inherits", "Buffer", "modes", "DES", "opts", "modeName", "mode", "type", "key", "iv", "data", "require_ecb", "__commonJSMin", "exports", "init_esbuild_inject", "self", "block", "require_buffer_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "a", "b", "length", "buffer", "i", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "self", "block", "data", "pad", "out", "require_cfb", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "xor", "encryptStart", "self", "data", "decrypt", "len", "out", "require_cfb8", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "out", "chunk", "len", "i", "require_cfb1", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "i", "len", "out", "bit", "value", "shiftIn", "buffer", "chunk", "require_ofb", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "getBlock", "self", "chunk", "Buffer", "pad", "require_incr32", "__commonJSMin", "exports", "module", "init_esbuild_inject", "incr32", "iv", "len", "item", "require_ctr", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "Buffer", "incr32", "getBlock", "self", "out", "blockSize", "chunk", "chunkNum", "start", "i", "offset", "pad", "require_modes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "modeModules", "modes", "key", "require_aes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "asUInt32Array", "buf", "len", "out", "i", "scrubVec", "v", "cryptBlock", "M", "keySchedule", "SUB_MIX", "SBOX", "nRounds", "SUB_MIX0", "SUB_MIX1", "SUB_MIX2", "SUB_MIX3", "s0", "s1", "s2", "s3", "t0", "t1", "t2", "t3", "ksRow", "round", "RCON", "G", "d", "j", "INV_SBOX", "INV_SUB_MIX", "x", "xi", "sx", "x2", "x4", "x8", "t", "AES", "key", "keyWords", "keySize", "ksRows", "k", "invKeySchedule", "ik", "ksR", "tt", "m1", "require_ghash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "ZEROES", "toArray", "buf", "fromArray", "out", "GHASH", "key", "block", "i", "Vi", "Zi", "j", "xi", "lsbVi", "chunk", "abl", "bl", "require_authCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "GHASH", "xor", "incr32", "xorTest", "a", "b", "out", "len", "i", "calcIv", "self", "iv", "ck", "ghash", "toPad", "ivBits", "tail", "StreamCipher", "mode", "key", "decrypt", "h", "chunk", "rump", "tag", "buf", "require_streamCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "StreamCipher", "mode", "key", "iv", "decrypt", "chunk", "require_evp_bytestokey", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "MD5", "EVP_BytesToKey", "password", "salt", "keyBits", "ivLen", "keyLen", "key", "iv", "tmp", "hash", "used", "keyStart", "ivStart", "length", "require_encrypter", "__commonJSMin", "exports", "init_esbuild_inject", "MODES", "AuthCipher", "Buffer", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Cipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "PADDING", "setTo", "len", "padBuff", "i", "createCipheriv", "suite", "password", "config", "createCipher", "keys", "require_decrypter", "__commonJSMin", "exports", "init_esbuild_inject", "AuthCipher", "Buffer", "MODES", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Decipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "unpad", "setTo", "autoPadding", "last", "padded", "i", "createDecipheriv", "suite", "password", "config", "createDecipher", "keys", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "ciphers", "deciphers", "modes", "getCiphers", "require_modes", "__commonJSMin", "exports", "init_esbuild_inject", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "DES", "aes", "aesModes", "desModes", "ebtk", "createCipher", "suite", "password", "keyLen", "ivLen", "keys", "createCipheriv", "createDecipher", "createDecipheriv", "key", "iv", "getCiphers", "require_buffer", "__commonJSMin", "init_esbuild_inject", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_crypto", "__commonJSMin", "init_esbuild_inject", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_mr", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bn", "brorand", "MillerRabin", "rand", "n", "len", "min_bytes", "a", "start", "stop", "size", "k", "cb", "red", "rone", "n1", "s", "d", "rn1", "prime", "x", "i", "g", "require_generatePrime", "__commonJSMin", "exports", "module", "init_esbuild_inject", "randomBytes", "findPrime", "simpleSieve", "fermatTest", "BN", "TWENTYFOUR", "MillerRabin", "millerRabin", "ONE", "TWO", "FIVE", "SIXTEEN", "EIGHT", "TEN", "THREE", "SEVEN", "ELEVEN", "FOUR", "TWELVE", "primes", "_getPrimes", "limit", "res", "i", "k", "sqrt", "j", "p", "red", "bits", "gen", "num", "n2", "require_dh", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "MillerRabin", "millerRabin", "TWENTYFOUR", "ELEVEN", "TEN", "THREE", "SEVEN", "primes", "randomBytes", "DH", "setPublicKey", "pub", "enc", "Buffer", "setPrivateKey", "priv", "primeCache", "checkPrime", "prime", "generator", "gen", "hex", "error", "rem", "malleable", "other", "secret", "out", "front", "formatReturnValue", "bn", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "generatePrime", "primes", "DH", "getDiffieHellman", "mod", "prime", "Buffer", "gen", "ENCODINGS", "createDiffieHellman", "enc", "generator", "genc", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_browserify_rsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "randomBytes", "blind", "priv", "r", "getr", "blinder", "len", "crt", "msg", "blinds", "blinded", "c1", "c2", "qinv", "p", "q", "m1", "m2", "h", "Buffer", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "r", "i", "len", "bytes", "k", "res", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "i", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "i", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "i", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "j", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "i", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_safer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_reporter", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "options", "obj", "ReporterError", "state", "data", "key", "index", "value", "prev", "now", "msg", "err", "inherited", "elem", "result", "path", "e", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "Buffer", "DecoderBuffer", "base", "options", "data", "save", "res", "fail", "bytes", "EncoderBuffer", "value", "reporter", "item", "out", "offset", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Reporter", "EncoderBuffer", "DecoderBuffer", "assert", "tags", "methods", "overrided", "Node", "enc", "parent", "name", "state", "stateProps", "cstate", "prop", "res", "method", "clone", "body", "child", "args", "children", "arg", "key", "value", "tag", "item", "val", "num", "newKey", "obj", "input", "options", "result", "present", "prevKey", "save", "prevObj", "explicit", "start", "data", "entity", "match", "node", "reporter", "content", "primitive", "cls", "str", "require_der", "__commonJSMin", "exports", "init_esbuild_inject", "reverse", "map", "res", "key", "value", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Node", "der", "DEREncoder", "entity", "DERNode", "data", "reporter", "parent", "tag", "primitive", "cls", "content", "encodedTag", "encodeTag", "header", "lenOctets", "i", "j", "str", "buf", "id", "values", "relative", "size", "ident", "objid", "offset", "two", "num", "time", "date", "numArray", "out", "value", "obj", "dataBuffer", "state", "res", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "DEREncoder", "PEMEncoder", "entity", "data", "options", "p", "out", "i", "require_encoders", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "bignum", "DecoderBuffer", "Node", "der", "DERDecoder", "entity", "DERNode", "data", "options", "parent", "buffer", "tag", "any", "state", "decodedTag", "derDecodeTag", "len", "derDecodeLen", "res", "fail", "decoder", "result", "possibleEnd", "unused", "raw", "str", "i", "numstr", "printstr", "values", "relative", "identifiers", "ident", "subident", "first", "second", "tmp", "year", "mon", "day", "hour", "min", "sec", "obj", "buf", "cls", "primitive", "oct", "tagStr", "num", "j", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "DERDecoder", "PEMDecoder", "entity", "data", "options", "lines", "label", "re", "start", "end", "i", "match", "base64", "input", "require_decoders", "__commonJSMin", "exports", "init_esbuild_inject", "decoders", "require_api", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "decoders", "inherits", "api", "name", "body", "Entity", "Base", "Generated", "entity", "enc", "data", "options", "reporter", "require_base", "__commonJSMin", "exports", "init_esbuild_inject", "base", "require_constants", "__commonJSMin", "exports", "init_esbuild_inject", "constants", "map", "res", "key", "value", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "require_certificate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn", "Time", "AttributeTypeValue", "AlgorithmIdentifier", "SubjectPublicKeyInfo", "RelativeDistinguishedName", "RDNSequence", "Name", "Validity", "Extension", "TBSCertificate", "X509Certificate", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "RSAPrivateKey", "RSAPublicKey", "PublicKey", "AlgorithmIdentifier", "PrivateKeyInfo", "EncryptedPrivateKeyInfo", "DSAPrivateKey", "ECPrivateKey", "ECParameters", "require_fixProc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "findProc", "startRegex", "fullRegex", "evp", "ciphers", "Buffer", "okey", "password", "key", "match", "decrypted", "suite", "iv", "cipherText", "cipherKey", "out", "cipher", "match2", "tag", "require_parse_asn1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn1", "aesid", "fixProc", "ciphers", "compat", "Buffer", "parseKeys", "buffer", "password", "stripped", "type", "data", "subtype", "ndata", "decrypt", "salt", "iters", "algo", "iv", "cipherText", "keylen", "key", "cipher", "out", "require_sign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHmac", "crt", "EC", "BN", "parseKeys", "curves", "sign", "hash", "key", "hashType", "signType", "tag", "priv", "ecSign", "dsaSign", "len", "pad", "i", "out", "curveId", "curve", "algo", "x", "p", "q", "g", "r", "k", "H", "bits2int", "s", "kv", "getKey", "makeKey", "makeR", "toDER", "total", "res", "zeros", "hlen", "hbits", "bits2octets", "v", "obits", "bits", "shift", "t", "require_verify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "BN", "EC", "parseKeys", "curves", "verify", "sig", "hash", "key", "signType", "tag", "pub", "ecVerify", "dsaVerify", "len", "pad", "padNum", "i", "red", "out", "curveId", "curve", "pubkey", "p", "q", "g", "y", "unpacked", "s", "r", "checkValue", "montp", "w", "v", "b", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHash", "stream", "inherits", "sign", "verify", "algorithms", "key", "Sign", "algorithm", "data", "_", "done", "enc", "hash", "sig", "Verify", "createSign", "createVerify", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "elliptic", "BN", "curve", "ECDH", "aliases", "enc", "format", "other", "inenc", "Buffer", "otherPub", "out", "formatReturnValue", "key", "pub", "priv", "_priv", "bn", "len", "buf", "zeros", "require_mgf", "__commonJSMin", "exports", "module", "init_esbuild_inject", "createHash", "Buffer", "seed", "len", "t", "i", "c", "i2ops", "out", "require_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "a", "b", "len", "i", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "require_withPublic", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "Buffer", "withPublic", "paddedMsg", "key", "require_publicEncrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "randomBytes", "createHash", "mgf", "xor", "BN", "withPublic", "crt", "Buffer", "publicKey", "msg", "reverse", "padding", "key", "paddedMsg", "oaep", "pkcs1", "k", "mLen", "iHash", "hLen", "hLen2", "ps", "dblen", "seed", "maskedDb", "maskedSeed", "nonZero", "len", "out", "i", "cache", "cur", "num", "require_privateDecrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "mgf", "xor", "BN", "crt", "createHash", "withPublic", "Buffer", "privateKey", "enc", "reverse", "padding", "key", "k", "msg", "zBuffer", "oaep", "pkcs1", "iHash", "hLen", "maskedSeed", "maskedDb", "seed", "db", "compare", "i", "p1", "status", "ps", "a", "b", "dif", "len", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "key", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "oldBrowser", "safeBuffer", "randombytes", "Buffer", "kBufferMaxLength", "crypto", "kMaxUint32", "assertOffset", "offset", "length", "assertSize", "size", "randomFill", "randomFillSync", "buf", "cb", "actualFill", "ourBuf", "uint", "err", "bytes", "require_crypto_browserify", "__commonJSMin", "exports", "init_esbuild_inject", "algos", "algoKeys", "hashes", "p", "aes", "dh", "sign", "publicEncrypt", "rf", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "AssertionError", "t", "m", "err", "require_ascii", "__commonJSMin", "exports", "module", "init_esbuild_inject", "byteLength", "string", "toString", "buffer", "len", "result", "i", "write", "offset", "length", "require_base64", "__commonJSMin", "exports", "module", "init_esbuild_inject", "alphabet", "codes", "i", "byteLength", "string", "len", "toString", "buffer", "result", "write", "offset", "length", "j", "a", "b", "c", "d", "require_hex", "__commonJSMin", "exports", "module", "init_esbuild_inject", "byteLength", "string", "toString", "buffer", "len", "result", "i", "write", "offset", "length", "a", "hexValue", "char", "require_utf8", "__commonJSMin", "exports", "module", "init_esbuild_inject", "byteLength", "string", "length", "i", "n", "code", "toString", "decoder", "buffer", "len", "output", "byte", "bytesNeeded", "codePoint", "k", "write", "encoder", "offset", "j", "count", "bits", "require_utf16le", "__commonJSMin", "exports", "module", "init_esbuild_inject", "byteLength", "string", "toString", "buffer", "len", "result", "i", "write", "offset", "length", "units", "c", "hi", "lo", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ascii", "base64", "hex", "utf8", "utf16le", "LE", "codecFor", "encoding", "isBuffer", "value", "isEncoding", "alloc", "size", "fill", "buffer", "allocUnsafe", "allocUnsafeSlow", "byteLength", "string", "compare", "a", "b", "len", "i", "x", "y", "concat", "buffers", "totalLength", "result", "offset", "copy", "source", "target", "targetStart", "start", "end", "equals", "from", "encodingOrOffset", "length", "fromString", "fromArray", "fromBuffer", "fromArrayBuffer", "codec", "array", "arrayBuffer", "byteOffset", "includes", "indexOf", "bidirectionalIndexOf", "first", "foundIndex", "found", "j", "lastIndexOf", "swap", "n", "m", "swap16", "swap32", "swap64", "toBuffer", "toString", "write", "writeDoubleLE", "writeFloatLE", "writeUInt32LE", "writeInt32LE", "readDoubleLE", "readFloatLE", "readUInt32LE", "readInt32LE", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "__commonJS", "cb", "mod", "__toBinary", "table", "i", "base64", "n", "bytes2", "i2", "j", "c0", "c1", "c2", "c3", "exports2", "module2", "bytes", "compiled", "imports", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b4a", "wasm", "wasmPromise", "mod", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "size", "input", "enc", "i", "cb", "noop", "ph", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "d", "crypto_verify_32", "set25519", "r", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "n", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "b", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "m", "par25519", "d", "vn", "x", "xi", "y", "yi", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "libjs_exports", "__export", "crypto_exports", "utils_exports", "Archethic", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "i", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_crypto", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "pseudoRandomKey", "cipher", "decipher", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_crypto", "import_base64url", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "v", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "t", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] } diff --git a/dist/archethic.mjs b/dist/archethic.mjs deleted file mode 100644 index 8ae28b9..0000000 --- a/dist/archethic.mjs +++ /dev/null @@ -1,99 +0,0 @@ -var $_=Object.create;var Wh=Object.defineProperty;var W_=Object.getOwnPropertyDescriptor;var J_=Object.getOwnPropertyNames;var X_=Object.getPrototypeOf,Z_=Object.prototype.hasOwnProperty;var Mv=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var eI=(t,e)=>()=>(t&&(e=t(t=0)),e);var P=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Sv=(t,e)=>{for(var r in e)Wh(t,r,{get:e[r],enumerable:!0})},tI=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of J_(e))!Z_.call(t,n)&&n!==r&&Wh(t,n,{get:()=>e[n],enumerable:!(i=W_(e,n))||i.enumerable});return t};var $r=(t,e,r)=>(r=t!=null?$_(X_(t)):{},tI(e||!t||!t.__esModule?Wh(r,"default",{value:t,enumerable:!0}):r,t));var qv=P(Hs=>{"use strict";g();Hs.byteLength=iI;Hs.toByteArray=fI;Hs.fromByteArray=sI;var Fi=[],Wr=[],rI=typeof Uint8Array<"u"?Uint8Array:Array,Jh="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(lf=0,Cv=Jh.length;lf0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var i=r===e?0:4-r%4;return[r,i]}function iI(t){var e=Bv(t),r=e[0],i=e[1];return(r+i)*3/4-i}function nI(t,e,r){return(e+r)*3/4-r}function fI(t){var e,r=Bv(t),i=r[0],n=r[1],a=new rI(nI(t,i,n)),o=0,c=n>0?i-4:i,m;for(m=0;m>16&255,a[o++]=e>>8&255,a[o++]=e&255;return n===2&&(e=Wr[t.charCodeAt(m)]<<2|Wr[t.charCodeAt(m+1)]>>4,a[o++]=e&255),n===1&&(e=Wr[t.charCodeAt(m)]<<10|Wr[t.charCodeAt(m+1)]<<4|Wr[t.charCodeAt(m+2)]>>2,a[o++]=e>>8&255,a[o++]=e&255),a}function aI(t){return Fi[t>>18&63]+Fi[t>>12&63]+Fi[t>>6&63]+Fi[t&63]}function oI(t,e,r){for(var i,n=[],a=e;ac?c:o+a));return i===1?(e=t[r-1],n.push(Fi[e>>2]+Fi[e<<4&63]+"==")):i===2&&(e=(t[r-2]<<8)+t[r-1],n.push(Fi[e>>10]+Fi[e>>4&63]+Fi[e<<2&63]+"=")),n.join("")}});var Rv=P(Xh=>{g();Xh.read=function(t,e,r,i,n){var a,o,c=n*8-i-1,m=(1<>1,B=-7,R=r?n-1:0,F=r?-1:1,N=t[e+R];for(R+=F,a=N&(1<<-B)-1,N>>=-B,B+=c;B>0;a=a*256+t[e+R],R+=F,B-=8);for(o=a&(1<<-B)-1,a>>=-B,B+=i;B>0;o=o*256+t[e+R],R+=F,B-=8);if(a===0)a=1-M;else{if(a===m)return o?NaN:(N?-1:1)*(1/0);o=o+Math.pow(2,i),a=a-M}return(N?-1:1)*o*Math.pow(2,a-i)};Xh.write=function(t,e,r,i,n,a){var o,c,m,M=a*8-n-1,B=(1<>1,F=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,N=i?0:a-1,G=i?1:-1,Z=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(c=isNaN(e)?1:0,o=B):(o=Math.floor(Math.log(e)/Math.LN2),e*(m=Math.pow(2,-o))<1&&(o--,m*=2),o+R>=1?e+=F/m:e+=F*Math.pow(2,1-R),e*m>=2&&(o++,m/=2),o+R>=B?(c=0,o=B):o+R>=1?(c=(e*m-1)*Math.pow(2,n),o=o+R):(c=e*Math.pow(2,R-1)*Math.pow(2,n),o=0));n>=8;t[r+N]=c&255,N+=G,c/=256,n-=8);for(o=o<0;t[r+N]=o&255,N+=G,o/=256,M-=8);t[r+N-G]|=Z*128}});var fn=P(sa=>{"use strict";g();var Zh=qv(),aa=Rv(),Tv=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;sa.Buffer=re;sa.SlowBuffer=pI;sa.INSPECT_MAX_BYTES=50;var zs=2147483647;sa.kMaxLength=zs;re.TYPED_ARRAY_SUPPORT=uI();!re.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function uI(){try{let t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),t.foo()===42}catch{return!1}}Object.defineProperty(re.prototype,"parent",{enumerable:!0,get:function(){if(!!re.isBuffer(this))return this.buffer}});Object.defineProperty(re.prototype,"offset",{enumerable:!0,get:function(){if(!!re.isBuffer(this))return this.byteOffset}});function nn(t){if(t>zs)throw new RangeError('The value "'+t+'" is invalid for option "size"');let e=new Uint8Array(t);return Object.setPrototypeOf(e,re.prototype),e}function re(t,e,r){if(typeof t=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ic(t)}return Uv(t,e,r)}re.poolSize=8192;function Uv(t,e,r){if(typeof t=="string")return cI(t,e);if(ArrayBuffer.isView(t))return dI(t);if(t==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(Li(t,ArrayBuffer)||t&&Li(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Li(t,SharedArrayBuffer)||t&&Li(t.buffer,SharedArrayBuffer)))return tc(t,e,r);if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let i=t.valueOf&&t.valueOf();if(i!=null&&i!==t)return re.from(i,e,r);let n=lI(t);if(n)return n;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof t[Symbol.toPrimitive]=="function")return re.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}re.from=function(t,e,r){return Uv(t,e,r)};Object.setPrototypeOf(re.prototype,Uint8Array.prototype);Object.setPrototypeOf(re,Uint8Array);function kv(t){if(typeof t!="number")throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function hI(t,e,r){return kv(t),t<=0?nn(t):e!==void 0?typeof r=="string"?nn(t).fill(e,r):nn(t).fill(e):nn(t)}re.alloc=function(t,e,r){return hI(t,e,r)};function ic(t){return kv(t),nn(t<0?0:nc(t)|0)}re.allocUnsafe=function(t){return ic(t)};re.allocUnsafeSlow=function(t){return ic(t)};function cI(t,e){if((typeof e!="string"||e==="")&&(e="utf8"),!re.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let r=Fv(t,e)|0,i=nn(r),n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}function ec(t){let e=t.length<0?0:nc(t.length)|0,r=nn(e);for(let i=0;i=zs)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+zs.toString(16)+" bytes");return t|0}function pI(t){return+t!=t&&(t=0),re.alloc(+t)}re.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==re.prototype};re.compare=function(e,r){if(Li(e,Uint8Array)&&(e=re.from(e,e.offset,e.byteLength)),Li(r,Uint8Array)&&(r=re.from(r,r.offset,r.byteLength)),!re.isBuffer(e)||!re.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===r)return 0;let i=e.length,n=r.length;for(let a=0,o=Math.min(i,n);an.length?(re.isBuffer(o)||(o=re.from(o)),o.copy(n,a)):Uint8Array.prototype.set.call(n,o,a);else if(re.isBuffer(o))o.copy(n,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=o.length}return n};function Fv(t,e){if(re.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||Li(t,ArrayBuffer))return t.byteLength;if(typeof t!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);let r=t.length,i=arguments.length>2&&arguments[2]===!0;if(!i&&r===0)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return rc(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Yv(t).length;default:if(n)return i?-1:rc(t).length;e=(""+e).toLowerCase(),n=!0}}re.byteLength=Fv;function vI(t,e,r){let i=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,e>>>=0,r<=e))return"";for(t||(t="utf8");;)switch(t){case"hex":return EI(this,e,r);case"utf8":case"utf-8":return Nv(this,e,r);case"ascii":return _I(this,e,r);case"latin1":case"binary":return II(this,e,r);case"base64":return wI(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return MI(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}re.prototype._isBuffer=!0;function pf(t,e,r){let i=t[e];t[e]=t[r],t[r]=i}re.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(e+=" ... "),""};Tv&&(re.prototype[Tv]=re.prototype.inspect);re.prototype.compare=function(e,r,i,n,a){if(Li(e,Uint8Array)&&(e=re.from(e,e.offset,e.byteLength)),!re.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(r===void 0&&(r=0),i===void 0&&(i=e?e.length:0),n===void 0&&(n=0),a===void 0&&(a=this.length),r<0||i>e.length||n<0||a>this.length)throw new RangeError("out of range index");if(n>=a&&r>=i)return 0;if(n>=a)return-1;if(r>=i)return 1;if(r>>>=0,i>>>=0,n>>>=0,a>>>=0,this===e)return 0;let o=a-n,c=i-r,m=Math.min(o,c),M=this.slice(n,a),B=e.slice(r,i);for(let R=0;R2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,ac(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0)if(n)r=0;else return-1;if(typeof e=="string"&&(e=re.from(e,i)),re.isBuffer(e))return e.length===0?-1:Ov(t,e,r,i,n);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):Ov(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function Ov(t,e,r,i,n){let a=1,o=t.length,c=e.length;if(i!==void 0&&(i=String(i).toLowerCase(),i==="ucs2"||i==="ucs-2"||i==="utf16le"||i==="utf-16le")){if(t.length<2||e.length<2)return-1;a=2,o/=2,c/=2,r/=2}function m(B,R){return a===1?B[R]:B.readUInt16BE(R*a)}let M;if(n){let B=-1;for(M=r;Mo&&(r=o-c),M=r;M>=0;M--){let B=!0;for(let R=0;Rn&&(i=n)):i=n;let a=e.length;i>a/2&&(i=a/2);let o;for(o=0;o>>0,isFinite(i)?(i=i>>>0,n===void 0&&(n="utf8")):(n=i,i=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((i===void 0||i>a)&&(i=a),e.length>0&&(i<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return bI(this,e,r,i);case"utf8":case"utf-8":return gI(this,e,r,i);case"ascii":case"latin1":case"binary":return yI(this,e,r,i);case"base64":return mI(this,e,r,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return xI(this,e,r,i);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}};re.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function wI(t,e,r){return e===0&&r===t.length?Zh.fromByteArray(t):Zh.fromByteArray(t.slice(e,r))}function Nv(t,e,r){r=Math.min(t.length,r);let i=[],n=e;for(;n239?4:a>223?3:a>191?2:1;if(n+c<=r){let m,M,B,R;switch(c){case 1:a<128&&(o=a);break;case 2:m=t[n+1],(m&192)===128&&(R=(a&31)<<6|m&63,R>127&&(o=R));break;case 3:m=t[n+1],M=t[n+2],(m&192)===128&&(M&192)===128&&(R=(a&15)<<12|(m&63)<<6|M&63,R>2047&&(R<55296||R>57343)&&(o=R));break;case 4:m=t[n+1],M=t[n+2],B=t[n+3],(m&192)===128&&(M&192)===128&&(B&192)===128&&(R=(a&15)<<18|(m&63)<<12|(M&63)<<6|B&63,R>65535&&R<1114112&&(o=R))}}o===null?(o=65533,c=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|o&1023),i.push(o),n+=c}return AI(i)}var Dv=4096;function AI(t){let e=t.length;if(e<=Dv)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii)&&(r=i);let n="";for(let a=e;ai&&(e=i),r<0?(r+=i,r<0&&(r=0)):r>i&&(r=i),rr)throw new RangeError("Trying to access beyond buffer length")}re.prototype.readUintLE=re.prototype.readUIntLE=function(e,r,i){e=e>>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e],a=1,o=0;for(;++o>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e+--r],a=1;for(;r>0&&(a*=256);)n+=this[e+--r]*a;return n};re.prototype.readUint8=re.prototype.readUInt8=function(e,r){return e=e>>>0,r||ur(e,1,this.length),this[e]};re.prototype.readUint16LE=re.prototype.readUInt16LE=function(e,r){return e=e>>>0,r||ur(e,2,this.length),this[e]|this[e+1]<<8};re.prototype.readUint16BE=re.prototype.readUInt16BE=function(e,r){return e=e>>>0,r||ur(e,2,this.length),this[e]<<8|this[e+1]};re.prototype.readUint32LE=re.prototype.readUInt32LE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};re.prototype.readUint32BE=re.prototype.readUInt32BE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};re.prototype.readBigUInt64LE=On(function(e){e=e>>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=r+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,a=this[++e]+this[++e]*2**8+this[++e]*2**16+i*2**24;return BigInt(n)+(BigInt(a)<>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=r*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],a=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i;return(BigInt(n)<>>0,r=r>>>0,i||ur(e,r,this.length);let n=this[e],a=1,o=0;for(;++o=a&&(n-=Math.pow(2,8*r)),n};re.prototype.readIntBE=function(e,r,i){e=e>>>0,r=r>>>0,i||ur(e,r,this.length);let n=r,a=1,o=this[e+--n];for(;n>0&&(a*=256);)o+=this[e+--n]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};re.prototype.readInt8=function(e,r){return e=e>>>0,r||ur(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};re.prototype.readInt16LE=function(e,r){e=e>>>0,r||ur(e,2,this.length);let i=this[e]|this[e+1]<<8;return i&32768?i|4294901760:i};re.prototype.readInt16BE=function(e,r){e=e>>>0,r||ur(e,2,this.length);let i=this[e+1]|this[e]<<8;return i&32768?i|4294901760:i};re.prototype.readInt32LE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};re.prototype.readInt32BE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};re.prototype.readBigInt64LE=On(function(e){e=e>>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(i<<24);return(BigInt(n)<>>0,oa(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&uo(e,this.length-8);let n=(r<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(n)<>>0,r||ur(e,4,this.length),aa.read(this,e,!0,23,4)};re.prototype.readFloatBE=function(e,r){return e=e>>>0,r||ur(e,4,this.length),aa.read(this,e,!1,23,4)};re.prototype.readDoubleLE=function(e,r){return e=e>>>0,r||ur(e,8,this.length),aa.read(this,e,!0,52,8)};re.prototype.readDoubleBE=function(e,r){return e=e>>>0,r||ur(e,8,this.length),aa.read(this,e,!1,52,8)};function Or(t,e,r,i,n,a){if(!re.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}re.prototype.writeUintLE=re.prototype.writeUIntLE=function(e,r,i,n){if(e=+e,r=r>>>0,i=i>>>0,!n){let c=Math.pow(2,8*i)-1;Or(this,e,r,i,c,0)}let a=1,o=0;for(this[r]=e&255;++o>>0,i=i>>>0,!n){let c=Math.pow(2,8*i)-1;Or(this,e,r,i,c,0)}let a=i-1,o=1;for(this[r+a]=e&255;--a>=0&&(o*=256);)this[r+a]=e/o&255;return r+i};re.prototype.writeUint8=re.prototype.writeUInt8=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,1,255,0),this[r]=e&255,r+1};re.prototype.writeUint16LE=re.prototype.writeUInt16LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,65535,0),this[r]=e&255,this[r+1]=e>>>8,r+2};re.prototype.writeUint16BE=re.prototype.writeUInt16BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,65535,0),this[r]=e>>>8,this[r+1]=e&255,r+2};re.prototype.writeUint32LE=re.prototype.writeUInt32LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,4294967295,0),this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=e&255,r+4};re.prototype.writeUint32BE=re.prototype.writeUInt32BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,4294967295,0),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};function Qv(t,e,r,i,n){Gv(e,i,n,t,r,7);let a=Number(e&BigInt(4294967295));t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a;let o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=o,o=o>>8,t[r++]=o,o=o>>8,t[r++]=o,o=o>>8,t[r++]=o,r}function Kv(t,e,r,i,n){Gv(e,i,n,t,r,7);let a=Number(e&BigInt(4294967295));t[r+7]=a,a=a>>8,t[r+6]=a,a=a>>8,t[r+5]=a,a=a>>8,t[r+4]=a;let o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=o,o=o>>8,t[r+2]=o,o=o>>8,t[r+1]=o,o=o>>8,t[r]=o,r+8}re.prototype.writeBigUInt64LE=On(function(e,r=0){return Qv(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});re.prototype.writeBigUInt64BE=On(function(e,r=0){return Kv(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});re.prototype.writeIntLE=function(e,r,i,n){if(e=+e,r=r>>>0,!n){let m=Math.pow(2,8*i-1);Or(this,e,r,i,m-1,-m)}let a=0,o=1,c=0;for(this[r]=e&255;++a>0)-c&255;return r+i};re.prototype.writeIntBE=function(e,r,i,n){if(e=+e,r=r>>>0,!n){let m=Math.pow(2,8*i-1);Or(this,e,r,i,m-1,-m)}let a=i-1,o=1,c=0;for(this[r+a]=e&255;--a>=0&&(o*=256);)e<0&&c===0&&this[r+a+1]!==0&&(c=1),this[r+a]=(e/o>>0)-c&255;return r+i};re.prototype.writeInt8=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,1,127,-128),e<0&&(e=255+e+1),this[r]=e&255,r+1};re.prototype.writeInt16LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,32767,-32768),this[r]=e&255,this[r+1]=e>>>8,r+2};re.prototype.writeInt16BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,2,32767,-32768),this[r]=e>>>8,this[r+1]=e&255,r+2};re.prototype.writeInt32LE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,2147483647,-2147483648),this[r]=e&255,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24,r+4};re.prototype.writeInt32BE=function(e,r,i){return e=+e,r=r>>>0,i||Or(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};re.prototype.writeBigInt64LE=On(function(e,r=0){return Qv(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});re.prototype.writeBigInt64BE=On(function(e,r=0){return Kv(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function jv(t,e,r,i,n,a){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Hv(t,e,r,i,n){return e=+e,r=r>>>0,n||jv(t,e,r,4,34028234663852886e22,-34028234663852886e22),aa.write(t,e,r,i,23,4),r+4}re.prototype.writeFloatLE=function(e,r,i){return Hv(this,e,r,!0,i)};re.prototype.writeFloatBE=function(e,r,i){return Hv(this,e,r,!1,i)};function zv(t,e,r,i,n){return e=+e,r=r>>>0,n||jv(t,e,r,8,17976931348623157e292,-17976931348623157e292),aa.write(t,e,r,i,52,8),r+8}re.prototype.writeDoubleLE=function(e,r,i){return zv(this,e,r,!0,i)};re.prototype.writeDoubleBE=function(e,r,i){return zv(this,e,r,!1,i)};re.prototype.copy=function(e,r,i,n){if(!re.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),!n&&n!==0&&(n=this.length),r>=e.length&&(r=e.length),r||(r=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-r>>0,i=i===void 0?this.length:i>>>0,e||(e=0);let a;if(typeof e=="number")for(a=r;a2**32?n=Pv(String(r)):typeof r=="bigint"&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Pv(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i},RangeError);function Pv(t){let e="",r=t.length,i=t[0]==="-"?1:0;for(;r>=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function SI(t,e,r){oa(e,"offset"),(t[e]===void 0||t[e+r]===void 0)&&uo(e,t.length-(r+1))}function Gv(t,e,r,i,n,a){if(t>r||t3?e===0||e===BigInt(0)?c=`>= 0${o} and < 2${o} ** ${(a+1)*8}${o}`:c=`>= -(2${o} ** ${(a+1)*8-1}${o}) and < 2 ** ${(a+1)*8-1}${o}`:c=`>= ${e}${o} and <= ${r}${o}`,new fa.ERR_OUT_OF_RANGE("value",c,t)}SI(i,n,a)}function oa(t,e){if(typeof t!="number")throw new fa.ERR_INVALID_ARG_TYPE(e,"number",t)}function uo(t,e,r){throw Math.floor(t)!==t?(oa(t,r),new fa.ERR_OUT_OF_RANGE(r||"offset","an integer",t)):e<0?new fa.ERR_BUFFER_OUT_OF_BOUNDS:new fa.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}var CI=/[^+/0-9A-Za-z-_]/g;function BI(t){if(t=t.split("=")[0],t=t.trim().replace(CI,""),t.length<2)return"";for(;t.length%4!==0;)t=t+"=";return t}function rc(t,e){e=e||1/0;let r,i=t.length,n=null,a=[];for(let o=0;o55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}else if(o+1===i){(e-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),n=r;continue}r=(n-55296<<10|r-56320)+65536}else n&&(e-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function qI(t){let e=[];for(let r=0;r>8,n=r%256,a.push(n),a.push(i);return a}function Yv(t){return Zh.toByteArray(BI(t))}function Gs(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function Li(t,e){return t instanceof e||t!=null&&t.constructor!=null&&t.constructor.name!=null&&t.constructor.name===e.name}function ac(t){return t!==t}var TI=function(){let t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){let i=r*16;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function On(t){return typeof BigInt>"u"?OI:t}function OI(){throw new Error("BigInt not supported")}});var U,g=eI(()=>{U=fn().Buffer});var oc=P((an,$v)=>{g();var Vv=typeof self<"u"?self:an,Ys=function(){function t(){this.fetch=!1,this.DOMException=Vv.DOMException}return t.prototype=Vv,new t}();(function(t){var e=function(r){var i={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};function n(d){return d&&DataView.prototype.isPrototypeOf(d)}if(i.arrayBuffer)var a=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],o=ArrayBuffer.isView||function(d){return d&&a.indexOf(Object.prototype.toString.call(d))>-1};function c(d){if(typeof d!="string"&&(d=String(d)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(d))throw new TypeError("Invalid character in header field name");return d.toLowerCase()}function m(d){return typeof d!="string"&&(d=String(d)),d}function M(d){var b={next:function(){var E=d.shift();return{done:E===void 0,value:E}}};return i.iterable&&(b[Symbol.iterator]=function(){return b}),b}function B(d){this.map={},d instanceof B?d.forEach(function(b,E){this.append(E,b)},this):Array.isArray(d)?d.forEach(function(b){this.append(b[0],b[1])},this):d&&Object.getOwnPropertyNames(d).forEach(function(b){this.append(b,d[b])},this)}B.prototype.append=function(d,b){d=c(d),b=m(b);var E=this.map[d];this.map[d]=E?E+", "+b:b},B.prototype.delete=function(d){delete this.map[c(d)]},B.prototype.get=function(d){return d=c(d),this.has(d)?this.map[d]:null},B.prototype.has=function(d){return this.map.hasOwnProperty(c(d))},B.prototype.set=function(d,b){this.map[c(d)]=m(b)},B.prototype.forEach=function(d,b){for(var E in this.map)this.map.hasOwnProperty(E)&&d.call(b,this.map[E],E,this)},B.prototype.keys=function(){var d=[];return this.forEach(function(b,E){d.push(E)}),M(d)},B.prototype.values=function(){var d=[];return this.forEach(function(b){d.push(b)}),M(d)},B.prototype.entries=function(){var d=[];return this.forEach(function(b,E){d.push([E,b])}),M(d)},i.iterable&&(B.prototype[Symbol.iterator]=B.prototype.entries);function R(d){if(d.bodyUsed)return Promise.reject(new TypeError("Already read"));d.bodyUsed=!0}function F(d){return new Promise(function(b,E){d.onload=function(){b(d.result)},d.onerror=function(){E(d.error)}})}function N(d){var b=new FileReader,E=F(b);return b.readAsArrayBuffer(d),E}function G(d){var b=new FileReader,E=F(b);return b.readAsText(d),E}function Z(d){for(var b=new Uint8Array(d),E=new Array(b.length),p=0;p-1?b:d}function ve(d,b){b=b||{};var E=b.body;if(d instanceof ve){if(d.bodyUsed)throw new TypeError("Already read");this.url=d.url,this.credentials=d.credentials,b.headers||(this.headers=new B(d.headers)),this.method=d.method,this.mode=d.mode,this.signal=d.signal,!E&&d._bodyInit!=null&&(E=d._bodyInit,d.bodyUsed=!0)}else this.url=String(d);if(this.credentials=b.credentials||this.credentials||"same-origin",(b.headers||!this.headers)&&(this.headers=new B(b.headers)),this.method=ge(b.method||this.method||"GET"),this.mode=b.mode||this.mode||null,this.signal=b.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&E)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(E)}ve.prototype.clone=function(){return new ve(this,{body:this._bodyInit})};function Ke(d){var b=new FormData;return d.trim().split("&").forEach(function(E){if(E){var p=E.split("="),f=p.shift().replace(/\+/g," "),s=p.join("=").replace(/\+/g," ");b.append(decodeURIComponent(f),decodeURIComponent(s))}}),b}function be(d){var b=new B,E=d.replace(/\r?\n[\t ]+/g," ");return E.split(/\r?\n/).forEach(function(p){var f=p.split(":"),s=f.shift().trim();if(s){var v=f.join(":").trim();b.append(s,v)}}),b}fe.call(ve.prototype);function pe(d,b){b||(b={}),this.type="default",this.status=b.status===void 0?200:b.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in b?b.statusText:"OK",this.headers=new B(b.headers),this.url=b.url||"",this._initBody(d)}fe.call(pe.prototype),pe.prototype.clone=function(){return new pe(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new B(this.headers),url:this.url})},pe.error=function(){var d=new pe(null,{status:0,statusText:""});return d.type="error",d};var Ne=[301,302,303,307,308];pe.redirect=function(d,b){if(Ne.indexOf(b)===-1)throw new RangeError("Invalid status code");return new pe(null,{status:b,headers:{location:d}})},r.DOMException=t.DOMException;try{new r.DOMException}catch{r.DOMException=function(b,E){this.message=b,this.name=E;var p=Error(b);this.stack=p.stack},r.DOMException.prototype=Object.create(Error.prototype),r.DOMException.prototype.constructor=r.DOMException}function k(d,b){return new Promise(function(E,p){var f=new ve(d,b);if(f.signal&&f.signal.aborted)return p(new r.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function v(){s.abort()}s.onload=function(){var l={status:s.status,statusText:s.statusText,headers:be(s.getAllResponseHeaders()||"")};l.url="responseURL"in s?s.responseURL:l.headers.get("X-Request-URL");var h="response"in s?s.response:s.responseText;E(new pe(h,l))},s.onerror=function(){p(new TypeError("Network request failed"))},s.ontimeout=function(){p(new TypeError("Network request failed"))},s.onabort=function(){p(new r.DOMException("Aborted","AbortError"))},s.open(f.method,f.url,!0),f.credentials==="include"?s.withCredentials=!0:f.credentials==="omit"&&(s.withCredentials=!1),"responseType"in s&&i.blob&&(s.responseType="blob"),f.headers.forEach(function(l,h){s.setRequestHeader(h,l)}),f.signal&&(f.signal.addEventListener("abort",v),s.onreadystatechange=function(){s.readyState===4&&f.signal.removeEventListener("abort",v)}),s.send(typeof f._bodyInit>"u"?null:f._bodyInit)})}return k.polyfill=!0,t.fetch||(t.fetch=k,t.Headers=B,t.Request=ve,t.Response=pe),r.Headers=B,r.Request=ve,r.Response=pe,r.fetch=k,Object.defineProperty(r,"__esModule",{value:!0}),r}({})})(Ys);Ys.fetch.ponyfill=!0;delete Ys.fetch.polyfill;var ua=Ys;an=ua.fetch;an.default=ua.fetch;an.fetch=ua.fetch;an.Headers=ua.Headers;an.Request=ua.Request;an.Response=ua.Response;$v.exports=an});var hc=P(Zv=>{g();var Wv=Object.defineProperty,DI=t=>Wv(t,"__esModule",{value:!0}),PI=(t,e)=>{DI(t);for(var r in e)Wv(t,r,{get:e[r],enumerable:!0})};PI(Zv,{Channel:()=>Xv,LongPoll:()=>uc,Presence:()=>co,Serializer:()=>lo,Socket:()=>QI});var po=t=>typeof t=="function"?t:function(){return t},UI=typeof self<"u"?self:null,ho=typeof window<"u"?window:null,$s=UI||ho||void 0,kI="2.0.0",Ni={connecting:0,open:1,closing:2,closed:3},FI=1e4,LI=1e3,Kr={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},on={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},sc={longpoll:"longpoll",websocket:"websocket"},NI={complete:4},Vs=class{constructor(t,e,r,i){this.channel=t,this.event=e,this.payload=r||function(){return{}},this.receivedResp=null,this.timeout=i,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(t){this.timeout=t,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(t,e){return this.hasReceived(t)&&e(this.receivedResp.response),this.recHooks.push({status:t,callback:e}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:t,response:e,_ref:r}){this.recHooks.filter(i=>i.status===t).forEach(i=>i.callback(e))}cancelRefEvent(){!this.refEvent||this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,t=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=t,this.matchReceive(t)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}trigger(t,e){this.channel.trigger(this.refEvent,{status:t,response:e})}},Jv=class{constructor(t,e){this.callback=t,this.timerCalc=e,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},Xv=class{constructor(t,e,r){this.state=Kr.closed,this.topic=t,this.params=po(e||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new Vs(this,on.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new Jv(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Kr.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(i=>i.send()),this.pushBuffer=[]}),this.joinPush.receive("error",()=>{this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=Kr.closed,this.socket.remove(this)}),this.onError(i=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,i),this.isJoining()&&this.joinPush.reset(),this.state=Kr.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new Vs(this,on.leave,po({}),this.timeout).send(),this.state=Kr.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(on.reply,(i,n)=>{this.trigger(this.replyEventName(n),i)})}join(t=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=t,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(t){this.on(on.close,t)}onError(t){return this.on(on.error,e=>t(e))}on(t,e){let r=this.bindingRef++;return this.bindings.push({event:t,ref:r,callback:e}),r}off(t,e){this.bindings=this.bindings.filter(r=>!(r.event===t&&(typeof e>"u"||e===r.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(t,e,r=this.timeout){if(e=e||{},!this.joinedOnce)throw new Error(`tried to push '${t}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let i=new Vs(this,t,function(){return e},r);return this.canPush()?i.send():(i.startTimeout(),this.pushBuffer.push(i)),i}leave(t=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Kr.leaving;let e=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(on.close,"leave")},r=new Vs(this,on.leave,po({}),t);return r.receive("ok",()=>e()).receive("timeout",()=>e()),r.send(),this.canPush()||r.trigger("ok",{}),r}onMessage(t,e,r){return e}isMember(t,e,r,i){return this.topic!==t?!1:i&&i!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:t,event:e,payload:r,joinRef:i}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(t=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Kr.joining,this.joinPush.resend(t))}trigger(t,e,r,i){let n=this.onMessage(t,e,r,i);if(e&&!n)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let a=this.bindings.filter(o=>o.event===t);for(let o=0;o{let c=this.parseJSON(t.responseText);o&&o(c)},a&&(t.ontimeout=a),t.onprogress=()=>{},t.send(i)}static xhrRequest(t,e,r,i,n,a,o,c){t.open(e,r,!0),t.timeout=a,t.setRequestHeader("Content-Type",i),t.onerror=()=>{c&&c(null)},t.onreadystatechange=()=>{if(t.readyState===NI.complete&&c){let m=this.parseJSON(t.responseText);c(m)}},o&&(t.ontimeout=o),t.send(n)}static parseJSON(t){if(!t||t==="")return null;try{return JSON.parse(t)}catch{return console&&console.log("failed to parse JSON response",t),null}}static serialize(t,e){let r=[];for(var i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;let n=e?`${e}[${i}]`:i,a=t[i];typeof a=="object"?r.push(this.serialize(a,n)):r.push(encodeURIComponent(n)+"="+encodeURIComponent(a))}return r.join("&")}static appendParams(t,e){if(Object.keys(e).length===0)return t;let r=t.match(/\?/)?"&":"?";return`${t}${r}${this.serialize(e)}`}},uc=class{constructor(t){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(t),this.readyState=Ni.connecting,this.poll()}normalizeEndpoint(t){return t.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+sc.websocket),"$1/"+sc.longpoll)}endpointURL(){return vo.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(){this.close(),this.readyState=Ni.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry()}poll(){(this.readyState===Ni.open||this.readyState===Ni.connecting)&&vo.request("GET",this.endpointURL(),"application/json",null,this.timeout,this.ontimeout.bind(this),t=>{if(t){var{status:e,token:r,messages:i}=t;this.token=r}else e=0;switch(e){case 200:i.forEach(n=>{setTimeout(()=>{this.onmessage({data:n})},0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Ni.open,this.onopen(),this.poll();break;case 403:this.onerror(),this.close();break;case 0:case 500:this.onerror(),this.closeAndRetry();break;default:throw new Error(`unhandled poll status ${e}`)}})}send(t){vo.request("POST",this.endpointURL(),"application/json",t,this.timeout,this.onerror.bind(this,"timeout"),e=>{(!e||e.status!==200)&&(this.onerror(e&&e.status),this.closeAndRetry())})}close(t,e){this.readyState=Ni.closed,this.onclose()}},co=class{constructor(t,e={}){let r=e.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(r.state,i=>{let{onJoin:n,onLeave:a,onSync:o}=this.caller;this.joinRef=this.channel.joinRef(),this.state=co.syncState(this.state,i,n,a),this.pendingDiffs.forEach(c=>{this.state=co.syncDiff(this.state,c,n,a)}),this.pendingDiffs=[],o()}),this.channel.on(r.diff,i=>{let{onJoin:n,onLeave:a,onSync:o}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(i):(this.state=co.syncDiff(this.state,i,n,a),o())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return co.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,e,r,i){let n=this.clone(t),a={},o={};return this.map(n,(c,m)=>{e[c]||(o[c]=m)}),this.map(e,(c,m)=>{let M=n[c];if(M){let B=m.metas.map(G=>G.phx_ref),R=M.metas.map(G=>G.phx_ref),F=m.metas.filter(G=>R.indexOf(G.phx_ref)<0),N=M.metas.filter(G=>B.indexOf(G.phx_ref)<0);F.length>0&&(a[c]=m,a[c].metas=F),N.length>0&&(o[c]=this.clone(M),o[c].metas=N)}else a[c]=m}),this.syncDiff(n,{joins:a,leaves:o},r,i)}static syncDiff(t,e,r,i){let{joins:n,leaves:a}=this.clone(e);return r||(r=function(){}),i||(i=function(){}),this.map(n,(o,c)=>{let m=t[o];if(t[o]=this.clone(c),m){let M=t[o].metas.map(R=>R.phx_ref),B=m.metas.filter(R=>M.indexOf(R.phx_ref)<0);t[o].metas.unshift(...B)}r(o,m,c)}),this.map(a,(o,c)=>{let m=t[o];if(!m)return;let M=c.metas.map(B=>B.phx_ref);m.metas=m.metas.filter(B=>M.indexOf(B.phx_ref)<0),i(o,m,c),m.metas.length===0&&delete t[o]}),t}static list(t,e){return e||(e=function(r,i){return i}),this.map(t,(r,i)=>e(r,i))}static map(t,e){return Object.getOwnPropertyNames(t).map(r=>e(r,t[r]))}static clone(t){return JSON.parse(JSON.stringify(t))}},lo={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(t,e){if(t.payload.constructor===ArrayBuffer)return e(this.binaryEncode(t));{let r=[t.join_ref,t.ref,t.topic,t.event,t.payload];return e(JSON.stringify(r))}},decode(t,e){if(t.constructor===ArrayBuffer)return e(this.binaryDecode(t));{let[r,i,n,a,o]=JSON.parse(t);return e({join_ref:r,ref:i,topic:n,event:a,payload:o})}},binaryEncode(t){let{join_ref:e,ref:r,event:i,topic:n,payload:a}=t,o=this.META_LENGTH+e.length+r.length+n.length+i.length,c=new ArrayBuffer(this.HEADER_LENGTH+o),m=new DataView(c),M=0;m.setUint8(M++,this.KINDS.push),m.setUint8(M++,e.length),m.setUint8(M++,r.length),m.setUint8(M++,n.length),m.setUint8(M++,i.length),Array.from(e,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(r,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(n,R=>m.setUint8(M++,R.charCodeAt(0))),Array.from(i,R=>m.setUint8(M++,R.charCodeAt(0)));var B=new Uint8Array(c.byteLength+a.byteLength);return B.set(new Uint8Array(c),0),B.set(new Uint8Array(a),c.byteLength),B.buffer},binaryDecode(t){let e=new DataView(t),r=e.getUint8(0),i=new TextDecoder;switch(r){case this.KINDS.push:return this.decodePush(t,e,i);case this.KINDS.reply:return this.decodeReply(t,e,i);case this.KINDS.broadcast:return this.decodeBroadcast(t,e,i)}},decodePush(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=e.getUint8(3),o=this.HEADER_LENGTH+this.META_LENGTH-1,c=r.decode(t.slice(o,o+i));o=o+i;let m=r.decode(t.slice(o,o+n));o=o+n;let M=r.decode(t.slice(o,o+a));o=o+a;let B=t.slice(o,t.byteLength);return{join_ref:c,ref:null,topic:m,event:M,payload:B}},decodeReply(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=e.getUint8(3),o=e.getUint8(4),c=this.HEADER_LENGTH+this.META_LENGTH,m=r.decode(t.slice(c,c+i));c=c+i;let M=r.decode(t.slice(c,c+n));c=c+n;let B=r.decode(t.slice(c,c+a));c=c+a;let R=r.decode(t.slice(c,c+o));c=c+o;let F=t.slice(c,t.byteLength),N={status:R,response:F};return{join_ref:m,ref:M,topic:B,event:on.reply,payload:N}},decodeBroadcast(t,e,r){let i=e.getUint8(1),n=e.getUint8(2),a=this.HEADER_LENGTH+2,o=r.decode(t.slice(a,a+i));a=a+i;let c=r.decode(t.slice(a,a+n));a=a+n;let m=t.slice(a,t.byteLength);return{join_ref:null,ref:null,topic:o,event:c,payload:m}}},QI=class{constructor(t,e={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=e.timeout||FI,this.transport=e.transport||$s.WebSocket||uc,this.establishedConnections=0,this.defaultEncoder=lo.encode.bind(lo),this.defaultDecoder=lo.decode.bind(lo),this.closeWasClean=!1,this.binaryType=e.binaryType||"arraybuffer",this.connectClock=1,this.transport!==uc?(this.encode=e.encode||this.defaultEncoder,this.decode=e.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let r=null;ho&&ho.addEventListener&&(ho.addEventListener("pagehide",i=>{this.conn&&(this.disconnect(),r=this.connectClock)}),ho.addEventListener("pageshow",i=>{r===this.connectClock&&(r=null,this.connect())})),this.heartbeatIntervalMs=e.heartbeatIntervalMs||3e4,this.rejoinAfterMs=i=>e.rejoinAfterMs?e.rejoinAfterMs(i):[1e3,2e3,5e3][i-1]||1e4,this.reconnectAfterMs=i=>e.reconnectAfterMs?e.reconnectAfterMs(i):[10,50,100,150,200,250,500,1e3,2e3][i-1]||5e3,this.logger=e.logger||null,this.longpollerTimeout=e.longpollerTimeout||2e4,this.params=po(e.params||{}),this.endPoint=`${t}/${sc.websocket}`,this.vsn=e.vsn||kI,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new Jv(()=>{this.teardown(()=>this.connect())},this.reconnectAfterMs)}replaceTransport(t){this.disconnect(),this.transport=t}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let t=vo.appendParams(vo.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return t.charAt(0)!=="/"?t:t.charAt(1)==="/"?`${this.protocol()}:${t}`:`${this.protocol()}://${location.host}${t}`}disconnect(t,e,r){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(t,e,r)}connect(t){this.connectClock++,t&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=po(t)),!this.conn&&(this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(t,e,r){this.logger(t,e,r)}hasLogger(){return this.logger!==null}onOpen(t){let e=this.makeRef();return this.stateChangeCallbacks.open.push([e,t]),e}onClose(t){let e=this.makeRef();return this.stateChangeCallbacks.close.push([e,t]),e}onError(t){let e=this.makeRef();return this.stateChangeCallbacks.error.push([e,t]),e}onMessage(t){let e=this.makeRef();return this.stateChangeCallbacks.message.push([e,t]),e}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach(([,t])=>t())}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.abnormalClose("heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,clearTimeout(this.heartbeatTimer),setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(t,e,r){if(!this.conn)return t&&t();this.waitForBufferDone(()=>{this.conn&&(e?this.conn.close(e,r||""):this.conn.close()),this.waitForSocketClosed(()=>{this.conn&&(this.conn.onclose=function(){},this.conn=null),t&&t()})})}waitForBufferDone(t,e=1){if(e===5||!this.conn||!this.conn.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(t,e+1)},150*e)}waitForSocketClosed(t,e=1){if(e===5||!this.conn||this.conn.readyState===Ni.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(t,e+1)},150*e)}onConnClose(t){let e=t&&t.code;this.hasLogger()&&this.log("transport","close",t),this.triggerChanError(),clearTimeout(this.heartbeatTimer),!this.closeWasClean&&e!==1e3&&this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(([,r])=>r(t))}onConnError(t){this.hasLogger()&&this.log("transport",t);let e=this.transport,r=this.establishedConnections;this.stateChangeCallbacks.error.forEach(([,i])=>{i(t,e,r)}),(e===this.transport||r>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(on.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case Ni.connecting:return"connecting";case Ni.open:return"open";case Ni.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(t){this.off(t.stateChangeRefs),this.channels=this.channels.filter(e=>e.joinRef()!==t.joinRef())}off(t){for(let e in this.stateChangeCallbacks)this.stateChangeCallbacks[e]=this.stateChangeCallbacks[e].filter(([r])=>t.indexOf(r)===-1)}channel(t,e={}){let r=new Xv(t,e,this);return this.channels.push(r),r}push(t){if(this.hasLogger()){let{topic:e,event:r,payload:i,ref:n,join_ref:a}=t;this.log("push",`${e} ${r} (${a}, ${n})`,i)}this.isConnected()?this.encode(t,e=>this.conn.send(e)):this.sendBuffer.push(()=>this.encode(t,e=>this.conn.send(e)))}makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs))}abnormalClose(t){this.closeWasClean=!1,this.isConnected()&&this.conn.close(LI,t)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}onConnMessage(t){this.decode(t.data,e=>{let{topic:r,event:i,payload:n,ref:a,join_ref:o}=e;a&&a===this.pendingHeartbeatRef&&(clearTimeout(this.heartbeatTimer),this.pendingHeartbeatRef=null,setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${n.status||""} ${r} ${i} ${a&&"("+a+")"||""}`,n);for(let c=0;cr.topic===t&&(r.isJoined()||r.isJoining()));e&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${t}"`),e.leave())}}});var t2=P((zj,e2)=>{g();var ha=null;typeof WebSocket<"u"?ha=WebSocket:typeof MozWebSocket<"u"?ha=MozWebSocket:typeof global<"u"?ha=global.WebSocket||global.MozWebSocket:typeof window<"u"?ha=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(ha=self.WebSocket||self.MozWebSocket);e2.exports=ha});var Dn=P((Yj,r2)=>{g();var KI=r2.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=KI)});var Ws=P(($j,i2)=>{g();var jI=i2.exports={version:"2.6.0"};typeof __e=="number"&&(__e=jI)});var vf=P((Jj,n2)=>{g();n2.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var ca=P((Zj,f2)=>{g();var HI=vf();f2.exports=function(t){if(!HI(t))throw TypeError(t+" is not an object!");return t}});var bo=P((tH,a2)=>{g();a2.exports=function(t){try{return!!t()}catch{return!0}}});var da=P((iH,o2)=>{g();o2.exports=!bo()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var dc=P((fH,u2)=>{g();var s2=vf(),cc=Dn().document,zI=s2(cc)&&s2(cc.createElement);u2.exports=function(t){return zI?cc.createElement(t):{}}});var c2=P((oH,h2)=>{g();h2.exports=!da()&&!bo()(function(){return Object.defineProperty(dc()("div"),"a",{get:function(){return 7}}).a!=7})});var l2=P((uH,d2)=>{g();var Js=vf();d2.exports=function(t,e){if(!Js(t))return t;var r,i;if(e&&typeof(r=t.toString)=="function"&&!Js(i=r.call(t))||typeof(r=t.valueOf)=="function"&&!Js(i=r.call(t))||!e&&typeof(r=t.toString)=="function"&&!Js(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}});var go=P(v2=>{g();var p2=ca(),GI=c2(),YI=l2(),VI=Object.defineProperty;v2.f=da()?Object.defineProperty:function(e,r,i){if(p2(e),r=YI(r,!0),p2(i),GI)try{return VI(e,r,i)}catch{}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[r]=i.value),e}});var lc=P((lH,b2)=>{g();b2.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var Pn=P((vH,g2)=>{g();var $I=go(),WI=lc();g2.exports=da()?function(t,e,r){return $I.f(t,e,WI(1,r))}:function(t,e,r){return t[e]=r,t}});var yo=P((gH,y2)=>{g();var JI={}.hasOwnProperty;y2.exports=function(t,e){return JI.call(t,e)}});var Xs=P((mH,m2)=>{g();var XI=0,ZI=Math.random();m2.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++XI+ZI).toString(36))}});var mo=P((wH,w2)=>{g();var eE=Dn(),Zs=Pn(),x2=yo(),pc=Xs()("src"),vc="toString",bc=Function[vc],tE=(""+bc).split(vc);Ws().inspectSource=function(t){return bc.call(t)};(w2.exports=function(t,e,r,i){var n=typeof r=="function";n&&(x2(r,"name")||Zs(r,"name",e)),t[e]!==r&&(n&&(x2(r,pc)||Zs(r,pc,t[e]?""+t[e]:tE.join(String(e)))),t===eE?t[e]=r:i?t[e]?t[e]=r:Zs(t,e,r):(delete t[e],Zs(t,e,r)))})(Function.prototype,vc,function(){return typeof this=="function"&&this[pc]||bc.call(this)})});var gc=P((_H,A2)=>{g();A2.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var yc=P((EH,_2)=>{g();var rE=gc();_2.exports=function(t,e,r){if(rE(t),e===void 0)return t;switch(r){case 1:return function(i){return t.call(e,i)};case 2:return function(i,n){return t.call(e,i,n)};case 3:return function(i,n,a){return t.call(e,i,n,a)}}return function(){return t.apply(e,arguments)}}});var Jr=P((SH,E2)=>{g();var la=Dn(),e0=Ws(),iE=Pn(),nE=mo(),I2=yc(),mc="prototype",qr=function(t,e,r){var i=t&qr.F,n=t&qr.G,a=t&qr.S,o=t&qr.P,c=t&qr.B,m=n?la:a?la[e]||(la[e]={}):(la[e]||{})[mc],M=n?e0:e0[e]||(e0[e]={}),B=M[mc]||(M[mc]={}),R,F,N,G;n&&(r=e);for(R in r)F=!i&&m&&m[R]!==void 0,N=(F?m:r)[R],G=c&&F?I2(N,la):o&&typeof N=="function"?I2(Function.call,N):N,m&&nE(m,R,N,t&qr.U),M[R]!=N&&iE(M,R,G),o&&B[R]!=N&&(B[R]=N)};la.core=e0;qr.F=1;qr.G=2;qr.S=4;qr.P=8;qr.B=16;qr.W=32;qr.U=64;qr.R=128;E2.exports=qr});var xo=P((BH,M2)=>{g();var fE={}.toString;M2.exports=function(t){return fE.call(t).slice(8,-1)}});var xc=P((RH,S2)=>{g();var aE=xo();S2.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return aE(t)=="String"?t.split(""):Object(t)}});var pa=P((OH,C2)=>{g();C2.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var wc=P((PH,B2)=>{g();var oE=pa();B2.exports=function(t){return Object(oE(t))}});var t0=P((kH,q2)=>{g();var sE=Math.ceil,uE=Math.floor;q2.exports=function(t){return isNaN(t=+t)?0:(t>0?uE:sE)(t)}});var r0=P((LH,R2)=>{g();var hE=t0(),cE=Math.min;R2.exports=function(t){return t>0?cE(hE(t),9007199254740991):0}});var O2=P((QH,T2)=>{g();var dE=xo();T2.exports=Array.isArray||function(e){return dE(e)=="Array"}});var Ac=P((jH,D2)=>{g();D2.exports=!1});var _c=P((zH,F2)=>{g();var lE=Ws(),P2=Dn(),U2="__core-js_shared__",k2=P2[U2]||(P2[U2]={});(F2.exports=function(t,e){return k2[t]||(k2[t]=e!==void 0?e:{})})("versions",[]).push({version:lE.version,mode:Ac()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var gi=P((YH,N2)=>{g();var Ic=_c()("wks"),pE=Xs(),Ec=Dn().Symbol,L2=typeof Ec=="function",vE=N2.exports=function(t){return Ic[t]||(Ic[t]=L2&&Ec[t]||(L2?Ec:pE)("Symbol."+t))};vE.store=Ic});var j2=P(($H,K2)=>{g();var bE=vf(),Q2=O2(),gE=gi()("species");K2.exports=function(t){var e;return Q2(t)&&(e=t.constructor,typeof e=="function"&&(e===Array||Q2(e.prototype))&&(e=void 0),bE(e)&&(e=e[gE],e===null&&(e=void 0))),e===void 0?Array:e}});var z2=P((JH,H2)=>{g();var yE=j2();H2.exports=function(t,e){return new(yE(t))(e)}});var va=P((ZH,G2)=>{g();var mE=yc(),xE=xc(),wE=wc(),AE=r0(),_E=z2();G2.exports=function(t,e){var r=t==1,i=t==2,n=t==3,a=t==4,o=t==6,c=t==5||o,m=e||_E;return function(M,B,R){for(var F=wE(M),N=xE(F),G=mE(B,R,3),Z=AE(N.length),ie=0,fe=r?m(M,Z):i?m(M,0):void 0,ce,ge;Z>ie;ie++)if((c||ie in N)&&(ce=N[ie],ge=G(ce,ie,F),t)){if(r)fe[ie]=ge;else if(ge)switch(t){case 3:return!0;case 5:return ce;case 6:return ie;case 2:fe.push(ce)}else if(a)return!1}return o?-1:n||a?a:fe}}});var wo=P((tz,Y2)=>{g();var Mc=gi()("unscopables"),Sc=Array.prototype;Sc[Mc]==null&&Pn()(Sc,Mc,{});Y2.exports=function(t){Sc[Mc][t]=!0}});var $2=P(()=>{"use strict";g();var Cc=Jr(),IE=va()(6),Bc="findIndex",V2=!0;Bc in[]&&Array(1)[Bc](function(){V2=!1});Cc(Cc.P+Cc.F*V2,"Array",{findIndex:function(e){return IE(this,e,arguments.length>1?arguments[1]:void 0)}});wo()(Bc)});var J2=P(()=>{"use strict";g();var qc=Jr(),EE=va()(5),Rc="find",W2=!0;Rc in[]&&Array(1)[Rc](function(){W2=!1});qc(qc.P+qc.F*W2,"Array",{find:function(e){return EE(this,e,arguments.length>1?arguments[1]:void 0)}});wo()(Rc)});var eb=P(()=>{g();var ME=go().f,X2=Function.prototype,SE=/^\s*function ([^ (]*)/,Z2="name";Z2 in X2||da()&&ME(X2,Z2,{configurable:!0,get:function(){try{return(""+this).match(SE)[1]}catch{return""}}})});var Oc=P(Tc=>{"use strict";g();Tc.__esModule=!0;Tc.default=function(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}});var rb=P(Un=>{"use strict";g();Object.defineProperty(Un,"__esModule",{value:!0});Un.flip=CE;Un.constant=BE;Un.on=qE;Un.compose=RE;Un.pipe=TE;Un.curry=OE;function CE(t){return function(e,r){return t(r,e)}}function BE(t){return function(){return t}}function qE(t,e){return function(r,i){return t(e(r),e(i))}}function RE(){for(var t=this,e=arguments.length,r=Array(e),i=0;i-1;c--)o=r[c].call(t,o);return o}}function TE(){for(var t=this,e=arguments.length,r=Array(e),i=0;i=e?t.apply(this,i):tb(t,e,i)}}function OE(t){return tb(t,t.length,[])}});var i0=P((bz,ib)=>{g();var DE=Math.ceil,PE=Math.floor;ib.exports=function(t){return isNaN(t=+t)?0:(t>0?PE:DE)(t)}});var n0=P((yz,nb)=>{g();nb.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var ab=P((xz,fb)=>{g();var UE=i0(),kE=n0();fb.exports=function(t){return function(e,r){var i=String(kE(e)),n=UE(r),a=i.length,o,c;return n<0||n>=a?t?"":void 0:(o=i.charCodeAt(n),o<55296||o>56319||n+1===a||(c=i.charCodeAt(n+1))<56320||c>57343?t?i.charAt(n):o:t?i.slice(n,n+2):(o-55296<<10)+(c-56320)+65536)}}});var Ao=P((Az,ob)=>{g();ob.exports=!0});var sn=P((Iz,sb)=>{g();var FE=sb.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=FE)});var Rr=P((Mz,ub)=>{g();var LE=ub.exports={version:"2.6.0"};typeof __e=="number"&&(__e=LE)});var cb=P((Cz,hb)=>{g();hb.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}});var Dc=P((qz,db)=>{g();var NE=cb();db.exports=function(t,e,r){if(NE(t),e===void 0)return t;switch(r){case 1:return function(i){return t.call(e,i)};case 2:return function(i,n){return t.call(e,i,n)};case 3:return function(i,n,a){return t.call(e,i,n,a)}}return function(){return t.apply(e,arguments)}}});var bf=P((Tz,lb)=>{g();lb.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var gf=P((Dz,pb)=>{g();var QE=bf();pb.exports=function(t){if(!QE(t))throw TypeError(t+" is not an object!");return t}});var yf=P((Uz,vb)=>{g();vb.exports=function(t){try{return!!t()}catch{return!0}}});var kn=P((Fz,bb)=>{g();bb.exports=!yf()(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})});var Uc=P((Nz,yb)=>{g();var gb=bf(),Pc=sn().document,KE=gb(Pc)&&gb(Pc.createElement);yb.exports=function(t){return KE?Pc.createElement(t):{}}});var kc=P((Kz,mb)=>{g();mb.exports=!kn()&&!yf()(function(){return Object.defineProperty(Uc()("div"),"a",{get:function(){return 7}}).a!=7})});var a0=P((Hz,xb)=>{g();var f0=bf();xb.exports=function(t,e){if(!f0(t))return t;var r,i;if(e&&typeof(r=t.toString)=="function"&&!f0(i=r.call(t))||typeof(r=t.valueOf)=="function"&&!f0(i=r.call(t))||!e&&typeof(r=t.toString)=="function"&&!f0(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}});var un=P(Ab=>{g();var wb=gf(),jE=kc(),HE=a0(),zE=Object.defineProperty;Ab.f=kn()?Object.defineProperty:function(e,r,i){if(wb(e),r=HE(r,!0),wb(i),jE)try{return zE(e,r,i)}catch{}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[r]=i.value),e}});var ba=P((Vz,_b)=>{g();_b.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var mf=P((Wz,Ib)=>{g();var GE=un(),YE=ba();Ib.exports=kn()?function(t,e,r){return GE.f(t,e,YE(1,r))}:function(t,e,r){return t[e]=r,t}});var Fn=P((Xz,Eb)=>{g();var VE={}.hasOwnProperty;Eb.exports=function(t,e){return VE.call(t,e)}});var hn=P((eG,Sb)=>{g();var o0=sn(),Fc=Rr(),Mb=Dc(),$E=mf(),WE=Fn(),s0="prototype",Ar=function(t,e,r){var i=t&Ar.F,n=t&Ar.G,a=t&Ar.S,o=t&Ar.P,c=t&Ar.B,m=t&Ar.W,M=n?Fc:Fc[e]||(Fc[e]={}),B=M[s0],R=n?o0:a?o0[e]:(o0[e]||{})[s0],F,N,G;n&&(r=e);for(F in r)N=!i&&R&&R[F]!==void 0,!(N&&WE(M,F))&&(G=N?R[F]:r[F],M[F]=n&&typeof R[F]!="function"?r[F]:c&&N?Mb(G,o0):m&&R[F]==G?function(Z){var ie=function(fe,ce,ge){if(this instanceof Z){switch(arguments.length){case 0:return new Z;case 1:return new Z(fe);case 2:return new Z(fe,ce)}return new Z(fe,ce,ge)}return Z.apply(this,arguments)};return ie[s0]=Z[s0],ie}(G):o&&typeof G=="function"?Mb(Function.call,G):G,o&&((M.virtual||(M.virtual={}))[F]=G,t&Ar.R&&B&&!B[F]&&$E(B,F,G)))};Ar.F=1;Ar.G=2;Ar.S=4;Ar.P=8;Ar.B=16;Ar.W=32;Ar.U=64;Ar.R=128;Sb.exports=Ar});var Lc=P((rG,Cb)=>{g();Cb.exports=mf()});var xf=P((nG,Bb)=>{g();Bb.exports={}});var u0=P((aG,qb)=>{g();var JE={}.toString;qb.exports=function(t){return JE.call(t).slice(8,-1)}});var Nc=P((sG,Rb)=>{g();var XE=u0();Rb.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return XE(t)=="String"?t.split(""):Object(t)}});var Ln=P((hG,Tb)=>{g();var ZE=Nc(),eM=n0();Tb.exports=function(t){return ZE(eM(t))}});var Qc=P((dG,Ob)=>{g();var tM=i0(),rM=Math.min;Ob.exports=function(t){return t>0?rM(tM(t),9007199254740991):0}});var Pb=P((pG,Db)=>{g();var iM=i0(),nM=Math.max,fM=Math.min;Db.exports=function(t,e){return t=iM(t),t<0?nM(t+e,0):fM(t,e)}});var kb=P((bG,Ub)=>{g();var aM=Ln(),oM=Qc(),sM=Pb();Ub.exports=function(t){return function(e,r,i){var n=aM(e),a=oM(n.length),o=sM(i,a),c;if(t&&r!=r){for(;a>o;)if(c=n[o++],c!=c)return!0}else for(;a>o;o++)if((t||o in n)&&n[o]===r)return t||o||0;return!t&&-1}}});var h0=P((yG,Qb)=>{g();var uM=Rr(),Fb=sn(),Lb="__core-js_shared__",Nb=Fb[Lb]||(Fb[Lb]={});(Qb.exports=function(t,e){return Nb[t]||(Nb[t]=e!==void 0?e:{})})("versions",[]).push({version:uM.version,mode:Ao()?"pure":"global",copyright:"\xA9 2018 Denis Pushkarev (zloirock.ru)"})});var _o=P((xG,Kb)=>{g();var hM=0,cM=Math.random();Kb.exports=function(t){return"Symbol(".concat(t===void 0?"":t,")_",(++hM+cM).toString(36))}});var c0=P((AG,Hb)=>{g();var jb=h0()("keys"),dM=_o();Hb.exports=function(t){return jb[t]||(jb[t]=dM(t))}});var Kc=P((IG,Gb)=>{g();var zb=Fn(),lM=Ln(),pM=kb()(!1),vM=c0()("IE_PROTO");Gb.exports=function(t,e){var r=lM(t),i=0,n=[],a;for(a in r)a!=vM&&zb(r,a)&&n.push(a);for(;e.length>i;)zb(r,a=e[i++])&&(~pM(n,a)||n.push(a));return n}});var d0=P((MG,Yb)=>{g();Yb.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var wf=P((CG,Vb)=>{g();var bM=Kc(),gM=d0();Vb.exports=Object.keys||function(e){return bM(e,gM)}});var Wb=P((qG,$b)=>{g();var yM=un(),mM=gf(),xM=wf();$b.exports=kn()?Object.defineProperties:function(e,r){mM(e);for(var i=xM(r),n=i.length,a=0,o;n>a;)yM.f(e,o=i[a++],r[o]);return e}});var Zb=P((TG,Xb)=>{g();var Jb=sn().document;Xb.exports=Jb&&Jb.documentElement});var zc=P((DG,t6)=>{g();var wM=gf(),AM=Wb(),e6=d0(),_M=c0()("IE_PROTO"),jc=function(){},Hc="prototype",l0=function(){var t=Uc()("iframe"),e=e6.length,r="<",i=">",n;for(t.style.display="none",Zb().appendChild(t),t.src="javascript:",n=t.contentWindow.document,n.open(),n.write(r+"script"+i+"document.F=Object"+r+"/script"+i),n.close(),l0=n.F;e--;)delete l0[Hc][e6[e]];return l0()};t6.exports=Object.create||function(e,r){var i;return e!==null?(jc[Hc]=wM(e),i=new jc,jc[Hc]=null,i[_M]=e):i=l0(),r===void 0?i:AM(i,r)}});var Xr=P((UG,i6)=>{g();var Gc=h0()("wks"),IM=_o(),Yc=sn().Symbol,r6=typeof Yc=="function",EM=i6.exports=function(t){return Gc[t]||(Gc[t]=r6&&Yc[t]||(r6?Yc:IM)("Symbol."+t))};EM.store=Gc});var p0=P((FG,f6)=>{g();var MM=un().f,SM=Fn(),n6=Xr()("toStringTag");f6.exports=function(t,e,r){t&&!SM(t=r?t:t.prototype,n6)&&MM(t,n6,{configurable:!0,value:e})}});var s6=P((NG,o6)=>{"use strict";g();var CM=zc(),BM=ba(),qM=p0(),a6={};mf()(a6,Xr()("iterator"),function(){return this});o6.exports=function(t,e,r){t.prototype=CM(a6,{next:BM(1,r)}),qM(t,e+" Iterator")}});var Io=P((KG,u6)=>{g();var RM=n0();u6.exports=function(t){return Object(RM(t))}});var d6=P((HG,c6)=>{g();var TM=Fn(),OM=Io(),h6=c0()("IE_PROTO"),DM=Object.prototype;c6.exports=Object.getPrototypeOf||function(t){return t=OM(t),TM(t,h6)?t[h6]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?DM:null}});var Wc=P((GG,y6)=>{"use strict";g();var l6=Ao(),Vc=hn(),PM=Lc(),p6=mf(),v6=xf(),UM=s6(),kM=p0(),FM=d6(),Eo=Xr()("iterator"),$c=!([].keys&&"next"in[].keys()),LM="@@iterator",b6="keys",v0="values",g6=function(){return this};y6.exports=function(t,e,r,i,n,a,o){UM(r,e,i);var c=function(ge){if(!$c&&ge in R)return R[ge];switch(ge){case b6:return function(){return new r(this,ge)};case v0:return function(){return new r(this,ge)}}return function(){return new r(this,ge)}},m=e+" Iterator",M=n==v0,B=!1,R=t.prototype,F=R[Eo]||R[LM]||n&&R[n],N=F||c(n),G=n?M?c("entries"):N:void 0,Z=e=="Array"&&R.entries||F,ie,fe,ce;if(Z&&(ce=FM(Z.call(new t)),ce!==Object.prototype&&ce.next&&(kM(ce,m,!0),!l6&&typeof ce[Eo]!="function"&&p6(ce,Eo,g6))),M&&F&&F.name!==v0&&(B=!0,N=function(){return F.call(this)}),(!l6||o)&&($c||B||!R[Eo])&&p6(R,Eo,N),v6[e]=N,v6[m]=g6,n)if(ie={values:M?N:c(v0),keys:a?N:c(b6),entries:G},o)for(fe in ie)fe in R||PM(R,fe,ie[fe]);else Vc(Vc.P+Vc.F*($c||B),e,ie);return ie}});var Mo=P(()=>{"use strict";g();var NM=ab()(!0);Wc()(String,"String",function(t){this._t=String(t),this._i=0},function(){var t=this._t,e=this._i,r;return e>=t.length?{value:void 0,done:!0}:(r=NM(t,e),this._i+=r.length,{value:r,done:!1})})});var x6=P((JG,m6)=>{g();m6.exports=function(){}});var A6=P((ZG,w6)=>{g();w6.exports=function(t,e){return{value:e,done:!!t}}});var E6=P((tY,I6)=>{"use strict";g();var Jc=x6(),b0=A6(),_6=xf(),QM=Ln();I6.exports=Wc()(Array,"Array",function(t,e){this._t=QM(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,b0(1)):e=="keys"?b0(0,r):e=="values"?b0(0,t[r]):b0(0,[r,t[r]])},"values");_6.Arguments=_6.Array;Jc("keys");Jc("values");Jc("entries")});var x0=P(()=>{g();E6();var KM=sn(),jM=mf(),M6=xf(),S6=Xr()("toStringTag"),C6="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(g0=0;g0{g();B6.f=Xr()});var R6=P((sY,q6)=>{g();Mo();x0();q6.exports=w0().f("iterator")});var O6=P((hY,T6)=>{g();T6.exports={default:R6(),__esModule:!0}});var P6=P((dY,D6)=>{g();var Af=_o()("meta"),HM=bf(),Zc=Fn(),zM=un().f,GM=0,A0=Object.isExtensible||function(){return!0},YM=!yf()(function(){return A0(Object.preventExtensions({}))}),ed=function(t){zM(t,Af,{value:{i:"O"+ ++GM,w:{}}})},VM=function(t,e){if(!HM(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!Zc(t,Af)){if(!A0(t))return"F";if(!e)return"E";ed(t)}return t[Af].i},$M=function(t,e){if(!Zc(t,Af)){if(!A0(t))return!0;if(!e)return!1;ed(t)}return t[Af].w},WM=function(t){return YM&&JM.NEED&&A0(t)&&!Zc(t,Af)&&ed(t),t},JM=D6.exports={KEY:Af,NEED:!1,fastKey:VM,getWeak:$M,onFreeze:WM}});var _0=P((pY,k6)=>{g();var XM=sn(),U6=Rr(),ZM=Ao(),eS=w0(),tS=un().f;k6.exports=function(t){var e=U6.Symbol||(U6.Symbol=ZM?{}:XM.Symbol||{});t.charAt(0)!="_"&&!(t in e)&&tS(e,t,{value:eS.f(t)})}});var I0=P(F6=>{g();F6.f=Object.getOwnPropertySymbols});var ga=P(L6=>{g();L6.f={}.propertyIsEnumerable});var Q6=P((xY,N6)=>{g();var rS=wf(),iS=I0(),nS=ga();N6.exports=function(t){var e=rS(t),r=iS.f;if(r)for(var i=r(t),n=nS.f,a=0,o;i.length>a;)n.call(t,o=i[a++])&&e.push(o);return e}});var j6=P((AY,K6)=>{g();var fS=u0();K6.exports=Array.isArray||function(e){return fS(e)=="Array"}});var td=P(H6=>{g();var aS=Kc(),oS=d0().concat("length","prototype");H6.f=Object.getOwnPropertyNames||function(e){return aS(e,oS)}});var V6=P((MY,Y6)=>{g();var sS=Ln(),z6=td().f,uS={}.toString,G6=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],hS=function(t){try{return z6(t)}catch{return G6.slice()}};Y6.exports.f=function(e){return G6&&uS.call(e)=="[object Window]"?hS(e):z6(sS(e))}});var J6=P(W6=>{g();var cS=ga(),dS=ba(),lS=Ln(),pS=a0(),vS=Fn(),bS=kc(),$6=Object.getOwnPropertyDescriptor;W6.f=kn()?$6:function(e,r){if(e=lS(e),r=pS(r,!0),bS)try{return $6(e,r)}catch{}if(vS(e,r))return dS(!cS.f.call(e,r),e[r])}});var d3=P(()=>{"use strict";g();var S0=sn(),hr=Fn(),od=kn(),jr=hn(),X6=Lc(),gS=P6().KEY,r3=yf(),ld=h0(),pd=p0(),yS=_o(),Bo=Xr(),mS=w0(),xS=_0(),wS=Q6(),AS=j6(),sd=gf(),_S=bf(),C0=Ln(),vd=a0(),ud=ba(),Co=zc(),i3=V6(),n3=J6(),f3=un(),IS=wf(),a3=n3.f,_f=f3.f,o3=i3.f,Pr=S0.Symbol,M0=S0.JSON,E0=M0&&M0.stringify,Nn="prototype",Dr=Bo("_hidden"),Z6=Bo("toPrimitive"),ES={}.propertyIsEnumerable,So=ld("symbol-registry"),cn=ld("symbols"),qo=ld("op-symbols"),Zr=Object[Nn],ya=typeof Pr=="function",rd=S0.QObject,hd=!rd||!rd[Nn]||!rd[Nn].findChild,cd=od&&r3(function(){return Co(_f({},"a",{get:function(){return _f(this,"a",{value:7}).a}})).a!=7})?function(t,e,r){var i=a3(Zr,e);i&&delete Zr[e],_f(t,e,r),i&&t!==Zr&&_f(Zr,e,i)}:_f,e3=function(t){var e=cn[t]=Co(Pr[Nn]);return e._k=t,e},dd=ya&&typeof Pr.iterator=="symbol"?function(t){return typeof t=="symbol"}:function(t){return t instanceof Pr},B0=function(e,r,i){return e===Zr&&B0(qo,r,i),sd(e),r=vd(r,!0),sd(i),hr(cn,r)?(i.enumerable?(hr(e,Dr)&&e[Dr][r]&&(e[Dr][r]=!1),i=Co(i,{enumerable:ud(0,!1)})):(hr(e,Dr)||_f(e,Dr,ud(1,{})),e[Dr][r]=!0),cd(e,r,i)):_f(e,r,i)},s3=function(e,r){sd(e);for(var i=wS(r=C0(r)),n=0,a=i.length,o;a>n;)B0(e,o=i[n++],r[o]);return e},MS=function(e,r){return r===void 0?Co(e):s3(Co(e),r)},t3=function(e){var r=ES.call(this,e=vd(e,!0));return this===Zr&&hr(cn,e)&&!hr(qo,e)?!1:r||!hr(this,e)||!hr(cn,e)||hr(this,Dr)&&this[Dr][e]?r:!0},u3=function(e,r){if(e=C0(e),r=vd(r,!0),!(e===Zr&&hr(cn,r)&&!hr(qo,r))){var i=a3(e,r);return i&&hr(cn,r)&&!(hr(e,Dr)&&e[Dr][r])&&(i.enumerable=!0),i}},h3=function(e){for(var r=o3(C0(e)),i=[],n=0,a;r.length>n;)!hr(cn,a=r[n++])&&a!=Dr&&a!=gS&&i.push(a);return i},c3=function(e){for(var r=e===Zr,i=o3(r?qo:C0(e)),n=[],a=0,o;i.length>a;)hr(cn,o=i[a++])&&(r?hr(Zr,o):!0)&&n.push(cn[o]);return n};ya||(Pr=function(){if(this instanceof Pr)throw TypeError("Symbol is not a constructor!");var e=yS(arguments.length>0?arguments[0]:void 0),r=function(i){this===Zr&&r.call(qo,i),hr(this,Dr)&&hr(this[Dr],e)&&(this[Dr][e]=!1),cd(this,e,ud(1,i))};return od&&hd&&cd(Zr,e,{configurable:!0,set:r}),e3(e)},X6(Pr[Nn],"toString",function(){return this._k}),n3.f=u3,f3.f=B0,td().f=i3.f=h3,ga().f=t3,I0().f=c3,od&&!Ao()&&X6(Zr,"propertyIsEnumerable",t3,!0),mS.f=function(t){return e3(Bo(t))});jr(jr.G+jr.W+jr.F*!ya,{Symbol:Pr});for(id="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nd=0;id.length>nd;)Bo(id[nd++]);var id,nd;for(fd=IS(Bo.store),ad=0;fd.length>ad;)xS(fd[ad++]);var fd,ad;jr(jr.S+jr.F*!ya,"Symbol",{for:function(t){return hr(So,t+="")?So[t]:So[t]=Pr(t)},keyFor:function(e){if(!dd(e))throw TypeError(e+" is not a symbol!");for(var r in So)if(So[r]===e)return r},useSetter:function(){hd=!0},useSimple:function(){hd=!1}});jr(jr.S+jr.F*!ya,"Object",{create:MS,defineProperty:B0,defineProperties:s3,getOwnPropertyDescriptor:u3,getOwnPropertyNames:h3,getOwnPropertySymbols:c3});M0&&jr(jr.S+jr.F*(!ya||r3(function(){var t=Pr();return E0([t])!="[null]"||E0({a:t})!="{}"||E0(Object(t))!="{}"})),"JSON",{stringify:function(e){for(var r=[e],i=1,n,a;arguments.length>i;)r.push(arguments[i++]);if(a=n=r[1],!(!_S(n)&&e===void 0||dd(e)))return AS(n)||(n=function(o,c){if(typeof a=="function"&&(c=a.call(this,o,c)),!dd(c))return c}),r[1]=n,E0.apply(M0,r)}});Pr[Nn][Z6]||mf()(Pr[Nn],Z6,Pr[Nn].valueOf);pd(Pr,"Symbol");pd(Math,"Math",!0);pd(S0.JSON,"JSON",!0)});var l3=P(()=>{g()});var p3=P(()=>{g();_0()("asyncIterator")});var v3=P(()=>{g();_0()("observable")});var g3=P((KY,b3)=>{g();d3();l3();p3();v3();b3.exports=Rr().Symbol});var bd=P((HY,y3)=>{g();y3.exports={default:g3(),__esModule:!0}});var w3=P(yd=>{"use strict";g();yd.__esModule=!0;var SS=O6(),m3=x3(SS),CS=bd(),Qn=x3(CS),gd=typeof Qn.default=="function"&&typeof m3.default=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Qn.default=="function"&&t.constructor===Qn.default&&t!==Qn.default.prototype?"symbol":typeof t};function x3(t){return t&&t.__esModule?t:{default:t}}yd.default=typeof Qn.default=="function"&&gd(m3.default)==="symbol"?function(t){return typeof t>"u"?"undefined":gd(t)}:function(t){return t&&typeof Qn.default=="function"&&t.constructor===Qn.default&&t!==Qn.default.prototype?"symbol":typeof t>"u"?"undefined":gd(t)}});var I3=P((VY,_3)=>{g();var A3=gf();_3.exports=function(t,e,r,i){try{return i?e(A3(r)[0],r[1]):e(r)}catch(a){var n=t.return;throw n!==void 0&&A3(n.call(t)),a}}});var M3=P((WY,E3)=>{g();var BS=xf(),qS=Xr()("iterator"),RS=Array.prototype;E3.exports=function(t){return t!==void 0&&(BS.Array===t||RS[qS]===t)}});var C3=P((XY,S3)=>{"use strict";g();var TS=un(),OS=ba();S3.exports=function(t,e,r){e in t?TS.f(t,e,OS(0,r)):t[e]=r}});var xd=P((eV,B3)=>{g();var md=u0(),DS=Xr()("toStringTag"),PS=md(function(){return arguments}())=="Arguments",US=function(t,e){try{return t[e]}catch{}};B3.exports=function(t){var e,r,i;return t===void 0?"Undefined":t===null?"Null":typeof(r=US(e=Object(t),DS))=="string"?r:PS?md(e):(i=md(e))=="Object"&&typeof e.callee=="function"?"Arguments":i}});var wd=P((rV,q3)=>{g();var kS=xd(),FS=Xr()("iterator"),LS=xf();q3.exports=Rr().getIteratorMethod=function(t){if(t!=null)return t[FS]||t["@@iterator"]||LS[kS(t)]}});var O3=P((nV,T3)=>{g();var _d=Xr()("iterator"),R3=!1;try{Ad=[7][_d](),Ad.return=function(){R3=!0},Array.from(Ad,function(){throw 2})}catch{}var Ad;T3.exports=function(t,e){if(!e&&!R3)return!1;var r=!1;try{var i=[7],n=i[_d]();n.next=function(){return{done:r=!0}},i[_d]=function(){return n},t(i)}catch{}return r}});var P3=P(()=>{"use strict";g();var NS=Dc(),Id=hn(),QS=Io(),KS=I3(),jS=M3(),HS=Qc(),D3=C3(),zS=wd();Id(Id.S+Id.F*!O3()(function(t){Array.from(t)}),"Array",{from:function(e){var r=QS(e),i=typeof this=="function"?this:Array,n=arguments.length,a=n>1?arguments[1]:void 0,o=a!==void 0,c=0,m=zS(r),M,B,R,F;if(o&&(a=NS(a,n>2?arguments[2]:void 0,2)),m!=null&&!(i==Array&&jS(m)))for(F=m.call(r),B=new i;!(R=F.next()).done;c++)D3(B,c,o?KS(F,a,[R.value,c],!0):R.value);else for(M=HS(r.length),B=new i(M);M>c;c++)D3(B,c,o?a(r[c],c):r[c]);return B.length=c,B}})});var k3=P((uV,U3)=>{g();Mo();P3();U3.exports=Rr().Array.from});var Ed=P((cV,F3)=>{g();F3.exports={default:k3(),__esModule:!0}});var Sd=P(Md=>{"use strict";g();Md.__esModule=!0;var GS=Ed(),YS=VS(GS);function VS(t){return t&&t.__esModule?t:{default:t}}Md.default=function(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e{"use strict";g();Object.defineProperty(Kn,"__esModule",{value:!0});Kn.flip=$S;Kn.constant=WS;Kn.on=JS;Kn.compose=XS;Kn.pipe=ZS;Kn.curry=eC;function $S(t){return function(e,r){return t(r,e)}}function WS(t){return function(){return t}}function JS(t,e){return function(r,i){return t(e(r),e(i))}}function XS(){for(var t=this,e=arguments.length,r=Array(e),i=0;i-1;c--)o=r[c].call(t,o);return o}}function ZS(){for(var t=this,e=arguments.length,r=Array(e),i=0;i=e?t.apply(this,i):L3(t,e,i)}}function eC(t){return L3(t,t.length,[])}});var j3=P((gV,K3)=>{"use strict";g();var Q3=wf(),tC=I0(),rC=ga(),iC=Io(),nC=Nc(),q0=Object.assign;K3.exports=!q0||yf()(function(){var t={},e={},r=Symbol(),i="abcdefghijklmnopqrst";return t[r]=7,i.split("").forEach(function(n){e[n]=n}),q0({},t)[r]!=7||Object.keys(q0({},e)).join("")!=i})?function(e,r){for(var i=iC(e),n=arguments.length,a=1,o=tC.f,c=rC.f;n>a;)for(var m=nC(arguments[a++]),M=o?Q3(m).concat(o(m)):Q3(m),B=M.length,R=0,F;B>R;)c.call(m,F=M[R++])&&(i[F]=m[F]);return i}:q0});var H3=P(()=>{g();var Cd=hn();Cd(Cd.S+Cd.F,"Object",{assign:j3()})});var G3=P((AV,z3)=>{g();H3();z3.exports=Rr().Object.assign});var V3=P((IV,Y3)=>{g();Y3.exports={default:G3(),__esModule:!0}});var qd=P(Bd=>{"use strict";g();Bd.__esModule=!0;var fC=V3(),aC=oC(fC);function oC(t){return t&&t.__esModule?t:{default:t}}Bd.default=aC.default||function(t){for(var e=1;e{g();var Rd=hn(),sC=Rr(),uC=yf();$3.exports=function(t,e){var r=(sC.Object||{})[t]||Object[t],i={};i[t]=e(r),Rd(Rd.S+Rd.F*uC(function(){r(1)}),"Object",i)}});var J3=P(()=>{g();var hC=Io(),cC=wf();W3()("keys",function(){return function(e){return cC(hC(e))}})});var Z3=P((OV,X3)=>{g();J3();X3.exports=Rr().Object.keys});var Td=P((PV,eg)=>{g();eg.exports={default:Z3(),__esModule:!0}});var rg=P((kV,tg)=>{g();var dC=bf(),lC=Math.floor;tg.exports=function(e){return!dC(e)&&isFinite(e)&&lC(e)===e}});var ng=P(()=>{g();var ig=hn();ig(ig.S,"Number",{isInteger:rg()})});var ag=P((KV,fg)=>{g();ng();fg.exports=Rr().Number.isInteger});var sg=P((HV,og)=>{g();og.exports={default:ag(),__esModule:!0}});var Dd=P(Od=>{"use strict";g();Od.__esModule=!0;Od.default=function(t,e){var r={};for(var i in t)e.indexOf(i)>=0||!Object.prototype.hasOwnProperty.call(t,i)||(r[i]=t[i]);return r}});var Pd=P(vr=>{"use strict";g();Object.defineProperty(vr,"__esModule",{value:!0});function If(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var Ur=If(Sd()),ir=If(Oc()),yi=N3(),pC=If(qd()),vC=If(Ed()),dg=If(Td()),bC=If(sg()),gC=If(Dd()),yC=void 0,mC=function(t,e){return ir(this,yC),[].concat(Ur(e),Ur(t))}.bind(void 0),xC=yi.curry(mC),wC=void 0,AC=function(t){return ir(this,wC),Array.isArray(t)?t:[t]}.bind(void 0),_C=void 0,IC=function(t,e){return ir(this,_C),e===t.length-1}.bind(void 0),lg=yi.curry(IC),EC=void 0,MC=function(t,e){return ir(this,EC),lg(t,e)?0:e+1}.bind(void 0),SC=yi.curry(MC),pg=void 0,CC=function(t){return ir(this,pg),Math.max.apply(Math,Ur(dg(t)))+1}.bind(void 0),BC=function(t){return ir(this,pg),vC("length"in t?t:pC({},t,{length:CC(t)}))}.bind(void 0),qC=void 0,RC=function(t,e,r){return ir(this,qC),[].concat(Ur(r.slice(0,t)),Ur(e),Ur(r.slice(t+1)))}.bind(void 0),TC=yi.curry(RC),vg=void 0,OC=function(t,e){return ir(this,vg),bC(t)&&t>=e}.bind(void 0),bg=function(t){return ir(this,vg),OC(Number(t),0)}.bind(void 0),DC=void 0,PC=function(t){var e=t.length,r=gC(t,["length"]);return ir(this,DC),dg(r).every(bg)}.bind(void 0),UC=void 0,kC=function(t,e){return ir(this,UC),[].concat(Ur(t),Ur(e))}.bind(void 0),FC=yi.curry(kC),ug=void 0,LC=function(t,e,r,i){return ir(this,ug),i.reduce(function(n,a,o){return ir(this,ug),t(a,o,n)?e(n,a,o):n}.bind(this),r)}.bind(void 0),NC=yi.curry(LC),hg=void 0,QC=function(t,e,r,i){ir(this,hg);var n=r;return i.every(function(a,o){ir(this,hg);var c=t(a,o,n);return c&&(n=e(n,a,o)),c}.bind(this)),n}.bind(void 0),KC=yi.curry(QC),jC=void 0,HC=function(t,e,r){return ir(this,jC),[].concat(Ur(r.slice(0,t)),Ur(r.slice(t+e)))}.bind(void 0),zC=yi.curry(HC),cg=void 0,GC=function(t,e){return ir(this,cg),[].concat(Ur(Array(t))).map(function(){return ir(this,cg),e}.bind(this))}.bind(void 0),YC=yi.curry(GC),VC=void 0,$C=function(t,e,r){return ir(this,VC),[].concat(Ur(r.slice(0,t)),Ur(e),Ur(r.slice(t+e.length)))}.bind(void 0),WC=yi.curry($C),JC=void 0,XC=function(t,e){return ir(this,JC),e<0?t.length-e:e}.bind(void 0),ZC=yi.curry(XC);vr.append=xC;vr.convertIfNot=AC;vr.cycleNext=SC;vr.fromObject=BC;vr.insert=TC;vr.isKey=bg;vr.isLastIndex=lg;vr.isPossibleFromObject=PC;vr.prepend=FC;vr.reduceIf=NC;vr.reduceWhile=KC;vr.remove=zC;vr.repeat=YC;vr.replace=WC;vr.resolveIndex=ZC});var yg=P((WV,gg)=>{"use strict";g();gg.exports=function t(e,r){if(e===r)return!0;var i=Array.isArray(e),n=Array.isArray(r),a;if(i&&n){if(e.length!=r.length)return!1;for(a=0;a{g();var Ud=hn();Ud(Ud.S+Ud.F*!kn(),"Object",{defineProperty:un().f})});var wg=P((t$,xg)=>{g();mg();var eB=Rr().Object;xg.exports=function(e,r,i){return eB.defineProperty(e,r,i)}});var _g=P((i$,Ag)=>{g();Ag.exports={default:wg(),__esModule:!0}});var Ig=P(kd=>{"use strict";g();kd.__esModule=!0;var tB=_g(),rB=iB(tB);function iB(t){return t&&t.__esModule?t:{default:t}}kd.default=function(t,e,r){return e in t?(0,rB.default)(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}});var Mg=P((o$,Eg)=>{g();var nB=xd(),fB=Xr()("iterator"),aB=xf();Eg.exports=Rr().isIterable=function(t){var e=Object(t);return e[fB]!==void 0||"@@iterator"in e||aB.hasOwnProperty(nB(e))}});var Cg=P((u$,Sg)=>{g();x0();Mo();Sg.exports=Mg()});var qg=P((c$,Bg)=>{g();Bg.exports={default:Cg(),__esModule:!0}});var Tg=P((l$,Rg)=>{g();var oB=gf(),sB=wd();Rg.exports=Rr().getIterator=function(t){var e=sB(t);if(typeof e!="function")throw TypeError(t+" is not iterable!");return oB(e.call(t))}});var Dg=P((v$,Og)=>{g();x0();Mo();Og.exports=Tg()});var Ug=P((g$,Pg)=>{g();Pg.exports={default:Dg(),__esModule:!0}});var Fg=P(Fd=>{"use strict";g();Fd.__esModule=!0;var uB=qg(),hB=kg(uB),cB=Ug(),dB=kg(cB);function kg(t){return t&&t.__esModule?t:{default:t}}Fd.default=function(){function t(e,r){var i=[],n=!0,a=!1,o=void 0;try{for(var c=(0,dB.default)(e),m;!(n=(m=c.next()).done)&&(i.push(m.value),!(r&&i.length===r));n=!0);}catch(M){a=!0,o=M}finally{try{!n&&c.return&&c.return()}finally{if(a)throw o}}return i}return function(e,r){if(Array.isArray(e))return e;if((0,hB.default)(Object(e)))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()});var Ng=P((w$,Lg)=>{g();var lB=wf(),pB=Ln(),vB=ga().f;Lg.exports=function(t){return function(e){for(var r=pB(e),i=lB(r),n=i.length,a=0,o=[],c;n>a;)vB.call(r,c=i[a++])&&o.push(t?[c,r[c]]:r[c]);return o}}});var Kg=P(()=>{g();var Qg=hn(),bB=Ng()(!0);Qg(Qg.S,"Object",{entries:function(e){return bB(e)}})});var Hg=P((M$,jg)=>{g();Kg();jg.exports=Rr().Object.entries});var Gg=P((C$,zg)=>{g();zg.exports={default:Hg(),__esModule:!0}});var uy=P(ar=>{"use strict";g();function xi(t){return t&&typeof t=="object"&&"default"in t?t.default:t}Object.defineProperty(ar,"__esModule",{value:!0});var xt=xi(Oc()),ei=rb(),$g=xi(w3()),Nd=Pd(),gB=xi(Td()),Wg=xi(Sd()),yB=xi(yg()),mB=xi(Ig()),Ro=xi(qd()),xB=xi(Fg()),wB=xi(Gg()),AB=xi(Dd()),_B=xi(bd()),IB=void 0,EB=function(t,e){return xt(this,IB),e[t]}.bind(void 0),Ef=ei.curry(EB),Jg=void 0,MB=function(t){return xt(this,Jg),t!==null&&(t===void 0?"undefined":$g(t))==="object"}.bind(void 0),Xg=function(t){return xt(this,Jg),Array.isArray(t)||MB(t)}.bind(void 0),To=void 0,SB=function(t,e,r){return xt(this,To),Nd.isLastIndex(e,t)?r:Zg(t+1,e,r)}.bind(void 0),CB=function(t,e,r){return xt(this,To),"Expected to find a composite at ["+String(e.join(", "))+"]["+String(t)+"], but instead got: "+(r===void 0?"undefined":$g(r))}.bind(void 0),BB=function(t,e,r){if(xt(this,To),Xg(r))return r;throw new Error(CB(t,e,r))}.bind(void 0),Zg=function(t,e,r){return xt(this,To),r===void 0?void 0:SB(t,e,Ef(e[t],BB(t,e,r)))}.bind(void 0),qB=function(t,e){return xt(this,To),t.length===0?void 0:Zg(0,t,e)}.bind(void 0),ey=ei.curry(qB),RB=void 0,R0=function(t){return xt(this,RB),Array.isArray(t)?[].concat(Wg(t.keys())):gB(t)}.bind(void 0),TB=void 0,OB=function(t,e,r){return xt(this,TB),yB(ey(t,r),e)}.bind(void 0),DB=ei.curry(OB),PB=void 0,UB=function(t,e){return xt(this,PB),Object.prototype.hasOwnProperty.call(e,t)}.bind(void 0),Qd=ei.curry(UB),Yg=void 0,kB=function(t,e){xt(this,Yg);var r=R0(t);return r.length===R0(e).length&&r.every(function(i){return xt(this,Yg),Qd(i,e)&&Ef(i,t)===Ef(i,e)}.bind(this))}.bind(void 0),ty=ei.curry(kB),FB=void 0,ry=function(t){return xt(this,FB),R0(t).length===0}.bind(void 0),Ld=void 0,LB=function(t,e){return xt(this,Ld),wB(e).reduce(function(r,i){var n=xB(i,2),a=n[0],o=n[1];return xt(this,Ld),Ro({},r,mB({},a,t(o,a,e)))}.bind(this),{})}.bind(void 0),NB=function(t,e){return xt(this,Ld),Array.isArray(e)?e.map(t):LB(t,e)}.bind(void 0),QB=ei.curry(NB),iy=void 0,KB=function(t,e){e[t];var r=AB(e,[t]);return xt(this,iy),r}.bind(void 0),jB=function(t,e){return xt(this,iy),Array.isArray(e)?Nd.remove(t,1,e):KB(t,e)}.bind(void 0),ny=ei.curry(jB),HB=void 0,T0=function(t){return xt(this,HB),Array.isArray(t)?[].concat(Wg(t)):Ro({},t)}.bind(void 0),mi=void 0,zB=function(t){xt(this,mi);var e=T0(t);return{origin:e,current:e,previous:void 0}}.bind(void 0),fy=function(t,e,r){return xt(this,mi),r[t]=e,Ef(t,r)}.bind(void 0),GB=function(t,e,r,i){return xt(this,mi),Ro({},i,{current:fy(t[e],r,i.current),previous:i.current})}.bind(void 0),YB=function(t,e,r){xt(this,mi);var i=ny(t[e],r.current);return e===0?Ro({},r,{current:i,origin:i}):Ro({},r,{previous:fy(t[e-1],i,r.previous)})}.bind(void 0),ay=_B("composite.updateIn.removeAction"),VB=function(t,e,r,i){return xt(this,mi),r===ay?YB(t,e,i):GB(t,e,r,i)}.bind(void 0),$B=function(t){return xt(this,mi),typeof t=="number"?[]:{}}.bind(void 0),WB=function(t,e,r){return xt(this,mi),Qd(t,r)?T0(Ef(t,r)):$B(e)}.bind(void 0),JB=function(t,e,r,i){return xt(this,mi),Nd.isLastIndex(t,r)?e(Ef(t[r],i)):WB(t[r],t[r+1],i)}.bind(void 0),XB=function(t,e){return xt(this,mi),function(r,i,n){return xt(this,mi),VB(t,n,JB(t,e,n,r.current),r)}.bind(this)}.bind(void 0),ZB=function(t,e,r){return xt(this,mi),t.length===0?r:t.reduce(XB(t,e),zB(r)).origin}.bind(void 0),Oo=ei.curry(ZB);Oo.remove=ay;var oy=void 0,eq=function(){return xt(this,oy),Oo.remove}.bind(void 0),tq=function(t,e){return xt(this,oy),Oo(t,eq,e)}.bind(void 0),rq=ei.curry(tq),iq=void 0,nq=function(t,e,r){xt(this,iq);var i=T0(r);return i[t]=e,i}.bind(void 0),fq=ei.curry(nq),Vg=void 0,aq=function(t,e,r){return xt(this,Vg),Oo(t,function(){return xt(this,Vg),e}.bind(this),r)}.bind(void 0),oq=ei.curry(aq),sy=void 0,sq=function(t,e){return xt(this,sy),Boolean(Number(t)^Number(e))}.bind(void 0),uq=function(t,e){return xt(this,sy),t===e||!sq(Array.isArray(t),Array.isArray(e))&&ty(t,e)}.bind(void 0),hq=ei.curry(uq),cq=void 0,dq=function(t){return xt(this,cq),ry(t)?void 0:t}.bind(void 0);ar.get=Ef,ar.getIn=ey,ar.getKeys=R0,ar.hasIn=DB,ar.hasKey=Qd,ar.haveSameProps=ty,ar.is=Xg,ar.isEmpty=ry,ar.map=QB,ar.remove=ny,ar.removeIn=rq,ar.set=fq,ar.setIn=oq,ar.shallowCopy=T0,ar.shallowEqual=hq,ar.toUndefinedIfEmpty=dq,ar.updateIn=Oo});var cy=P((T$,hy)=>{g();hy.exports=function(t,e){return{value:e,done:!!t}}});var O0=P((D$,dy)=>{g();dy.exports={}});var D0=P((U$,ly)=>{g();var lq=xc(),pq=pa();ly.exports=function(t){return lq(pq(t))}});var vy=P((F$,py)=>{g();var vq=t0(),bq=Math.max,gq=Math.min;py.exports=function(t,e){return t=vq(t),t<0?bq(t+e,0):gq(t,e)}});var P0=P((N$,by)=>{g();var yq=D0(),mq=r0(),xq=vy();by.exports=function(t){return function(e,r,i){var n=yq(e),a=mq(n.length),o=xq(i,a),c;if(t&&r!=r){for(;a>o;)if(c=n[o++],c!=c)return!0}else for(;a>o;o++)if((t||o in n)&&n[o]===r)return t||o||0;return!t&&-1}}});var U0=P((K$,yy)=>{g();var gy=_c()("keys"),wq=Xs();yy.exports=function(t){return gy[t]||(gy[t]=wq(t))}});var wy=P((H$,xy)=>{g();var my=yo(),Aq=D0(),_q=P0()(!1),Iq=U0()("IE_PROTO");xy.exports=function(t,e){var r=Aq(t),i=0,n=[],a;for(a in r)a!=Iq&&my(r,a)&&n.push(a);for(;e.length>i;)my(r,a=e[i++])&&(~_q(n,a)||n.push(a));return n}});var Kd=P((G$,Ay)=>{g();Ay.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")});var jd=P((V$,_y)=>{g();var Eq=wy(),Mq=Kd();_y.exports=Object.keys||function(e){return Eq(e,Mq)}});var Ey=P((W$,Iy)=>{g();var Sq=go(),Cq=ca(),Bq=jd();Iy.exports=da()?Object.defineProperties:function(e,r){Cq(e);for(var i=Bq(r),n=i.length,a=0,o;n>a;)Sq.f(e,o=i[a++],r[o]);return e}});var Cy=P((X$,Sy)=>{g();var My=Dn().document;Sy.exports=My&&My.documentElement});var Ry=P((eW,qy)=>{g();var qq=ca(),Rq=Ey(),By=Kd(),Tq=U0()("IE_PROTO"),Hd=function(){},zd="prototype",k0=function(){var t=dc()("iframe"),e=By.length,r="<",i=">",n;for(t.style.display="none",Cy().appendChild(t),t.src="javascript:",n=t.contentWindow.document,n.open(),n.write(r+"script"+i+"document.F=Object"+r+"/script"+i),n.close(),k0=n.F;e--;)delete k0[zd][By[e]];return k0()};qy.exports=Object.create||function(e,r){var i;return e!==null?(Hd[zd]=qq(e),i=new Hd,Hd[zd]=null,i[Tq]=e):i=k0(),r===void 0?i:Rq(i,r)}});var Gd=P((rW,Oy)=>{g();var Oq=go().f,Dq=yo(),Ty=gi()("toStringTag");Oy.exports=function(t,e,r){t&&!Dq(t=r?t:t.prototype,Ty)&&Oq(t,Ty,{configurable:!0,value:e})}});var Uy=P((nW,Py)=>{"use strict";g();var Pq=Ry(),Uq=lc(),kq=Gd(),Dy={};Pn()(Dy,gi()("iterator"),function(){return this});Py.exports=function(t,e,r){t.prototype=Pq(Dy,{next:Uq(1,r)}),kq(t,e+" Iterator")}});var Ly=P((aW,Fy)=>{g();var Fq=yo(),Lq=wc(),ky=U0()("IE_PROTO"),Nq=Object.prototype;Fy.exports=Object.getPrototypeOf||function(t){return t=Lq(t),Fq(t,ky)?t[ky]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?Nq:null}});var Gy=P((sW,zy)=>{"use strict";g();var Ny=Ac(),Yd=Jr(),Qq=mo(),Qy=Pn(),Ky=O0(),Kq=Uy(),jq=Gd(),Hq=Ly(),Do=gi()("iterator"),Vd=!([].keys&&"next"in[].keys()),zq="@@iterator",jy="keys",F0="values",Hy=function(){return this};zy.exports=function(t,e,r,i,n,a,o){Kq(r,e,i);var c=function(ge){if(!Vd&&ge in R)return R[ge];switch(ge){case jy:return function(){return new r(this,ge)};case F0:return function(){return new r(this,ge)}}return function(){return new r(this,ge)}},m=e+" Iterator",M=n==F0,B=!1,R=t.prototype,F=R[Do]||R[zq]||n&&R[n],N=F||c(n),G=n?M?c("entries"):N:void 0,Z=e=="Array"&&R.entries||F,ie,fe,ce;if(Z&&(ce=Hq(Z.call(new t)),ce!==Object.prototype&&ce.next&&(jq(ce,m,!0),!Ny&&typeof ce[Do]!="function"&&Qy(ce,Do,Hy))),M&&F&&F.name!==F0&&(B=!0,N=function(){return F.call(this)}),(!Ny||o)&&(Vd||B||!R[Do])&&Qy(R,Do,N),Ky[e]=N,Ky[m]=Hy,n)if(ie={values:M?N:c(F0),keys:a?N:c(jy),entries:G},o)for(fe in ie)fe in R||Qq(R,fe,ie[fe]);else Yd(Yd.P+Yd.F*(Vd||B),e,ie);return ie}});var $y=P((hW,Vy)=>{"use strict";g();var $d=wo(),L0=cy(),Yy=O0(),Gq=D0();Vy.exports=Gy()(Array,"Array",function(t,e){this._t=Gq(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,L0(1)):e=="keys"?L0(0,r):e=="values"?L0(0,t[r]):L0(0,[r,t[r]])},"values");Yy.Arguments=Yy.Array;$d("keys");$d("values");$d("entries")});var f8=P(()=>{g();var Wy=$y(),Yq=jd(),Vq=mo(),$q=Dn(),Jy=Pn(),i8=O0(),n8=gi(),Xy=n8("iterator"),Zy=n8("toStringTag"),e8=i8.Array,t8={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1};for(Wd=Yq(t8),N0=0;N0{"use strict";g();var Wq=bo();a8.exports=function(t,e){return!!t&&Wq(function(){e?t.call(null,function(){},1):t.call(null)})}});var o8=P(()=>{"use strict";g();var Xd=Jr(),Jq=va()(0),Xq=ko()([].forEach,!0);Xd(Xd.P+Xd.F*!Xq,"Array",{forEach:function(e){return Jq(this,e,arguments[1])}})});var u8=P((xW,s8)=>{g();function Zq(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{g();function eR(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}h8.exports=eR});var l8=P((IW,d8)=>{g();function tR(){throw new TypeError("Invalid attempt to spread non-iterable instance")}d8.exports=tR});var v8=P((MW,p8)=>{g();var rR=u8(),iR=c8(),nR=l8();function fR(t){return rR(t)||iR(t)||nR()}p8.exports=fR});var b8=P(()=>{"use strict";g();var Zd=Jr(),aR=va()(1);Zd(Zd.P+Zd.F*!ko()([].map,!0),"Array",{map:function(e){return aR(this,e,arguments[1])}})});var y8=P((RW,g8)=>{g();var oR=t0(),sR=pa();g8.exports=function(t){return function(e,r){var i=String(sR(e)),n=oR(r),a=i.length,o,c;return n<0||n>=a?t?"":void 0:(o=i.charCodeAt(n),o<55296||o>56319||n+1===a||(c=i.charCodeAt(n+1))<56320||c>57343?t?i.charAt(n):o:t?i.slice(n,n+2):(o-55296<<10)+(c-56320)+65536)}}});var x8=P((OW,m8)=>{"use strict";g();var uR=y8()(!0);m8.exports=function(t,e,r){return e+(r?uR(t,e).length:1)}});var A8=P((PW,w8)=>{g();var el=xo(),hR=gi()("toStringTag"),cR=el(function(){return arguments}())=="Arguments",dR=function(t,e){try{return t[e]}catch{}};w8.exports=function(t){var e,r,i;return t===void 0?"Undefined":t===null?"Null":typeof(r=dR(e=Object(t),hR))=="string"?r:cR?el(e):(i=el(e))=="Object"&&typeof e.callee=="function"?"Arguments":i}});var I8=P((kW,_8)=>{"use strict";g();var lR=A8(),pR=RegExp.prototype.exec;_8.exports=function(t,e){var r=t.exec;if(typeof r=="function"){var i=r.call(t,e);if(typeof i!="object")throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if(lR(t)!=="RegExp")throw new TypeError("RegExp#exec called on incompatible receiver");return pR.call(t,e)}});var M8=P((LW,E8)=>{"use strict";g();var vR=ca();E8.exports=function(){var t=vR(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}});var il=P((QW,C8)=>{"use strict";g();var bR=M8(),Q0=RegExp.prototype.exec,gR=String.prototype.replace,S8=Q0,K0="lastIndex",tl=function(){var t=/a/,e=/b*/g;return Q0.call(t,"a"),Q0.call(e,"a"),t[K0]!==0||e[K0]!==0}(),rl=/()??/.exec("")[1]!==void 0,yR=tl||rl;yR&&(S8=function(e){var r=this,i,n,a,o;return rl&&(n=new RegExp("^"+r.source+"$(?!\\s)",bR.call(r))),tl&&(i=r[K0]),a=Q0.call(r,e),tl&&a&&(r[K0]=r.global?a.index+a[0].length:i),rl&&a&&a.length>1&&gR.call(a[0],n,function(){for(o=1;o{"use strict";g();var B8=il();Jr()({target:"RegExp",proto:!0,forced:B8!==/./.exec},{exec:B8})});var O8=P((GW,T8)=>{"use strict";g();q8();var mR=mo(),xR=Pn(),nl=bo(),wR=pa(),R8=gi(),AR=il(),_R=R8("species"),IR=!nl(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$")!=="7"}),ER=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return r.length===2&&r[0]==="a"&&r[1]==="b"}();T8.exports=function(t,e,r){var i=R8(t),n=!nl(function(){var B={};return B[i]=function(){return 7},""[t](B)!=7}),a=n?!nl(function(){var B=!1,R=/a/;return R.exec=function(){return B=!0,null},t==="split"&&(R.constructor={},R.constructor[_R]=function(){return R}),R[i](""),!B}):void 0;if(!n||!a||t==="replace"&&!IR||t==="split"&&!ER){var o=/./[i],c=r(wR,i,""[t],function(R,F,N,G,Z){return F.exec===AR?n&&!Z?{done:!0,value:o.call(F,N,G)}:{done:!0,value:R.call(N,F,G)}:{done:!1}}),m=c[0],M=c[1];mR(String.prototype,t,m),xR(RegExp.prototype,i,e==2?function(B,R){return M.call(B,this,R)}:function(B){return M.call(B,this)})}}});var P8=P(()=>{"use strict";g();var MR=ca(),SR=r0(),CR=x8(),D8=I8();O8()("match",1,function(t,e,r,i){return[function(a){var o=t(this),c=a?.[e];return c!==void 0?c.call(a,o):new RegExp(a)[e](String(o))},function(n){var a=i(r,n,this);if(a.done)return a.value;var o=MR(n),c=String(this);if(!o.global)return D8(o,c);var m=o.unicode;o.lastIndex=0;for(var M=[],B=0,R;(R=D8(o,c))!==null;){var F=String(R[0]);M[B]=F,F===""&&(o.lastIndex=CR(c,SR(o.lastIndex),m)),B++}return B===0?null:M}]})});var U8=P(()=>{"use strict";g();var fl=Jr(),BR=va()(3);fl(fl.P+fl.F*!ko()([].some,!0),"Array",{some:function(e){return BR(this,e,arguments[1])}})});var F8=P((eJ,k8)=>{g();k8.exports=function(t,e,r){var i=r===void 0;switch(e.length){case 0:return i?t():t.call(r);case 1:return i?t(e[0]):t.call(r,e[0]);case 2:return i?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}});var Q8=P((rJ,N8)=>{"use strict";g();var qR=gc(),RR=vf(),TR=F8(),L8=[].slice,al={},OR=function(t,e,r){if(!(e in al)){for(var i=[],n=0;n{g();var K8=Jr();K8(K8.P,"Function",{bind:Q8()})});var sl=P((oJ,j8)=>{g();function DR(t,e){if(t!==e)throw new TypeError("Cannot instantiate an arrow function")}j8.exports=DR});var G8=P(Mf=>{"use strict";g();Object.defineProperty(Mf,"__esModule",{value:!0});function PR(t){return t&&typeof t=="object"&&"default"in t?t.default:t}b8();P8();U8();ol();var Qi=PR(sl()),ul=void 0,UR=function(e){var r=this;return Qi(this,ul),e.map(function(i){var n=i.column,a=i.line;return Qi(this,r),"".concat(a,":").concat(n)}.bind(this)).join("; ")}.bind(void 0),kR=function(e){var r=e.message,i=e.locations;return Qi(this,ul),r+(i?" (".concat(UR(i),")"):"")}.bind(void 0),FR=function(e){return Qi(this,ul),e.map(kR).join(` -`)}.bind(void 0),H8=void 0,LR=/^\s*(query|mutation|subscription|\{)/,NR=function(e){return Qi(this,H8),e==="{"?"query":e}.bind(void 0),QR=function(e){Qi(this,H8);var r=e.match(LR);if(!r)throw new TypeError(`Invalid operation: -`.concat(e));return NR(r[1])}.bind(void 0),z8=void 0,KR=function(e){return Qi(this,z8),e.kind==="OperationDefinition"&&e.operation==="subscription"}.bind(void 0),jR=function(e){return Qi(this,z8),e.definitions.some(KR)}.bind(void 0),HR=void 0,zR=function(e){var r=e.query,i=e.variables;return Qi(this,HR),i?{operation:r,variables:i}:{operation:r}}.bind(void 0),GR=void 0,YR=function(e){var r=e.operation,i=e.variables;return Qi(this,GR),i?{query:r,variables:i}:{query:r}}.bind(void 0);Mf.errorsToString=FR;Mf.getOperationType=QR;Mf.hasSubscription=jR;Mf.requestFromCompat=zR;Mf.requestToCompat=YR});var W8=P(ml=>{"use strict";g();Object.defineProperty(ml,"__esModule",{value:!0});var ll=function(){function t(e,r){for(var i=0;i1,o=!1,c=arguments[1],m=c;return new n(function(M){return i.subscribe({next:function(B){var R=!o;if(o=!0,!R||a)try{m=r(m,B)}catch(F){return M.error(F)}else m=B},error:function(B){M.error(B)},complete:function(){if(!o&&!a)return M.error(new TypeError("Cannot reduce an empty sequence"));M.next(m),M.complete()}})})}},{key:"concat",value:function(){for(var r=this,i=arguments.length,n=Array(i),a=0;a=0&&o.splice(R,1),m()}});o.push(B)},error:function(M){a.error(M)},complete:function(){m()}});function m(){c.closed&&o.length===0&&a.complete()}return function(){o.forEach(function(M){return M.unsubscribe()}),c.unsubscribe()}})}},{key:cl,value:function(){return this}}],[{key:"from",value:function(r){var i=typeof this=="function"?this:t;if(r==null)throw new TypeError(r+" is not an object");var n=H0(r,cl);if(n){var a=n.call(r);if(Object(a)!==a)throw new TypeError(a+" is not an object");return $R(a)&&a.constructor===i?a:new i(function(o){return a.subscribe(o)})}if(bl("iterator")&&(n=H0(r,VR),n))return new i(function(o){j0(function(){if(!o.closed){var c=!0,m=!1,M=void 0;try{for(var B=n.call(r)[Symbol.iterator](),R;!(c=(R=B.next()).done);c=!0){var F=R.value;if(o.next(F),o.closed)return}}catch(N){m=!0,M=N}finally{try{!c&&B.return&&B.return()}finally{if(m)throw M}}o.complete()}})});if(Array.isArray(r))return new i(function(o){j0(function(){if(!o.closed){for(var c=0;c{g();J8.exports=W8().Observable});var e4=P(()=>{"use strict";g();var Z8=Jr(),ZR=P0()(!0);Z8(Z8.P,"Array",{includes:function(e){return ZR(this,e,arguments.length>1?arguments[1]:void 0)}});wo()("includes")});var r4=P((yJ,t4)=>{g();var eT=vf(),tT=xo(),rT=gi()("match");t4.exports=function(t){var e;return eT(t)&&((e=t[rT])!==void 0?!!e:tT(t)=="RegExp")}});var n4=P((xJ,i4)=>{g();var iT=r4(),nT=pa();i4.exports=function(t,e,r){if(iT(e))throw TypeError("String#"+r+" doesn't accept regex!");return String(nT(t))}});var a4=P((AJ,f4)=>{g();var fT=gi()("match");f4.exports=function(t){var e=/./;try{"/./"[t](e)}catch{try{return e[fT]=!1,!"/./"[t](e)}catch{}}return!0}});var s4=P(()=>{"use strict";g();var xl=Jr(),aT=n4(),o4="includes";xl(xl.P+xl.F*a4()(o4),"String",{includes:function(e){return!!~aT(this,e,o4).indexOf(e,arguments.length>1?arguments[1]:void 0)}})});var h4=P((SJ,u4)=>{g();function oT(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}u4.exports=oT});var d4=P((BJ,c4)=>{g();var sT=h4();function uT(t){for(var e=1;e{g();function hT(t,e){if(t==null)return{};var r={},i=Object.keys(t),n,a;for(a=0;a=0)&&(r[n]=t[n]);return r}l4.exports=hT});var b4=P((OJ,v4)=>{g();var cT=p4();function dT(t,e){if(t==null)return{};var r=cT(t,e),i,n;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&(!Object.prototype.propertyIsEnumerable.call(t,i)||(r[i]=t[i]))}return r}v4.exports=dT});var y4=P(()=>{"use strict";g();var wl=Jr(),lT=P0()(!1),Al=[].indexOf,g4=!!Al&&1/[1].indexOf(1,-0)<0;wl(wl.P+wl.F*(g4||!ko()(Al)),"Array",{indexOf:function(e){return g4?Al.apply(this,arguments)||0:lT(this,e,arguments[1])}})});var J4=P(vn=>{"use strict";g();Object.defineProperty(vn,"__esModule",{value:!0});function No(t){return t&&typeof t=="object"&&"default"in t?t.default:t}$2();J2();eb();var _l=uy();hc();f8();o8();var Lo=No(v8()),Il=G8(),pT=No(X8());e4();s4();var wi=No(d4()),z0=No(b4());y4();var G0=Pd();ol();var ue=No(sl()),vT=void 0,El=function(e){var r=e.activeObservers,i=e.canceledObservers,n=z0(e,["activeObservers","canceledObservers"]);return ue(this,vT),wi({},n,{isActive:!1,activeObservers:[],canceledObservers:Lo(r).concat(Lo(i))})}.bind(void 0),Ml=void 0,bT=function(e,r){var i=this;return ue(this,Ml),function(n){return ue(this,i),n[e]&&n[e](r)}.bind(this)}.bind(void 0),gT=function(e){var r=e.name;return ue(this,Ml),"on".concat(r)}.bind(void 0),Sl=function(e,r){return ue(this,Ml),e.forEach(bT(gT(r),r.payload))}.bind(void 0),yT=void 0,A4=function(e,r){return ue(this,yT),Sl(e.canceledObservers,r),e}.bind(void 0),Qo={abort:"Abort",cancel:"Cancel",error:"Error",result:"Result",start:"Start"},Ko=void 0,mT=function(e){return ue(this,Ko),{payload:e,name:Qo.start}}.bind(void 0),xT=function(e){return ue(this,Ko),{payload:e,name:Qo.result}}.bind(void 0),Y0=function(e){return ue(this,Ko),{payload:e,name:Qo.error}}.bind(void 0),wT=function(){return ue(this,Ko),{name:Qo.cancel,payload:void 0}}.bind(void 0),AT=function(e){return ue(this,Ko),{payload:e,name:Qo.abort}}.bind(void 0),_4=void 0,_T=function(e){return ue(this,_4),wi({},e,{canceledObservers:[]})}.bind(void 0),jo=function(e){return ue(this,_4),e.canceledObservers.length>0?_T(A4(e,wT())):e}.bind(void 0),IT=void 0,I4=function(e,r,i){return ue(this,IT),e.findIndex(_l.hasIn([r],i))}.bind(void 0),ET=void 0,Cl=function(e){var r=this;return ue(this,ET),function(i){return ue(this,r),G0.replace(I4(i,"request",e.request),[e],i)}.bind(this)}.bind(void 0),MT=void 0,Ho=function(e){var r=this;return ue(this,MT),function(i){return ue(this,r),G0.remove(I4(i,"request",e.request),1,i)}.bind(this)}.bind(void 0),ST=void 0,dn=function(e,r){return ue(this,ST),e.notifiers=r(e.notifiers),e}.bind(void 0),CT=void 0,ln=function(e,r){return ue(this,CT),dn(e,Cl(r)),r}.bind(void 0),Ai={canceled:"canceled",canceling:"canceling",pending:"pending",sent:"sent",sending:"sending"},E4=void 0,BT=function(e){var r=e.activeObservers,i=e.canceledObservers;return ue(this,E4),Lo(r).concat(Lo(i))}.bind(void 0),M4=function(e,r){return ue(this,E4),Sl(BT(e),r),e}.bind(void 0),qT=void 0,Bl=function(e,r,i){return ue(this,qT),dn(e,Ho(M4(r,AT(i))))}.bind(void 0),RT=void 0,V0=function(e,r,i){return ue(this,RT),e.find(_l.hasIn([r],i))}.bind(void 0),TT=void 0,$0=function(e,r){return ue(this,TT),Sl(e.activeObservers,r),e}.bind(void 0),OT=void 0,S4=function(e,r){return ue(this,OT),$0(e,xT(r))}.bind(void 0),DT=void 0,C4=function(e){return ue(this,DT),$0(e,mT(e))}.bind(void 0),PT=void 0,B4=function(e){return ue(this,PT),jo(wi({},e,{isActive:!0,requestStatus:Ai.pending,subscriptionId:void 0}))}.bind(void 0),UT=void 0,q4=function(e,r){return ue(this,UT),e.receive("ok",r.onSucceed).receive("error",r.onError).receive("timeout",r.onTimeout)}.bind(void 0),ql=void 0,kT=function(e,r){var i=this;return ue(this,ql),function(n){var a=this;return ue(this,i),function(){ue(this,a);var o=V0(e.notifiers,"request",r);if(o){for(var c=arguments.length,m=new Array(c),M=0;M0}.bind(void 0),yO=function(e){var r=this;return ue(this,Ki),function(){ue(this,r),gO(e)&&K4(e)}.bind(this)}.bind(void 0),mO="__absinthe__:control",xO=function(e){ue(this,Ki);var r={phoenixSocket:e,channel:e.channel(mO),channelJoinCreated:!1,notifiers:[]};return e.onOpen(yO(r)),e.onClose(bO(r)),e.onMessage(dO(r)),r}.bind(void 0),wO=void 0,AO=function(e,r){var i=e.activeObservers,n=z0(e,["activeObservers"]);return ue(this,wO),wi({},n,{activeObservers:Lo(i).concat([r]),isActive:!0})}.bind(void 0),_O=void 0,z4=function(e,r,i){return ue(this,_O),ln(e,AO(r,i))}.bind(void 0),G4=void 0,IO=function(e,r){return ue(this,G4),{operationType:r,request:e,activeObservers:[],canceledObservers:[],isActive:!0,requestStatus:Ai.pending,subscriptionId:void 0}}.bind(void 0),EO=function(e){return ue(this,G4),IO(e,Il.getOperationType(e.operation))}.bind(void 0),MO=void 0,SO=function(e){return ue(this,MO),e.isActive?e:wi({},e,{isActive:!0})}.bind(void 0),Cf=void 0,CO=function(e){ue(this,Cf),e.phoenixSocket.isConnected()?K4(e):e.phoenixSocket.connect()}.bind(void 0),BO=function(e,r){ue(this,Cf);var i=EO(r);return dn(e,G0.append([i])),e.channelJoinCreated?Q4(e,i):CO(e),i}.bind(void 0),w4=function(e,r){return ue(this,Cf),ln(e,SO(r))}.bind(void 0),qO=function(e,r){return ue(this,Cf),r.requestStatus===Ai.sending?w4(e,jo(r)):w4(e,r)}.bind(void 0),RO=function(e,r){return ue(this,Cf),r.isActive?r:qO(e,r)}.bind(void 0),TO=function(e,r){ue(this,Cf);var i=V0(e.notifiers,"request",r);return i&&RO(e,i)}.bind(void 0),OO=function(e,r){return ue(this,Cf),TO(e,r)||BO(e,r)}.bind(void 0),X0=void 0,DO=function(e,r,i,n){var a=this,o=r.request;return ue(this,X0),function(){ue(this,a);var c=V0(e.notifiers,"request",o);n(e,c,c?i:void 0)}.bind(this)}.bind(void 0),PO=function(e,r){var i=this,n=e.operationType;return ue(this,X0),function(a){ue(this,i),r.next(a),n!=="subscription"&&r.complete()}.bind(this)}.bind(void 0),UO=function(e,r,i){return ue(this,X0),wi({},r,{onAbort:i.error.bind(i),onResult:PO(e,i)})}.bind(void 0),kO=function(e,r){var i=this,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=n.unsubscribe,o=z0(n,["unsubscribe"]);return ue(this,X0),new pT(function(c){ue(this,i);var m=UO(r,o,c);return z4(e,r,m),a&&DO(e,r,m,a)}.bind(this))}.bind(void 0),Y4=void 0,FO=function(e,r){return ue(this,Y4),G0.remove(e.indexOf(r),1,e)}.bind(void 0),LO=function(e,r){var i=e.activeObservers,n=z0(e,["activeObservers"]);return ue(this,Y4),wi({},n,{activeObservers:FO(i,r)})}.bind(void 0),V4=void 0,NO=function(e,r){if(ue(this,V4),e.activeObservers.includes(r))return e;throw new Error("Observer is not attached to notifier")}.bind(void 0),$4=function(e,r,i){return ue(this,V4),dn(e,Cl(LO(NO(r,i),i)))}.bind(void 0),W4=void 0,QO=function(e,r,i){return ue(this,W4),r.activeObservers.length===1?N4(e,r):$4(e,r,i)}.bind(void 0),KO=function(e,r,i){return ue(this,W4),r.isActive?QO(e,r,i):e}.bind(void 0);vn.cancel=N4;vn.create=xO;vn.observe=z4;vn.send=OO;vn.toObservable=kO;vn.unobserve=$4;vn.unobserveOrCancel=KO});var Rl=P((NJ,Go)=>{g();var{Socket:jO}=hc(),HO=t2(),zo=J4();Go.exports.absintheCreate=function(t){let e=new jO(t,{transport:HO});return zo.create(e)};Go.exports.absintheSend=function(t,e){return zo.send(t,{operation:e})};Go.exports.absintheObserve=function(t,e,r){return new Promise((i,n)=>{zo.observe(t,e,{onStart:function(){i(e)},onError:function(a){zo.cancel(t,e),n(a)},onResult:function(a){r(a)}})})};Go.exports.absintheCancel=function(t,e){zo.cancel(t,e)}});var vt=P((Ol,c5)=>{g();var eu=fn(),Hi=eu.Buffer;function h5(t,e){for(var r in t)e[r]=t[r]}Hi.from&&Hi.alloc&&Hi.allocUnsafe&&Hi.allocUnsafeSlow?c5.exports=eu:(h5(eu,Ol),Ol.Buffer=Bf);function Bf(t,e,r){return Hi(t,e,r)}Bf.prototype=Object.create(Hi.prototype);h5(Hi,Bf);Bf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return Hi(t,e,r)};Bf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=Hi(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};Bf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Hi(t)};Bf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return eu.SlowBuffer(t)}});var qf=P((GJ,Pl)=>{"use strict";g();var Dl=65536,VO=4294967295;function $O(){throw new Error(`Secure random number generation is not supported by this browser. -Use Chrome, Firefox or Internet Explorer 11`)}var WO=vt().Buffer,tu=global.crypto||global.msCrypto;tu&&tu.getRandomValues?Pl.exports=JO:Pl.exports=$O;function JO(t,e){if(t>VO)throw new RangeError("requested too many random bytes");var r=WO.allocUnsafe(t);if(t>0)if(t>Dl)for(var i=0;i{g();typeof Object.create=="function"?Ul.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Ul.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var nu=P((WJ,kl)=>{"use strict";g();var wa=typeof Reflect=="object"?Reflect:null,d5=wa&&typeof wa.apply=="function"?wa.apply:function(e,r,i){return Function.prototype.apply.call(e,r,i)},ru;wa&&typeof wa.ownKeys=="function"?ru=wa.ownKeys:Object.getOwnPropertySymbols?ru=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:ru=function(e){return Object.getOwnPropertyNames(e)};function XO(t){console&&console.warn&&console.warn(t)}var p5=Number.isNaN||function(e){return e!==e};function Ht(){Ht.init.call(this)}kl.exports=Ht;kl.exports.once=rD;Ht.EventEmitter=Ht;Ht.prototype._events=void 0;Ht.prototype._eventsCount=0;Ht.prototype._maxListeners=void 0;var l5=10;function iu(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(Ht,"defaultMaxListeners",{enumerable:!0,get:function(){return l5},set:function(t){if(typeof t!="number"||t<0||p5(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");l5=t}});Ht.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ht.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||p5(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function v5(t){return t._maxListeners===void 0?Ht.defaultMaxListeners:t._maxListeners}Ht.prototype.getMaxListeners=function(){return v5(this)};Ht.prototype.emit=function(e){for(var r=[],i=1;i0&&(o=r[0]),o instanceof Error)throw o;var c=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw c.context=o,c}var m=a[e];if(m===void 0)return!1;if(typeof m=="function")d5(m,this,r);else for(var M=m.length,B=x5(m,M),i=0;i0&&o.length>n&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=o.length,XO(c)}return t}Ht.prototype.addListener=function(e,r){return b5(this,e,r,!1)};Ht.prototype.on=Ht.prototype.addListener;Ht.prototype.prependListener=function(e,r){return b5(this,e,r,!0)};function ZO(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function g5(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=ZO.bind(i);return n.listener=r,i.wrapFn=n,n}Ht.prototype.once=function(e,r){return iu(r),this.on(e,g5(this,e,r)),this};Ht.prototype.prependOnceListener=function(e,r){return iu(r),this.prependListener(e,g5(this,e,r)),this};Ht.prototype.removeListener=function(e,r){var i,n,a,o,c;if(iu(r),n=this._events,n===void 0)return this;if(i=n[e],i===void 0)return this;if(i===r||i.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||r));else if(typeof i!="function"){for(a=-1,o=i.length-1;o>=0;o--)if(i[o]===r||i[o].listener===r){c=i[o].listener,a=o;break}if(a<0)return this;a===0?i.shift():eD(i,a),i.length===1&&(n[e]=i[0]),n.removeListener!==void 0&&this.emit("removeListener",e,c||r)}return this};Ht.prototype.off=Ht.prototype.removeListener;Ht.prototype.removeAllListeners=function(e){var r,i,n;if(i=this._events,i===void 0)return this;if(i.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):i[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete i[e]),this;if(arguments.length===0){var a=Object.keys(i),o;for(n=0;n=0;n--)this.removeListener(e,r[n]);return this};function y5(t,e,r){var i=t._events;if(i===void 0)return[];var n=i[e];return n===void 0?[]:typeof n=="function"?r?[n.listener||n]:[n]:r?tD(n):x5(n,n.length)}Ht.prototype.listeners=function(e){return y5(this,e,!0)};Ht.prototype.rawListeners=function(e){return y5(this,e,!1)};Ht.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):m5.call(t,e)};Ht.prototype.listenerCount=m5;function m5(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ht.prototype.eventNames=function(){return this._eventsCount>0?ru(this._events):[]};function x5(t,e){for(var r=new Array(e),i=0;i{g();A5.exports=nu().EventEmitter});var Ll=P(()=>{g()});var M5=P((iX,E5)=>{"use strict";g();function _5(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function nD(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return fu.alloc(0);for(var i=fu.allocUnsafe(r>>>0),n=this.head,a=0;n;)cD(n.data,i,a),a+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(c===o.length?a+=o:a+=o.slice(0,r),r-=c,r===0){c===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(c));break}++n}return this.length-=n,a}},{key:"_getBuffer",value:function(r){var i=fu.allocUnsafe(r),n=this.head,a=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,c=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,c),r-=c,r===0){c===o.length?(++a,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(c));break}++a}return this.length-=a,i}},{key:hD,value:function(r,i){return Nl(this,nD({},i,{depth:0,customInspect:!1}))}}]),t}()});var Kl=P((fX,C5)=>{"use strict";g();function dD(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(Ql,this,t)):process.nextTick(Ql,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(a){!e&&a?r._writableState?r._writableState.errorEmitted?process.nextTick(au,r):(r._writableState.errorEmitted=!0,process.nextTick(S5,r,a)):process.nextTick(S5,r,a):e?(process.nextTick(au,r),e(a)):process.nextTick(au,r)}),this)}function S5(t,e){Ql(t,e),au(t)}function au(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function lD(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Ql(t,e){t.emit("error",e)}function pD(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}C5.exports={destroy:dD,undestroy:lD,errorOrDestroy:pD}});var Rf=P((oX,R5)=>{"use strict";g();function vD(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var q5={};function ti(t,e,r){r||(r=Error);function i(a,o,c){return typeof e=="string"?e:e(a,o,c)}var n=function(a){vD(o,a);function o(c,m,M){return a.call(this,i(c,m,M))||this}return o}(r);n.prototype.name=r.name,n.prototype.code=t,q5[t]=n}function B5(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(i){return String(i)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:r===2?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}else return"of ".concat(e," ").concat(String(t))}function bD(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function gD(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function yD(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}ti("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);ti("ERR_INVALID_ARG_TYPE",function(t,e,r){var i;typeof e=="string"&&bD(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";var n;if(gD(t," argument"))n="The ".concat(t," ").concat(i," ").concat(B5(e,"type"));else{var a=yD(t,".")?"property":"argument";n='The "'.concat(t,'" ').concat(a," ").concat(i," ").concat(B5(e,"type"))}return n+=". Received type ".concat(typeof r),n},TypeError);ti("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");ti("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});ti("ERR_STREAM_PREMATURE_CLOSE","Premature close");ti("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});ti("ERR_MULTIPLE_CALLBACK","Callback called multiple times");ti("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");ti("ERR_STREAM_WRITE_AFTER_END","write after end");ti("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);ti("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);ti("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");R5.exports.codes=q5});var jl=P((uX,T5)=>{"use strict";g();var mD=Rf().codes.ERR_INVALID_OPT_VALUE;function xD(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function wD(t,e,r,i){var n=xD(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var a=i?r:"highWaterMark";throw new mD(a,n)}return Math.floor(n)}return t.objectMode?16:16*1024}T5.exports={getHighWaterMark:wD}});var D5=P((cX,O5)=>{g();O5.exports=AD;function AD(t,e){if(Hl("noDeprecation"))return t;var r=!1;function i(){if(!r){if(Hl("throwDeprecation"))throw new Error(e);Hl("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}return i}function Hl(t){try{if(!global.localStorage)return!1}catch{return!1}var e=global.localStorage[t];return e==null?!1:String(e).toLowerCase()==="true"}});var uu=P((lX,N5)=>{"use strict";g();N5.exports=er;function U5(t){var e=this;this.next=null,this.entry=null,this.finish=function(){$D(e,t)}}var Aa;er.WritableState=Vo;var _D={deprecate:D5()},k5=Fl(),su=fn().Buffer,ID=global.Uint8Array||function(){};function ED(t){return su.from(t)}function MD(t){return su.isBuffer(t)||t instanceof ID}var Gl=Kl(),SD=jl(),CD=SD.getHighWaterMark,Gn=Rf().codes,BD=Gn.ERR_INVALID_ARG_TYPE,qD=Gn.ERR_METHOD_NOT_IMPLEMENTED,RD=Gn.ERR_MULTIPLE_CALLBACK,TD=Gn.ERR_STREAM_CANNOT_PIPE,OD=Gn.ERR_STREAM_DESTROYED,DD=Gn.ERR_STREAM_NULL_VALUES,PD=Gn.ERR_STREAM_WRITE_AFTER_END,UD=Gn.ERR_UNKNOWN_ENCODING,_a=Gl.errorOrDestroy;gt()(er,k5);function kD(){}function Vo(t,e,r){Aa=Aa||Yn(),t=t||{},typeof r!="boolean"&&(r=e instanceof Aa),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=CD(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){HD(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new U5(this)}Vo.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(Vo.prototype,"buffer",{get:_D.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var ou;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(ou=Function.prototype[Symbol.hasInstance],Object.defineProperty(er,Symbol.hasInstance,{value:function(e){return ou.call(this,e)?!0:this!==er?!1:e&&e._writableState instanceof Vo}})):ou=function(e){return e instanceof this};function er(t){Aa=Aa||Yn();var e=this instanceof Aa;if(!e&&!ou.call(er,this))return new er(t);this._writableState=new Vo(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),k5.call(this)}er.prototype.pipe=function(){_a(this,new TD)};function FD(t,e){var r=new PD;_a(t,r),process.nextTick(e,r)}function LD(t,e,r,i){var n;return r===null?n=new DD:typeof r!="string"&&!e.objectMode&&(n=new BD("chunk",["string","Buffer"],r)),n?(_a(t,n),process.nextTick(i,n),!1):!0}er.prototype.write=function(t,e,r){var i=this._writableState,n=!1,a=!i.objectMode&&MD(t);return a&&!su.isBuffer(t)&&(t=ED(t)),typeof e=="function"&&(r=e,e=null),a?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=kD),i.ending?FD(this,r):(a||LD(this,i,t,r))&&(i.pendingcb++,n=QD(this,i,a,t,e,r)),n};er.prototype.cork=function(){this._writableState.corked++};er.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&F5(this,t))};er.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new UD(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(er.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function ND(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=su.from(e,r)),e}Object.defineProperty(er.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function QD(t,e,r,i,n,a){if(!r){var o=ND(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var c=e.objectMode?1:i.length;e.length+=c;var m=e.length{"use strict";g();var WD=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};K5.exports=zi;var Q5=du(),Vl=uu();gt()(zi,Q5);for(Yl=WD(Vl.prototype),hu=0;hu{"use strict";g();var Wl=vt().Buffer,j5=Wl.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function ZD(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function eP(t){var e=ZD(t);if(typeof e!="string"&&(Wl.isEncoding===j5||!j5(t)))throw new Error("Unknown encoding: "+t);return e||t}H5.StringDecoder=$o;function $o(t){this.encoding=eP(t);var e;switch(this.encoding){case"utf16le":this.text=aP,this.end=oP,e=4;break;case"utf8":this.fillLast=iP,e=4;break;case"base64":this.text=sP,this.end=uP,e=3;break;default:this.write=hP,this.end=cP;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Wl.allocUnsafe(e)}$o.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function tP(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function rP(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function iP(t){var e=this.lastTotal-this.lastNeed,r=rP(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function nP(t,e){var r=tP(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function fP(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function aP(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function oP(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function sP(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function uP(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function hP(t){return t.toString(this.encoding)}function cP(t){return t&&t.length?this.write(t):""}});var Wo=P((mX,Y5)=>{"use strict";g();var z5=Rf().codes.ERR_STREAM_PREMATURE_CLOSE;function dP(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";g();var pu;function Vn(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var vP=Wo(),$n=Symbol("lastResolve"),Tf=Symbol("lastReject"),Jo=Symbol("error"),vu=Symbol("ended"),Of=Symbol("lastPromise"),Jl=Symbol("handlePromise"),Df=Symbol("stream");function Wn(t,e){return{value:t,done:e}}function bP(t){var e=t[$n];if(e!==null){var r=t[Df].read();r!==null&&(t[Of]=null,t[$n]=null,t[Tf]=null,e(Wn(r,!1)))}}function gP(t){process.nextTick(bP,t)}function yP(t,e){return function(r,i){t.then(function(){if(e[vu]){r(Wn(void 0,!0));return}e[Jl](r,i)},i)}}var mP=Object.getPrototypeOf(function(){}),xP=Object.setPrototypeOf((pu={get stream(){return this[Df]},next:function(){var e=this,r=this[Jo];if(r!==null)return Promise.reject(r);if(this[vu])return Promise.resolve(Wn(void 0,!0));if(this[Df].destroyed)return new Promise(function(o,c){process.nextTick(function(){e[Jo]?c(e[Jo]):o(Wn(void 0,!0))})});var i=this[Of],n;if(i)n=new Promise(yP(i,this));else{var a=this[Df].read();if(a!==null)return Promise.resolve(Wn(a,!1));n=new Promise(this[Jl])}return this[Of]=n,n}},Vn(pu,Symbol.asyncIterator,function(){return this}),Vn(pu,"return",function(){var e=this;return new Promise(function(r,i){e[Df].destroy(null,function(n){if(n){i(n);return}r(Wn(void 0,!0))})})}),pu),mP),wP=function(e){var r,i=Object.create(xP,(r={},Vn(r,Df,{value:e,writable:!0}),Vn(r,$n,{value:null,writable:!0}),Vn(r,Tf,{value:null,writable:!0}),Vn(r,Jo,{value:null,writable:!0}),Vn(r,vu,{value:e._readableState.endEmitted,writable:!0}),Vn(r,Jl,{value:function(a,o){var c=i[Df].read();c?(i[Of]=null,i[$n]=null,i[Tf]=null,a(Wn(c,!1))):(i[$n]=a,i[Tf]=o)},writable:!0}),r));return i[Of]=null,vP(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var a=i[Tf];a!==null&&(i[Of]=null,i[$n]=null,i[Tf]=null,a(n)),i[Jo]=n;return}var o=i[$n];o!==null&&(i[Of]=null,i[$n]=null,i[Tf]=null,o(Wn(void 0,!0))),i[vu]=!0}),e.on("readable",gP.bind(null,i)),i};V5.exports=wP});var J5=P((_X,W5)=>{g();W5.exports=function(){throw new Error("Readable.from is not available in the browser")}});var du=P((MX,om)=>{"use strict";g();om.exports=Lt;var Ia;Lt.ReadableState=tm;var EX=nu().EventEmitter,em=function(e,r){return e.listeners(r).length},Zo=Fl(),bu=fn().Buffer,AP=global.Uint8Array||function(){};function _P(t){return bu.from(t)}function IP(t){return bu.isBuffer(t)||t instanceof AP}var Xl=Ll(),At;Xl&&Xl.debuglog?At=Xl.debuglog("stream"):At=function(){};var EP=M5(),f1=Kl(),MP=jl(),SP=MP.getHighWaterMark,gu=Rf().codes,CP=gu.ERR_INVALID_ARG_TYPE,BP=gu.ERR_STREAM_PUSH_AFTER_EOF,qP=gu.ERR_METHOD_NOT_IMPLEMENTED,RP=gu.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Ea,Zl,e1;gt()(Lt,Zo);var Xo=f1.errorOrDestroy,t1=["error","close","destroy","pause","resume"];function TP(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function tm(t,e,r){Ia=Ia||Yn(),t=t||{},typeof r!="boolean"&&(r=e instanceof Ia),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=SP(this,t,"readableHighWaterMark",r),this.buffer=new EP,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Ea||(Ea=lu().StringDecoder),this.decoder=new Ea(t.encoding),this.encoding=t.encoding)}function Lt(t){if(Ia=Ia||Yn(),!(this instanceof Lt))return new Lt(t);var e=this instanceof Ia;this._readableState=new tm(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),Zo.call(this)}Object.defineProperty(Lt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});Lt.prototype.destroy=f1.destroy;Lt.prototype._undestroy=f1.undestroy;Lt.prototype._destroy=function(t,e){e(t)};Lt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=bu.from(t,e),e=""),i=!0),rm(this,t,e,!1,i)};Lt.prototype.unshift=function(t){return rm(this,t,null,!0,!1)};function rm(t,e,r,i,n){At("readableAddChunk",e);var a=t._readableState;if(e===null)a.reading=!1,PP(t,a);else{var o;if(n||(o=OP(a,e)),o)Xo(t,o);else if(a.objectMode||e&&e.length>0)if(typeof e!="string"&&!a.objectMode&&Object.getPrototypeOf(e)!==bu.prototype&&(e=_P(e)),i)a.endEmitted?Xo(t,new RP):r1(t,a,e,!0);else if(a.ended)Xo(t,new BP);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||e.length!==0?r1(t,a,e,!1):n1(t,a)):r1(t,a,e,!1)}else i||(a.reading=!1,n1(t,a))}return!a.ended&&(a.length=X5?t=X5:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function Z5(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=DP(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Lt.prototype.read=function(t){At("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return At("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?i1(this):yu(this),null;if(t=Z5(t,e),t===0&&e.ended)return e.length===0&&i1(this),null;var i=e.needReadable;At("need readable",i),(e.length===0||e.length-t0?n=fm(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&i1(this)),n!==null&&this.emit("data",n),n};function PP(t,e){if(At("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?yu(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,im(t)))}}function yu(t){var e=t._readableState;At("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(At("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(im,t))}function im(t){var e=t._readableState;At("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,a1(t)}function n1(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(UP,t,e))}function UP(t,e){for(;!e.reading&&!e.ended&&(e.length1&&am(i.pipes,t)!==-1)&&!M&&(At("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function F(ie){At("onerror",ie),Z(),t.removeListener("error",F),em(t,"error")===0&&Xo(t,ie)}TP(t,"error",F);function N(){t.removeListener("finish",G),Z()}t.once("close",N);function G(){At("onfinish"),t.removeListener("close",N),Z()}t.once("finish",G);function Z(){At("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(At("pipe resume"),r.resume()),t};function kP(t){return function(){var r=t._readableState;At("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&em(t,"data")&&(r.flowing=!0,a1(t))}}Lt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,At("on readable",i.length,i.reading),i.length?yu(this):i.reading||process.nextTick(FP,this)),r};Lt.prototype.addListener=Lt.prototype.on;Lt.prototype.removeListener=function(t,e){var r=Zo.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(nm,this),r};Lt.prototype.removeAllListeners=function(t){var e=Zo.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(nm,this),e};function nm(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function FP(t){At("readable nexttick read 0"),t.read(0)}Lt.prototype.resume=function(){var t=this._readableState;return t.flowing||(At("resume"),t.flowing=!t.readableListening,LP(this,t)),t.paused=!1,this};function LP(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(NP,t,e))}function NP(t,e){At("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),a1(t),e.flowing&&!e.reading&&t.read(0)}Lt.prototype.pause=function(){return At("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(At("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function a1(t){var e=t._readableState;for(At("flow",e.flowing);e.flowing&&t.read()!==null;);}Lt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(At("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(At("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var c=e.push(o);c||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(c){return function(){return t[c].apply(t,arguments)}}(n));for(var a=0;a=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function i1(t){var e=t._readableState;At("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(QP,e,t))}function QP(t,e){if(At("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(Lt.from=function(t,e){return e1===void 0&&(e1=J5()),e1(Lt,t,e)});function am(t,e){for(var r=0,i=t.length;r{"use strict";g();um.exports=gn;var mu=Rf().codes,KP=mu.ERR_METHOD_NOT_IMPLEMENTED,jP=mu.ERR_MULTIPLE_CALLBACK,HP=mu.ERR_TRANSFORM_ALREADY_TRANSFORMING,zP=mu.ERR_TRANSFORM_WITH_LENGTH_0,xu=Yn();gt()(gn,xu);function GP(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new jP);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";g();cm.exports=es;var hm=wu();gt()(es,hm);function es(t){if(!(this instanceof es))return new es(t);hm.call(this,t)}es.prototype._transform=function(t,e,r){r(null,t)}});var u1=P((TX,vm)=>{"use strict";g();var s1;function VP(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var pm=Rf().codes,$P=pm.ERR_MISSING_ARGS,WP=pm.ERR_STREAM_DESTROYED;function dm(t){if(t)throw t}function JP(t){return t.setHeader&&typeof t.abort=="function"}function XP(t,e,r,i){i=VP(i);var n=!1;t.on("close",function(){n=!0}),s1===void 0&&(s1=Wo()),s1(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var a=!1;return function(o){if(!n&&!a){if(a=!0,JP(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new WP("pipe"))}}}function lm(t){t()}function ZP(t,e){return t.pipe(e)}function eU(t){return!t.length||typeof t[t.length-1]!="function"?dm:t.pop()}function tU(){for(var t=arguments.length,e=new Array(t),r=0;r0;return XP(o,m,M,function(B){n||(n=B),B&&a.forEach(lm),!m&&(a.forEach(lm),i(n))})});return e.reduce(ZP)}vm.exports=tU});var h1=P((ri,bm)=>{g();ri=bm.exports=du();ri.Stream=ri;ri.Readable=ri;ri.Writable=uu();ri.Duplex=Yn();ri.Transform=wu();ri.PassThrough=o1();ri.finished=Wo();ri.pipeline=u1()});var c1=P((PX,ym)=>{"use strict";g();var Au=vt().Buffer,gm=h1().Transform,rU=gt();function iU(t,e){if(!Au.isBuffer(t)&&typeof t!="string")throw new TypeError(e+" must be a string or a buffer")}function Jn(t){gm.call(this),this._block=Au.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}rU(Jn,gm);Jn.prototype._transform=function(t,e,r){var i=null;try{this.update(t,e)}catch(n){i=n}r(i)};Jn.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(r){e=r}t(e)};Jn.prototype.update=function(t,e){if(iU(t,"Data"),this._finalized)throw new Error("Digest already called");Au.isBuffer(t)||(t=Au.from(t,e));for(var r=this._block,i=0;this._blockOffset+t.length-i>=this._blockSize;){for(var n=this._blockOffset;n0;++a)this._length[a]+=o,o=this._length[a]/4294967296|0,o>0&&(this._length[a]-=4294967296*o);return this};Jn.prototype._update=function(){throw new Error("_update is not implemented")};Jn.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();t!==void 0&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e};Jn.prototype._digest=function(){throw new Error("_digest is not implemented")};ym.exports=Jn});var Eu=P((kX,xm)=>{"use strict";g();var nU=gt(),mm=c1(),fU=vt().Buffer,aU=new Array(16);function _u(){mm.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}nU(_u,mm);_u.prototype._update=function(){for(var t=aU,e=0;e<16;++e)t[e]=this._block.readInt32LE(e*4);var r=this._a,i=this._b,n=this._c,a=this._d;r=_r(r,i,n,a,t[0],3614090360,7),a=_r(a,r,i,n,t[1],3905402710,12),n=_r(n,a,r,i,t[2],606105819,17),i=_r(i,n,a,r,t[3],3250441966,22),r=_r(r,i,n,a,t[4],4118548399,7),a=_r(a,r,i,n,t[5],1200080426,12),n=_r(n,a,r,i,t[6],2821735955,17),i=_r(i,n,a,r,t[7],4249261313,22),r=_r(r,i,n,a,t[8],1770035416,7),a=_r(a,r,i,n,t[9],2336552879,12),n=_r(n,a,r,i,t[10],4294925233,17),i=_r(i,n,a,r,t[11],2304563134,22),r=_r(r,i,n,a,t[12],1804603682,7),a=_r(a,r,i,n,t[13],4254626195,12),n=_r(n,a,r,i,t[14],2792965006,17),i=_r(i,n,a,r,t[15],1236535329,22),r=Ir(r,i,n,a,t[1],4129170786,5),a=Ir(a,r,i,n,t[6],3225465664,9),n=Ir(n,a,r,i,t[11],643717713,14),i=Ir(i,n,a,r,t[0],3921069994,20),r=Ir(r,i,n,a,t[5],3593408605,5),a=Ir(a,r,i,n,t[10],38016083,9),n=Ir(n,a,r,i,t[15],3634488961,14),i=Ir(i,n,a,r,t[4],3889429448,20),r=Ir(r,i,n,a,t[9],568446438,5),a=Ir(a,r,i,n,t[14],3275163606,9),n=Ir(n,a,r,i,t[3],4107603335,14),i=Ir(i,n,a,r,t[8],1163531501,20),r=Ir(r,i,n,a,t[13],2850285829,5),a=Ir(a,r,i,n,t[2],4243563512,9),n=Ir(n,a,r,i,t[7],1735328473,14),i=Ir(i,n,a,r,t[12],2368359562,20),r=Er(r,i,n,a,t[5],4294588738,4),a=Er(a,r,i,n,t[8],2272392833,11),n=Er(n,a,r,i,t[11],1839030562,16),i=Er(i,n,a,r,t[14],4259657740,23),r=Er(r,i,n,a,t[1],2763975236,4),a=Er(a,r,i,n,t[4],1272893353,11),n=Er(n,a,r,i,t[7],4139469664,16),i=Er(i,n,a,r,t[10],3200236656,23),r=Er(r,i,n,a,t[13],681279174,4),a=Er(a,r,i,n,t[0],3936430074,11),n=Er(n,a,r,i,t[3],3572445317,16),i=Er(i,n,a,r,t[6],76029189,23),r=Er(r,i,n,a,t[9],3654602809,4),a=Er(a,r,i,n,t[12],3873151461,11),n=Er(n,a,r,i,t[15],530742520,16),i=Er(i,n,a,r,t[2],3299628645,23),r=Mr(r,i,n,a,t[0],4096336452,6),a=Mr(a,r,i,n,t[7],1126891415,10),n=Mr(n,a,r,i,t[14],2878612391,15),i=Mr(i,n,a,r,t[5],4237533241,21),r=Mr(r,i,n,a,t[12],1700485571,6),a=Mr(a,r,i,n,t[3],2399980690,10),n=Mr(n,a,r,i,t[10],4293915773,15),i=Mr(i,n,a,r,t[1],2240044497,21),r=Mr(r,i,n,a,t[8],1873313359,6),a=Mr(a,r,i,n,t[15],4264355552,10),n=Mr(n,a,r,i,t[6],2734768916,15),i=Mr(i,n,a,r,t[13],1309151649,21),r=Mr(r,i,n,a,t[4],4149444226,6),a=Mr(a,r,i,n,t[11],3174756917,10),n=Mr(n,a,r,i,t[2],718787259,15),i=Mr(i,n,a,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+a|0};_u.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=fU.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t};function Iu(t,e){return t<>>32-e}function _r(t,e,r,i,n,a,o){return Iu(t+(e&r|~e&i)+n+a|0,o)+e|0}function Ir(t,e,r,i,n,a,o){return Iu(t+(e&i|r&~i)+n+a|0,o)+e|0}function Er(t,e,r,i,n,a,o){return Iu(t+(e^r^i)+n+a|0,o)+e|0}function Mr(t,e,r,i,n,a,o){return Iu(t+(r^(e|~i))+n+a|0,o)+e|0}xm.exports=_u});var Su=P((LX,Sm)=>{"use strict";g();var d1=fn().Buffer,oU=gt(),Mm=c1(),sU=new Array(16),ts=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],rs=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],is=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],ns=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],fs=[0,1518500249,1859775393,2400959708,2840853838],as=[1352829926,1548603684,1836072691,2053994217,0];function Mu(){Mm.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}oU(Mu,Mm);Mu.prototype._update=function(){for(var t=sU,e=0;e<16;++e)t[e]=this._block.readInt32LE(e*4);for(var r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=this._a|0,m=this._b|0,M=this._c|0,B=this._d|0,R=this._e|0,F=0;F<80;F+=1){var N,G;F<16?(N=wm(r,i,n,a,o,t[ts[F]],fs[0],is[F]),G=Em(c,m,M,B,R,t[rs[F]],as[0],ns[F])):F<32?(N=Am(r,i,n,a,o,t[ts[F]],fs[1],is[F]),G=Im(c,m,M,B,R,t[rs[F]],as[1],ns[F])):F<48?(N=_m(r,i,n,a,o,t[ts[F]],fs[2],is[F]),G=_m(c,m,M,B,R,t[rs[F]],as[2],ns[F])):F<64?(N=Im(r,i,n,a,o,t[ts[F]],fs[3],is[F]),G=Am(c,m,M,B,R,t[rs[F]],as[3],ns[F])):(N=Em(r,i,n,a,o,t[ts[F]],fs[4],is[F]),G=wm(c,m,M,B,R,t[rs[F]],as[4],ns[F])),r=o,o=a,a=Pf(n,10),n=i,i=N,c=R,R=B,B=Pf(M,10),M=m,m=G}var Z=this._b+n+B|0;this._b=this._c+a+R|0,this._c=this._d+o+c|0,this._d=this._e+r+m|0,this._e=this._a+i+M|0,this._a=Z};Mu.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=d1.alloc?d1.alloc(20):new d1(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t};function Pf(t,e){return t<>>32-e}function wm(t,e,r,i,n,a,o,c){return Pf(t+(e^r^i)+a+o|0,c)+n|0}function Am(t,e,r,i,n,a,o,c){return Pf(t+(e&r|~e&i)+a+o|0,c)+n|0}function _m(t,e,r,i,n,a,o,c){return Pf(t+((e|~r)^i)+a+o|0,c)+n|0}function Im(t,e,r,i,n,a,o,c){return Pf(t+(e&i|r&~i)+a+o|0,c)+n|0}function Em(t,e,r,i,n,a,o,c){return Pf(t+(e^(r|~i))+a+o|0,c)+n|0}Sm.exports=Mu});var Uf=P((QX,Bm)=>{g();var Cm=vt().Buffer;function Cu(t,e){this._block=Cm.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}Cu.prototype.update=function(t,e){typeof t=="string"&&(e=e||"utf8",t=Cm.from(t,e));for(var r=this._block,i=this._blockSize,n=t.length,a=this._len,o=0;o=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(r&4294967295)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return t?a.toString(t):a};Cu.prototype._update=function(){throw new Error("_update must be implemented by subclass")};Bm.exports=Cu});var Tm=P((jX,Rm)=>{g();var uU=gt(),qm=Uf(),hU=vt().Buffer,cU=[1518500249,1859775393,-1894007588,-899497514],dU=new Array(80);function os(){this.init(),this._w=dU,qm.call(this,64,56)}uU(os,qm);os.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function lU(t){return t<<5|t>>>27}function pU(t){return t<<30|t>>>2}function vU(t,e,r,i){return t===0?e&r|~e&i:t===2?e&r|e&i|r&i:e^r^i}os.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=0;c<16;++c)e[c]=t.readInt32BE(c*4);for(;c<80;++c)e[c]=e[c-3]^e[c-8]^e[c-14]^e[c-16];for(var m=0;m<80;++m){var M=~~(m/20),B=lU(r)+vU(M,i,n,a)+o+e[m]+cU[M]|0;o=a,a=n,n=pU(i),i=r,r=B}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0};os.prototype._hash=function(){var t=hU.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};Rm.exports=os});var Pm=P((zX,Dm)=>{g();var bU=gt(),Om=Uf(),gU=vt().Buffer,yU=[1518500249,1859775393,-1894007588,-899497514],mU=new Array(80);function ss(){this.init(),this._w=mU,Om.call(this,64,56)}bU(ss,Om);ss.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function xU(t){return t<<1|t>>>31}function wU(t){return t<<5|t>>>27}function AU(t){return t<<30|t>>>2}function _U(t,e,r,i){return t===0?e&r|~e&i:t===2?e&r|e&i|r&i:e^r^i}ss.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=0;c<16;++c)e[c]=t.readInt32BE(c*4);for(;c<80;++c)e[c]=xU(e[c-3]^e[c-8]^e[c-14]^e[c-16]);for(var m=0;m<80;++m){var M=~~(m/20),B=wU(r)+_U(M,i,n,a)+o+e[m]+yU[M]|0;o=a,a=n,n=AU(i),i=r,r=B}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0};ss.prototype._hash=function(){var t=gU.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};Dm.exports=ss});var l1=P((YX,km)=>{g();var IU=gt(),Um=Uf(),EU=vt().Buffer,MU=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],SU=new Array(64);function us(){this.init(),this._w=SU,Um.call(this,64,56)}IU(us,Um);us.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function CU(t,e,r){return r^t&(e^r)}function BU(t,e,r){return t&e|r&(t|e)}function qU(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function RU(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function TU(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function OU(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}us.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,a=this._d|0,o=this._e|0,c=this._f|0,m=this._g|0,M=this._h|0,B=0;B<16;++B)e[B]=t.readInt32BE(B*4);for(;B<64;++B)e[B]=OU(e[B-2])+e[B-7]+TU(e[B-15])+e[B-16]|0;for(var R=0;R<64;++R){var F=M+RU(o)+CU(o,c,m)+MU[R]+e[R]|0,N=qU(r)+BU(r,i,n)|0;M=m,m=c,c=o,o=a+F|0,a=n,n=i,i=r,r=F+N|0}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0,this._f=c+this._f|0,this._g=m+this._g|0,this._h=M+this._h|0};us.prototype._hash=function(){var t=EU.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t};km.exports=us});var Lm=P(($X,Fm)=>{g();var DU=gt(),PU=l1(),UU=Uf(),kU=vt().Buffer,FU=new Array(64);function Bu(){this.init(),this._w=FU,UU.call(this,64,56)}DU(Bu,PU);Bu.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this};Bu.prototype._hash=function(){var t=kU.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t};Fm.exports=Bu});var p1=P((JX,Gm)=>{g();var LU=gt(),zm=Uf(),NU=vt().Buffer,Nm=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],QU=new Array(160);function hs(){this.init(),this._w=QU,zm.call(this,128,112)}LU(hs,zm);hs.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function Qm(t,e,r){return r^t&(e^r)}function Km(t,e,r){return t&e|r&(t|e)}function jm(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function Hm(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function KU(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function jU(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function HU(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function zU(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function cr(t,e){return t>>>0>>0?1:0}hs.prototype._update=function(t){for(var e=this._w,r=this._ah|0,i=this._bh|0,n=this._ch|0,a=this._dh|0,o=this._eh|0,c=this._fh|0,m=this._gh|0,M=this._hh|0,B=this._al|0,R=this._bl|0,F=this._cl|0,N=this._dl|0,G=this._el|0,Z=this._fl|0,ie=this._gl|0,fe=this._hl|0,ce=0;ce<32;ce+=2)e[ce]=t.readInt32BE(ce*4),e[ce+1]=t.readInt32BE(ce*4+4);for(;ce<160;ce+=2){var ge=e[ce-30],ve=e[ce-15*2+1],Ke=KU(ge,ve),be=jU(ve,ge);ge=e[ce-2*2],ve=e[ce-2*2+1];var pe=HU(ge,ve),Ne=zU(ve,ge),k=e[ce-7*2],d=e[ce-7*2+1],b=e[ce-16*2],E=e[ce-16*2+1],p=be+d|0,f=Ke+k+cr(p,be)|0;p=p+Ne|0,f=f+pe+cr(p,Ne)|0,p=p+E|0,f=f+b+cr(p,E)|0,e[ce]=f,e[ce+1]=p}for(var s=0;s<160;s+=2){f=e[s],p=e[s+1];var v=Km(r,i,n),l=Km(B,R,F),h=jm(r,B),A=jm(B,r),q=Hm(o,G),_=Hm(G,o),u=Nm[s],I=Nm[s+1],j=Qm(o,c,m),S=Qm(G,Z,ie),L=fe+_|0,Q=M+q+cr(L,fe)|0;L=L+S|0,Q=Q+j+cr(L,S)|0,L=L+I|0,Q=Q+u+cr(L,I)|0,L=L+p|0,Q=Q+f+cr(L,p)|0;var z=A+l|0,J=h+v+cr(z,A)|0;M=m,fe=ie,m=c,ie=Z,c=o,Z=G,G=N+L|0,o=a+Q+cr(G,N)|0,a=n,N=F,n=i,F=R,i=r,R=B,B=L+z|0,r=Q+J+cr(B,L)|0}this._al=this._al+B|0,this._bl=this._bl+R|0,this._cl=this._cl+F|0,this._dl=this._dl+N|0,this._el=this._el+G|0,this._fl=this._fl+Z|0,this._gl=this._gl+ie|0,this._hl=this._hl+fe|0,this._ah=this._ah+r+cr(this._al,B)|0,this._bh=this._bh+i+cr(this._bl,R)|0,this._ch=this._ch+n+cr(this._cl,F)|0,this._dh=this._dh+a+cr(this._dl,N)|0,this._eh=this._eh+o+cr(this._el,G)|0,this._fh=this._fh+c+cr(this._fl,Z)|0,this._gh=this._gh+m+cr(this._gl,ie)|0,this._hh=this._hh+M+cr(this._hl,fe)|0};hs.prototype._hash=function(){var t=NU.allocUnsafe(64);function e(r,i,n){t.writeInt32BE(r,n),t.writeInt32BE(i,n+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t};Gm.exports=hs});var Vm=P((ZX,Ym)=>{g();var GU=gt(),YU=p1(),VU=Uf(),$U=vt().Buffer,WU=new Array(160);function qu(){this.init(),this._w=WU,VU.call(this,128,112)}GU(qu,YU);qu.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this};qu.prototype._hash=function(){var t=$U.allocUnsafe(48);function e(r,i,n){t.writeInt32BE(r,n),t.writeInt32BE(i,n+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t};Ym.exports=qu});var Ru=P((yn,$m)=>{g();var yn=$m.exports=function(e){e=e.toLowerCase();var r=yn[e];if(!r)throw new Error(e+" is not supported (we accept pull requests)");return new r};yn.sha=Tm();yn.sha1=Pm();yn.sha224=Lm();yn.sha256=l1();yn.sha384=Vm();yn.sha512=p1()});var Jm=P((rZ,Wm)=>{g();Wm.exports=ii;var v1=nu().EventEmitter,JU=gt();JU(ii,v1);ii.Readable=du();ii.Writable=uu();ii.Duplex=Yn();ii.Transform=wu();ii.PassThrough=o1();ii.finished=Wo();ii.pipeline=u1();ii.Stream=ii;function ii(){v1.call(this)}ii.prototype.pipe=function(t,e){var r=this;function i(B){t.writable&&t.write(B)===!1&&r.pause&&r.pause()}r.on("data",i);function n(){r.readable&&r.resume&&r.resume()}t.on("drain",n),!t._isStdio&&(!e||e.end!==!1)&&(r.on("end",o),r.on("close",c));var a=!1;function o(){a||(a=!0,t.end())}function c(){a||(a=!0,typeof t.destroy=="function"&&t.destroy())}function m(B){if(M(),v1.listenerCount(this,"error")===0)throw B}r.on("error",m),t.on("error",m);function M(){r.removeListener("data",i),t.removeListener("drain",n),r.removeListener("end",o),r.removeListener("close",c),r.removeListener("error",m),t.removeListener("error",m),r.removeListener("end",M),r.removeListener("close",M),t.removeListener("close",M)}return r.on("end",M),r.on("close",M),t.on("close",M),t.emit("pipe",r),t}});var mn=P((nZ,ex)=>{g();var Xm=vt().Buffer,Zm=Jm().Transform,XU=lu().StringDecoder,ZU=gt();function _i(t){Zm.call(this),this.hashMode=typeof t=="string",this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}ZU(_i,Zm);_i.prototype.update=function(t,e,r){typeof t=="string"&&(t=Xm.from(t,e));var i=this._update(t);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)};_i.prototype.setAutoPadding=function(){};_i.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")};_i.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")};_i.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")};_i.prototype._transform=function(t,e,r){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(n){i=n}finally{r(i)}};_i.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(r){e=r}t(e)};_i.prototype._finalOrDigest=function(t){var e=this.__final()||Xm.alloc(0);return t&&(e=this._toString(e,t,!0)),e};_i.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new XU(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var i=this._decoder.write(t);return r&&(i+=this._decoder.end()),i};ex.exports=_i});var Ma=P((aZ,rx)=>{"use strict";g();var ek=gt(),tk=Eu(),rk=Su(),ik=Ru(),tx=mn();function Tu(t){tx.call(this,"digest"),this._hash=t}ek(Tu,tx);Tu.prototype._update=function(t){this._hash.update(t)};Tu.prototype._final=function(){return this._hash.digest()};rx.exports=function(e){return e=e.toLowerCase(),e==="md5"?new tk:e==="rmd160"||e==="ripemd160"?new rk:new Tu(ik(e))}});var fx=P((sZ,nx)=>{"use strict";g();var nk=gt(),kf=vt().Buffer,ix=mn(),fk=kf.alloc(128),Sa=64;function Ou(t,e){ix.call(this,"digest"),typeof e=="string"&&(e=kf.from(e)),this._alg=t,this._key=e,e.length>Sa?e=t(e):e.length{g();var ak=Eu();ax.exports=function(t){return new ak().update(t).digest()}});var m1=P((dZ,sx)=>{"use strict";g();var ok=gt(),sk=fx(),ox=mn(),cs=vt().Buffer,uk=b1(),g1=Su(),y1=Ru(),hk=cs.alloc(128);function ds(t,e){ox.call(this,"digest"),typeof e=="string"&&(e=cs.from(e));var r=t==="sha512"||t==="sha384"?128:64;if(this._alg=t,this._key=e,e.length>r){var i=t==="rmd160"?new g1:y1(t);e=i.update(e).digest()}else e.length{ck.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}});var hx=P((vZ,ux)=>{g();ux.exports=x1()});var w1=P((gZ,cx)=>{g();var dk=Math.pow(2,30)-1;cx.exports=function(t,e){if(typeof t!="number")throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if(typeof e!="number")throw new TypeError("Key length not a number");if(e<0||e>dk||e!==e)throw new TypeError("Bad key length")}});var A1=P((mZ,lx)=>{g();var Du;global.process&&global.process.browser?Du="utf-8":global.process&&global.process.version?(dx=parseInt(process.version.split(".")[0].slice(1),10),Du=dx>=6?"utf-8":"binary"):Du="utf-8";var dx;lx.exports=Du});var I1=P((wZ,px)=>{g();var _1=vt().Buffer;px.exports=function(t,e,r){if(_1.isBuffer(t))return t;if(typeof t=="string")return _1.from(t,e);if(ArrayBuffer.isView(t))return _1.from(t.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}});var E1=P((_Z,yx)=>{g();var lk=b1(),pk=Su(),vk=Ru(),Ff=vt().Buffer,bk=w1(),vx=A1(),bx=I1(),gk=Ff.alloc(128),Pu={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function gx(t,e,r){var i=yk(t),n=t==="sha512"||t==="sha384"?128:64;e.length>n?e=i(e):e.length{g();var Ax=vt().Buffer,xk=w1(),mx=A1(),xx=E1(),wx=I1(),Uu,ls=global.crypto&&global.crypto.subtle,wk={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},M1=[];function Ak(t){if(global.process&&!global.process.browser||!ls||!ls.importKey||!ls.deriveBits)return Promise.resolve(!1);if(M1[t]!==void 0)return M1[t];Uu=Uu||Ax.alloc(8);var e=_x(Uu,Uu,10,128,t).then(function(){return!0}).catch(function(){return!1});return M1[t]=e,e}var Lf;function S1(){return Lf||(global.process&&global.process.nextTick?Lf=global.process.nextTick:global.queueMicrotask?Lf=global.queueMicrotask:global.setImmediate?Lf=global.setImmediate:Lf=global.setTimeout,Lf)}function _x(t,e,r,i,n){return ls.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then(function(a){return ls.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},a,i<<3)}).then(function(a){return Ax.from(a)})}function _k(t,e){t.then(function(r){S1()(function(){e(null,r)})},function(r){S1()(function(){e(r)})})}Ix.exports=function(t,e,r,i,n,a){typeof n=="function"&&(a=n,n=void 0),n=n||"sha1";var o=wk[n.toLowerCase()];if(!o||typeof global.Promise!="function"){S1()(function(){var c;try{c=xx(t,e,r,i,n)}catch(m){return a(m)}a(null,c)});return}if(xk(r,i),t=wx(t,mx,"Password"),e=wx(e,mx,"Salt"),typeof a!="function")throw new Error("No callback provided to pbkdf2");_k(Ak(o).then(function(c){return c?_x(t,e,r,i,o):xx(t,e,r,i,n)}),a)}});var B1=P(C1=>{g();C1.pbkdf2=Ex();C1.pbkdf2Sync=E1()});var q1=P(ni=>{"use strict";g();ni.readUInt32BE=function(e,r){var i=e[0+r]<<24|e[1+r]<<16|e[2+r]<<8|e[3+r];return i>>>0};ni.writeUInt32BE=function(e,r,i){e[0+i]=r>>>24,e[1+i]=r>>>16&255,e[2+i]=r>>>8&255,e[3+i]=r&255};ni.ip=function(e,r,i,n){for(var a=0,o=0,c=6;c>=0;c-=2){for(var m=0;m<=24;m+=8)a<<=1,a|=r>>>m+c&1;for(var m=0;m<=24;m+=8)a<<=1,a|=e>>>m+c&1}for(var c=6;c>=0;c-=2){for(var m=1;m<=25;m+=8)o<<=1,o|=r>>>m+c&1;for(var m=1;m<=25;m+=8)o<<=1,o|=e>>>m+c&1}i[n+0]=a>>>0,i[n+1]=o>>>0};ni.rip=function(e,r,i,n){for(var a=0,o=0,c=0;c<4;c++)for(var m=24;m>=0;m-=8)a<<=1,a|=r>>>m+c&1,a<<=1,a|=e>>>m+c&1;for(var c=4;c<8;c++)for(var m=24;m>=0;m-=8)o<<=1,o|=r>>>m+c&1,o<<=1,o|=e>>>m+c&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.pc1=function(e,r,i,n){for(var a=0,o=0,c=7;c>=5;c--){for(var m=0;m<=24;m+=8)a<<=1,a|=r>>m+c&1;for(var m=0;m<=24;m+=8)a<<=1,a|=e>>m+c&1}for(var m=0;m<=24;m+=8)a<<=1,a|=r>>m+c&1;for(var c=1;c<=3;c++){for(var m=0;m<=24;m+=8)o<<=1,o|=r>>m+c&1;for(var m=0;m<=24;m+=8)o<<=1,o|=e>>m+c&1}for(var m=0;m<=24;m+=8)o<<=1,o|=e>>m+c&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.r28shl=function(e,r){return e<>>28-r};var ku=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];ni.pc2=function(e,r,i,n){for(var a=0,o=0,c=ku.length>>>1,m=0;m>>ku[m]&1;for(var m=c;m>>ku[m]&1;i[n+0]=a>>>0,i[n+1]=o>>>0};ni.expand=function(e,r,i){var n=0,a=0;n=(e&1)<<5|e>>>27;for(var o=23;o>=15;o-=4)n<<=6,n|=e>>>o&63;for(var o=11;o>=3;o-=4)a|=e>>>o&63,a<<=6;a|=(e&31)<<1|e>>>31,r[i+0]=n>>>0,r[i+1]=a>>>0};var Mx=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];ni.substitute=function(e,r){for(var i=0,n=0;n<4;n++){var a=e>>>18-n*6&63,o=Mx[n*64+a];i<<=4,i|=o}for(var n=0;n<4;n++){var a=r>>>18-n*6&63,o=Mx[4*64+n*64+a];i<<=4,i|=o}return i>>>0};var Sx=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];ni.permute=function(e){for(var r=0,i=0;i>>Sx[i]&1;return r>>>0};ni.padSplit=function(e,r,i){for(var n=e.toString(2);n.length{g();Bx.exports=Cx;function Cx(t,e){if(!t)throw new Error(e||"Assertion failed")}Cx.equal=function(e,r,i){if(e!=r)throw new Error(i||"Assertion failed: "+e+" != "+r)}});var Fu=P((OZ,qx)=>{"use strict";g();var Ik=zr();function fi(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}qx.exports=fi;fi.prototype._init=function(){};fi.prototype.update=function(e){return e.length===0?[]:this.type==="decrypt"?this._updateDecrypt(e):this._updateEncrypt(e)};fi.prototype._buffer=function(e,r){for(var i=Math.min(this.buffer.length-this.bufferOff,e.length-r),n=0;n0;n--)r+=this._buffer(e,r),i+=this._flushBuffer(a,i);return r+=this._buffer(e,r),a};fi.prototype.final=function(e){var r;e&&(r=this.update(e));var i;return this.type==="encrypt"?i=this._finalEncrypt():i=this._finalDecrypt(),r?r.concat(i):i};fi.prototype._pad=function(e,r){if(r===0)return!1;for(;r{"use strict";g();var Rx=zr(),Ek=gt(),or=q1(),Tx=Fu();function Mk(){this.tmp=new Array(2),this.keys=null}function Gi(t){Tx.call(this,t);var e=new Mk;this._desState=e,this.deriveKeys(e,t.key)}Ek(Gi,Tx);Ox.exports=Gi;Gi.create=function(e){return new Gi(e)};var Sk=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];Gi.prototype.deriveKeys=function(e,r){e.keys=new Array(16*2),Rx.equal(r.length,this.blockSize,"Invalid key length");var i=or.readUInt32BE(r,0),n=or.readUInt32BE(r,4);or.pc1(i,n,e.tmp,0),i=e.tmp[0],n=e.tmp[1];for(var a=0;a>>1];i=or.r28shl(i,o),n=or.r28shl(n,o),or.pc2(i,n,e.keys,a)}};Gi.prototype._update=function(e,r,i,n){var a=this._desState,o=or.readUInt32BE(e,r),c=or.readUInt32BE(e,r+4);or.ip(o,c,a.tmp,0),o=a.tmp[0],c=a.tmp[1],this.type==="encrypt"?this._encrypt(a,o,c,a.tmp,0):this._decrypt(a,o,c,a.tmp,0),o=a.tmp[0],c=a.tmp[1],or.writeUInt32BE(i,o,n),or.writeUInt32BE(i,c,n+4)};Gi.prototype._pad=function(e,r){for(var i=e.length-r,n=r;n>>0,o=N}or.rip(c,o,n,a)};Gi.prototype._decrypt=function(e,r,i,n,a){for(var o=i,c=r,m=e.keys.length-2;m>=0;m-=2){var M=e.keys[m],B=e.keys[m+1];or.expand(o,e.tmp,0),M^=e.tmp[0],B^=e.tmp[1];var R=or.substitute(M,B),F=or.permute(R),N=o;o=(c^F)>>>0,c=N}or.rip(o,c,n,a)}});var Px=P(Dx=>{"use strict";g();var Ck=zr(),Bk=gt(),Lu={};function qk(t){Ck.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e{"use strict";g();var Tk=zr(),Ok=gt(),Ux=Fu(),Xn=R1();function Dk(t,e){Tk.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),i=e.slice(8,16),n=e.slice(16,24);t==="encrypt"?this.ciphers=[Xn.create({type:"encrypt",key:r}),Xn.create({type:"decrypt",key:i}),Xn.create({type:"encrypt",key:n})]:this.ciphers=[Xn.create({type:"decrypt",key:n}),Xn.create({type:"encrypt",key:i}),Xn.create({type:"decrypt",key:r})]}function Nf(t){Ux.call(this,t);var e=new Dk(this.type,this.options.key);this._edeState=e}Ok(Nf,Ux);kx.exports=Nf;Nf.create=function(e){return new Nf(e)};Nf.prototype._update=function(e,r,i,n){var a=this._edeState;a.ciphers[0]._update(e,r,i,n),a.ciphers[1]._update(i,n,i,n),a.ciphers[2]._update(i,n,i,n)};Nf.prototype._pad=Xn.prototype._pad;Nf.prototype._unpad=Xn.prototype._unpad});var Lx=P(Ca=>{"use strict";g();Ca.utils=q1();Ca.Cipher=Fu();Ca.DES=R1();Ca.CBC=Px();Ca.EDE=Fx()});var Kx=P((jZ,Qx)=>{g();var Nx=mn(),xn=Lx(),Pk=gt(),Qf=vt().Buffer,ps={"des-ede3-cbc":xn.CBC.instantiate(xn.EDE),"des-ede3":xn.EDE,"des-ede-cbc":xn.CBC.instantiate(xn.EDE),"des-ede":xn.EDE,"des-cbc":xn.CBC.instantiate(xn.DES),"des-ecb":xn.DES};ps.des=ps["des-cbc"];ps.des3=ps["des-ede3-cbc"];Qx.exports=Nu;Pk(Nu,Nx);function Nu(t){Nx.call(this);var e=t.mode.toLowerCase(),r=ps[e],i;t.decrypt?i="decrypt":i="encrypt";var n=t.key;Qf.isBuffer(n)||(n=Qf.from(n)),(e==="des-ede"||e==="des-ede-cbc")&&(n=Qf.concat([n,n.slice(0,8)]));var a=t.iv;Qf.isBuffer(a)||(a=Qf.from(a)),this._des=r.create({key:n,iv:a,type:i})}Nu.prototype._update=function(t){return Qf.from(this._des.update(t))};Nu.prototype._final=function(){return Qf.from(this._des.final())}});var jx=P(T1=>{g();T1.encrypt=function(t,e){return t._cipher.encryptBlock(e)};T1.decrypt=function(t,e){return t._cipher.decryptBlock(e)}});var Ba=P((YZ,Hx)=>{g();var Uk=vt().Buffer;Hx.exports=function(e,r){for(var i=Math.max(e.length,r.length),n=Uk.allocUnsafe(i),a=0;a{g();var zx=Ba();O1.encrypt=function(t,e){var r=zx(e,t._prev);return t._prev=t._cipher.encryptBlock(r),t._prev};O1.decrypt=function(t,e){var r=t._prev;t._prev=e;var i=t._cipher.decryptBlock(e);return zx(i,r)}});var $x=P(Vx=>{g();var vs=vt().Buffer,kk=Ba();function Yx(t,e,r){var i=e.length,n=kk(e,t._cache);return t._cache=t._cache.slice(i),t._prev=vs.concat([t._prev,r?e:n]),n}Vx.encrypt=function(t,e,r){for(var i=vs.allocUnsafe(0),n;e.length;)if(t._cache.length===0&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=vs.allocUnsafe(0)),t._cache.length<=e.length)n=t._cache.length,i=vs.concat([i,Yx(t,e.slice(0,n),r)]),e=e.slice(n);else{i=vs.concat([i,Yx(t,e,r)]);break}return i}});var Jx=P(Wx=>{g();var D1=vt().Buffer;function Fk(t,e,r){var i=t._cipher.encryptBlock(t._prev),n=i[0]^e;return t._prev=D1.concat([t._prev.slice(1),D1.from([r?e:n])]),n}Wx.encrypt=function(t,e,r){for(var i=e.length,n=D1.allocUnsafe(i),a=-1;++a{g();var Qu=vt().Buffer;function Lk(t,e,r){for(var i,n=-1,a=8,o=0,c,m;++n>n%8,t._prev=Nk(t._prev,r?c:m);return o}function Nk(t,e){var r=t.length,i=-1,n=Qu.allocUnsafe(t.length);for(t=Qu.concat([t,Qu.from([e])]);++i>7;return n}Xx.encrypt=function(t,e,r){for(var i=e.length,n=Qu.allocUnsafe(i),a=-1;++a{g();var Qk=Ba();function Kk(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}ew.encrypt=function(t,e){for(;t._cache.length{g();function jk(t){for(var e=t.length,r;e--;)if(r=t.readUInt8(e),r===255)t.writeUInt8(0,e);else{r++,t.writeUInt8(r,e);break}}rw.exports=jk});var k1=P(nw=>{g();var Hk=Ba(),iw=vt().Buffer,zk=P1();function Gk(t){var e=t._cipher.encryptBlockRaw(t._prev);return zk(t._prev),e}var U1=16;nw.encrypt=function(t,e){var r=Math.ceil(e.length/U1),i=t._cache.length;t._cache=iw.concat([t._cache,iw.allocUnsafe(r*U1)]);for(var n=0;n{Yk.exports={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},aes192:{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},aes256:{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}}});var ju=P((hee,fw)=>{g();var Vk={ECB:jx(),CBC:Gx(),CFB:$x(),CFB8:Jx(),CFB1:Zx(),OFB:tw(),CTR:k1(),GCM:k1()},Ku=F1();for(L1 in Ku)Ku[L1].module=Vk[Ku[L1].mode];var L1;fw.exports=Ku});var bs=P((dee,ow)=>{g();var Hu=vt().Buffer;function Q1(t){Hu.isBuffer(t)||(t=Hu.from(t));for(var e=t.length/4|0,r=new Array(e),i=0;i>>24]^o[B>>>16&255]^c[R>>>8&255]^m[F&255]^e[fe++],G=a[B>>>24]^o[R>>>16&255]^c[F>>>8&255]^m[M&255]^e[fe++],Z=a[R>>>24]^o[F>>>16&255]^c[M>>>8&255]^m[B&255]^e[fe++],ie=a[F>>>24]^o[M>>>16&255]^c[B>>>8&255]^m[R&255]^e[fe++],M=N,B=G,R=Z,F=ie;return N=(i[M>>>24]<<24|i[B>>>16&255]<<16|i[R>>>8&255]<<8|i[F&255])^e[fe++],G=(i[B>>>24]<<24|i[R>>>16&255]<<16|i[F>>>8&255]<<8|i[M&255])^e[fe++],Z=(i[R>>>24]<<24|i[F>>>16&255]<<16|i[M>>>8&255]<<8|i[B&255])^e[fe++],ie=(i[F>>>24]<<24|i[M>>>16&255]<<16|i[B>>>8&255]<<8|i[R&255])^e[fe++],N=N>>>0,G=G>>>0,Z=Z>>>0,ie=ie>>>0,[N,G,Z,ie]}var $k=[0,1,2,4,8,16,32,64,128,27,54],nr=function(){for(var t=new Array(256),e=0;e<256;e++)e<128?t[e]=e<<1:t[e]=e<<1^283;for(var r=[],i=[],n=[[],[],[],[]],a=[[],[],[],[]],o=0,c=0,m=0;m<256;++m){var M=c^c<<1^c<<2^c<<3^c<<4;M=M>>>8^M&255^99,r[o]=M,i[M]=o;var B=t[o],R=t[B],F=t[R],N=t[M]*257^M*16843008;n[0][o]=N<<24|N>>>8,n[1][o]=N<<16|N>>>16,n[2][o]=N<<8|N>>>24,n[3][o]=N,N=F*16843009^R*65537^B*257^o*16843008,a[0][M]=N<<24|N>>>8,a[1][M]=N<<16|N>>>16,a[2][M]=N<<8|N>>>24,a[3][M]=N,o===0?o=c=1:(o=B^t[t[t[F^B]]],c^=t[t[c]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function ai(t){this._key=Q1(t),this._reset()}ai.blockSize=4*4;ai.keySize=256/8;ai.prototype.blockSize=ai.blockSize;ai.prototype.keySize=ai.keySize;ai.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,i=(r+1)*4,n=[],a=0;a>>24,o=nr.SBOX[o>>>24]<<24|nr.SBOX[o>>>16&255]<<16|nr.SBOX[o>>>8&255]<<8|nr.SBOX[o&255],o^=$k[a/e|0]<<24):e>6&&a%e===4&&(o=nr.SBOX[o>>>24]<<24|nr.SBOX[o>>>16&255]<<16|nr.SBOX[o>>>8&255]<<8|nr.SBOX[o&255]),n[a]=n[a-e]^o}for(var c=[],m=0;m>>24]]^nr.INV_SUB_MIX[1][nr.SBOX[B>>>16&255]]^nr.INV_SUB_MIX[2][nr.SBOX[B>>>8&255]]^nr.INV_SUB_MIX[3][nr.SBOX[B&255]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=c};ai.prototype.encryptBlockRaw=function(t){return t=Q1(t),aw(t,this._keySchedule,nr.SUB_MIX,nr.SBOX,this._nRounds)};ai.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=Hu.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r};ai.prototype.decryptBlock=function(t){t=Q1(t);var e=t[1];t[1]=t[3],t[3]=e;var r=aw(t,this._invKeySchedule,nr.INV_SUB_MIX,nr.INV_SBOX,this._nRounds),i=Hu.allocUnsafe(16);return i.writeUInt32BE(r[0],0),i.writeUInt32BE(r[3],4),i.writeUInt32BE(r[2],8),i.writeUInt32BE(r[1],12),i};ai.prototype.scrub=function(){N1(this._keySchedule),N1(this._invKeySchedule),N1(this._key)};ow.exports.AES=ai});var hw=P((pee,uw)=>{g();var qa=vt().Buffer,Wk=qa.alloc(16,0);function Jk(t){return[t.readUInt32BE(0),t.readUInt32BE(4),t.readUInt32BE(8),t.readUInt32BE(12)]}function sw(t){var e=qa.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function gs(t){this.h=t,this.state=qa.alloc(16,0),this.cache=qa.allocUnsafe(0)}gs.prototype.ghash=function(t){for(var e=-1;++e0;r--)t[r]=t[r]>>>1|(t[r-1]&1)<<31;t[0]=t[0]>>>1,n&&(t[0]=t[0]^225<<24)}this.state=sw(e)};gs.prototype.update=function(t){this.cache=qa.concat([this.cache,t]);for(var e;this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)};gs.prototype.final=function(t,e){return this.cache.length&&this.ghash(qa.concat([this.cache,Wk],16)),this.ghash(sw([0,t,0,e])),this.state};uw.exports=gs});var K1=P((bee,lw)=>{g();var Xk=bs(),kr=vt().Buffer,cw=mn(),Zk=gt(),dw=hw(),eF=Ba(),tF=P1();function rF(t,e){var r=0;t.length!==e.length&&r++;for(var i=Math.min(t.length,e.length),n=0;n{g();var nF=bs(),j1=vt().Buffer,pw=mn(),fF=gt();function zu(t,e,r,i){pw.call(this),this._cipher=new nF.AES(e),this._prev=j1.from(r),this._cache=j1.allocUnsafe(0),this._secCache=j1.allocUnsafe(0),this._decrypt=i,this._mode=t}fF(zu,pw);zu.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)};zu.prototype._final=function(){this._cipher.scrub()};vw.exports=zu});var ys=P((xee,bw)=>{g();var jf=vt().Buffer,aF=Eu();function oF(t,e,r,i){if(jf.isBuffer(t)||(t=jf.from(t,"binary")),e&&(jf.isBuffer(e)||(e=jf.from(e,"binary")),e.length!==8))throw new RangeError("salt should be Buffer with 8 byte length");for(var n=r/8,a=jf.alloc(n),o=jf.alloc(i||0),c=jf.alloc(0);n>0||i>0;){var m=new aF;m.update(c),m.update(t),e&&m.update(e),c=m.digest();var M=0;if(n>0){var B=a.length-n;M=Math.min(n,c.length),c.copy(a,B,0,M),n-=M}if(M0){var R=o.length-i,F=Math.min(i,c.length-M);c.copy(o,R,M,M+F),i-=F}}return c.fill(0),{key:a,iv:o}}bw.exports=oF});var xw=P(z1=>{g();var gw=ju(),sF=K1(),wn=vt().Buffer,uF=H1(),yw=mn(),hF=bs(),cF=ys(),dF=gt();function ms(t,e,r){yw.call(this),this._cache=new Gu,this._cipher=new hF.AES(e),this._prev=wn.from(r),this._mode=t,this._autopadding=!0}dF(ms,yw);ms.prototype._update=function(t){this._cache.add(t);for(var e,r,i=[];e=this._cache.get();)r=this._mode.encrypt(this,e),i.push(r);return wn.concat(i)};var lF=wn.alloc(16,16);ms.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(lF))throw this._cipher.scrub(),new Error("data not multiple of block length")};ms.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this};function Gu(){this.cache=wn.allocUnsafe(0)}Gu.prototype.add=function(t){this.cache=wn.concat([this.cache,t])};Gu.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null};Gu.prototype.flush=function(){for(var t=16-this.cache.length,e=wn.allocUnsafe(t),r=-1;++r{g();var vF=K1(),Ra=vt().Buffer,ww=ju(),bF=H1(),Aw=mn(),gF=bs(),yF=ys(),mF=gt();function xs(t,e,r){Aw.call(this),this._cache=new Yu,this._last=void 0,this._cipher=new gF.AES(e),this._prev=Ra.from(r),this._mode=t,this._autopadding=!0}mF(xs,Aw);xs.prototype._update=function(t){this._cache.add(t);for(var e,r,i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return Ra.concat(i)};xs.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return xF(this._mode.decrypt(this,t));if(t)throw new Error("data not multiple of block length")};xs.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this};function Yu(){this.cache=Ra.allocUnsafe(0)}Yu.prototype.add=function(t){this.cache=Ra.concat([this.cache,t])};Yu.prototype.get=function(t){var e;if(t){if(this.cache.length>16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null};Yu.prototype.flush=function(){if(this.cache.length)return this.cache};function xF(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");for(var r=-1;++r{g();var Ew=xw(),Mw=Iw(),AF=F1();function _F(){return Object.keys(AF)}Ii.createCipher=Ii.Cipher=Ew.createCipher;Ii.createCipheriv=Ii.Cipheriv=Ew.createCipheriv;Ii.createDecipher=Ii.Decipher=Mw.createDecipher;Ii.createDecipheriv=Ii.Decipheriv=Mw.createDecipheriv;Ii.listCiphers=Ii.getCiphers=_F});var Sw=P(An=>{g();An["des-ecb"]={key:8,iv:0};An["des-cbc"]=An.des={key:8,iv:8};An["des-ede3-cbc"]=An.des3={key:24,iv:8};An["des-ede3"]={key:24,iv:0};An["des-ede-cbc"]={key:16,iv:8};An["des-ede"]={key:16,iv:0}});var Tw=P(Ei=>{g();var Cw=Kx(),Y1=Vu(),Zn=ju(),_n=Sw(),Bw=ys();function IF(t,e){t=t.toLowerCase();var r,i;if(Zn[t])r=Zn[t].key,i=Zn[t].iv;else if(_n[t])r=_n[t].key*8,i=_n[t].iv;else throw new TypeError("invalid suite type");var n=Bw(e,!1,r,i);return qw(t,n.key,n.iv)}function EF(t,e){t=t.toLowerCase();var r,i;if(Zn[t])r=Zn[t].key,i=Zn[t].iv;else if(_n[t])r=_n[t].key*8,i=_n[t].iv;else throw new TypeError("invalid suite type");var n=Bw(e,!1,r,i);return Rw(t,n.key,n.iv)}function qw(t,e,r){if(t=t.toLowerCase(),Zn[t])return Y1.createCipheriv(t,e,r);if(_n[t])return new Cw({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function Rw(t,e,r){if(t=t.toLowerCase(),Zn[t])return Y1.createDecipheriv(t,e,r);if(_n[t])return new Cw({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}function MF(){return Object.keys(_n).concat(Y1.getCiphers())}Ei.createCipher=Ei.Cipher=IF;Ei.createCipheriv=Ei.Cipheriv=qw;Ei.createDecipher=Ei.Decipher=EF;Ei.createDecipheriv=Ei.Decipheriv=Rw;Ei.listCiphers=Ei.getCiphers=MF});var $u=P(()=>{g()});var sr=P((Ow,V1)=>{g();(function(t,e){"use strict";function r(k,d){if(!k)throw new Error(d||"Assertion failed")}function i(k,d){k.super_=d;var b=function(){};b.prototype=d.prototype,k.prototype=new b,k.prototype.constructor=k}function n(k,d,b){if(n.isBN(k))return k;this.negative=0,this.words=null,this.length=0,this.red=null,k!==null&&((d==="le"||d==="be")&&(b=d,d=10),this._init(k||0,d||10,b||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{a=$u().Buffer}catch{}n.isBN=function(d){return d instanceof n?!0:d!==null&&typeof d=="object"&&d.constructor.wordSize===n.wordSize&&Array.isArray(d.words)},n.max=function(d,b){return d.cmp(b)>0?d:b},n.min=function(d,b){return d.cmp(b)<0?d:b},n.prototype._init=function(d,b,E){if(typeof d=="number")return this._initNumber(d,b,E);if(typeof d=="object")return this._initArray(d,b,E);b==="hex"&&(b=16),r(b===(b|0)&&b>=2&&b<=36),d=d.toString().replace(/\s+/g,"");var p=0;d[0]==="-"&&p++,b===16?this._parseHex(d,p):this._parseBase(d,b,p),d[0]==="-"&&(this.negative=1),this.strip(),E==="le"&&this._initArray(this.toArray(),b,E)},n.prototype._initNumber=function(d,b,E){d<0&&(this.negative=1,d=-d),d<67108864?(this.words=[d&67108863],this.length=1):d<4503599627370496?(this.words=[d&67108863,d/67108864&67108863],this.length=2):(r(d<9007199254740992),this.words=[d&67108863,d/67108864&67108863,1],this.length=3),E==="le"&&this._initArray(this.toArray(),b,E)},n.prototype._initArray=function(d,b,E){if(r(typeof d.length=="number"),d.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(d.length/3),this.words=new Array(this.length);for(var p=0;p=0;p-=3)s=d[p]|d[p-1]<<8|d[p-2]<<16,this.words[f]|=s<>>26-v&67108863,v+=24,v>=26&&(v-=26,f++);else if(E==="le")for(p=0,f=0;p>>26-v&67108863,v+=24,v>=26&&(v-=26,f++);return this.strip()};function o(k,d,b){for(var E=0,p=Math.min(k.length,b),f=d;f=49&&s<=54?E|=s-49+10:s>=17&&s<=22?E|=s-17+10:E|=s&15}return E}n.prototype._parseHex=function(d,b){this.length=Math.ceil((d.length-b)/6),this.words=new Array(this.length);for(var E=0;E=b;E-=6)f=o(d,E,E+6),this.words[p]|=f<>>26-s&4194303,s+=24,s>=26&&(s-=26,p++);E+6!==b&&(f=o(d,b,E+6),this.words[p]|=f<>>26-s&4194303),this.strip()};function c(k,d,b,E){for(var p=0,f=Math.min(k.length,b),s=d;s=49?p+=v-49+10:v>=17?p+=v-17+10:p+=v}return p}n.prototype._parseBase=function(d,b,E){this.words=[0],this.length=1;for(var p=0,f=1;f<=67108863;f*=b)p++;p--,f=f/b|0;for(var s=d.length-E,v=s%p,l=Math.min(s,s-v)+E,h=0,A=E;A1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var m=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],B=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(d,b){d=d||10,b=b|0||1;var E;if(d===16||d==="hex"){E="";for(var p=0,f=0,s=0;s>>24-p&16777215,f!==0||s!==this.length-1?E=m[6-l.length]+l+E:E=l+E,p+=2,p>=26&&(p-=26,s--)}for(f!==0&&(E=f.toString(16)+E);E.length%b!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}if(d===(d|0)&&d>=2&&d<=36){var h=M[d],A=B[d];E="";var q=this.clone();for(q.negative=0;!q.isZero();){var _=q.modn(A).toString(d);q=q.idivn(A),q.isZero()?E=_+E:E=m[h-_.length]+_+E}for(this.isZero()&&(E="0"+E);E.length%b!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var d=this.words[0];return this.length===2?d+=this.words[1]*67108864:this.length===3&&this.words[2]===1?d+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-d:d},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(d,b){return r(typeof a<"u"),this.toArrayLike(a,d,b)},n.prototype.toArray=function(d,b){return this.toArrayLike(Array,d,b)},n.prototype.toArrayLike=function(d,b,E){var p=this.byteLength(),f=E||Math.max(1,p);r(p<=f,"byte array longer than desired length"),r(f>0,"Requested array length <= 0"),this.strip();var s=b==="le",v=new d(f),l,h,A=this.clone();if(s){for(h=0;!A.isZero();h++)l=A.andln(255),A.iushrn(8),v[h]=l;for(;h=4096&&(E+=13,b>>>=13),b>=64&&(E+=7,b>>>=7),b>=8&&(E+=4,b>>>=4),b>=2&&(E+=2,b>>>=2),E+b},n.prototype._zeroBits=function(d){if(d===0)return 26;var b=d,E=0;return(b&8191)===0&&(E+=13,b>>>=13),(b&127)===0&&(E+=7,b>>>=7),(b&15)===0&&(E+=4,b>>>=4),(b&3)===0&&(E+=2,b>>>=2),(b&1)===0&&E++,E},n.prototype.bitLength=function(){var d=this.words[this.length-1],b=this._countBits(d);return(this.length-1)*26+b};function R(k){for(var d=new Array(k.bitLength()),b=0;b>>p}return d}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var d=0,b=0;bd.length?this.clone().ior(d):d.clone().ior(this)},n.prototype.uor=function(d){return this.length>d.length?this.clone().iuor(d):d.clone().iuor(this)},n.prototype.iuand=function(d){var b;this.length>d.length?b=d:b=this;for(var E=0;Ed.length?this.clone().iand(d):d.clone().iand(this)},n.prototype.uand=function(d){return this.length>d.length?this.clone().iuand(d):d.clone().iuand(this)},n.prototype.iuxor=function(d){var b,E;this.length>d.length?(b=this,E=d):(b=d,E=this);for(var p=0;pd.length?this.clone().ixor(d):d.clone().ixor(this)},n.prototype.uxor=function(d){return this.length>d.length?this.clone().iuxor(d):d.clone().iuxor(this)},n.prototype.inotn=function(d){r(typeof d=="number"&&d>=0);var b=Math.ceil(d/26)|0,E=d%26;this._expand(b),E>0&&b--;for(var p=0;p0&&(this.words[p]=~this.words[p]&67108863>>26-E),this.strip()},n.prototype.notn=function(d){return this.clone().inotn(d)},n.prototype.setn=function(d,b){r(typeof d=="number"&&d>=0);var E=d/26|0,p=d%26;return this._expand(E+1),b?this.words[E]=this.words[E]|1<d.length?(E=this,p=d):(E=d,p=this);for(var f=0,s=0;s>>26;for(;f!==0&&s>>26;if(this.length=E.length,f!==0)this.words[this.length]=f,this.length++;else if(E!==this)for(;sd.length?this.clone().iadd(d):d.clone().iadd(this)},n.prototype.isub=function(d){if(d.negative!==0){d.negative=0;var b=this.iadd(d);return d.negative=1,b._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(d),this.negative=1,this._normSign();var E=this.cmp(d);if(E===0)return this.negative=0,this.length=1,this.words[0]=0,this;var p,f;E>0?(p=this,f=d):(p=d,f=this);for(var s=0,v=0;v>26,this.words[v]=b&67108863;for(;s!==0&&v>26,this.words[v]=b&67108863;if(s===0&&v>>26,q=l&67108863,_=Math.min(h,d.length-1),u=Math.max(0,h-k.length+1);u<=_;u++){var I=h-u|0;p=k.words[I]|0,f=d.words[u]|0,s=p*f+q,A+=s/67108864|0,q=s&67108863}b.words[h]=q|0,l=A|0}return l!==0?b.words[h]=l|0:b.length--,b.strip()}var N=function(d,b,E){var p=d.words,f=b.words,s=E.words,v=0,l,h,A,q=p[0]|0,_=q&8191,u=q>>>13,I=p[1]|0,j=I&8191,S=I>>>13,L=p[2]|0,Q=L&8191,z=L>>>13,J=p[3]|0,he=J&8191,W=J>>>13,te=p[4]|0,Qe=te&8191,ne=te>>>13,ye=p[5]|0,Rt=ye&8191,Pe=ye>>>13,We=p[6]|0,It=We&8191,Ue=We>>>13,tt=p[7]|0,St=tt&8191,Re=tt>>>13,rt=p[8]|0,Et=rt&8191,Oe=rt>>>13,it=p[9]|0,Tt=it&8191,ke=it>>>13,nt=f[0]|0,Ct=nt&8191,Te=nt>>>13,Ze=f[1]|0,wt=Ze&8191,Be=Ze>>>13,et=f[2]|0,_t=et&8191,qe=et>>>13,ft=f[3]|0,Ot=ft&8191,Fe=ft>>>13,ut=f[4]|0,lt=ut&8191,Se=ut>>>13,Xe=f[5]|0,Bt=Xe&8191,De=Xe>>>13,at=f[6]|0,Ut=at&8191,_e=at>>>13,ot=f[7]|0,C=ot&8191,T=ot>>>13,O=f[8]|0,w=O&8191,D=O>>>13,H=f[9]|0,Y=H&8191,V=H>>>13;E.negative=d.negative^b.negative,E.length=19,l=Math.imul(_,Ct),h=Math.imul(_,Te),h=h+Math.imul(u,Ct)|0,A=Math.imul(u,Te);var ee=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ee>>>26)|0,ee&=67108863,l=Math.imul(j,Ct),h=Math.imul(j,Te),h=h+Math.imul(S,Ct)|0,A=Math.imul(S,Te),l=l+Math.imul(_,wt)|0,h=h+Math.imul(_,Be)|0,h=h+Math.imul(u,wt)|0,A=A+Math.imul(u,Be)|0;var Ee=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(Q,Ct),h=Math.imul(Q,Te),h=h+Math.imul(z,Ct)|0,A=Math.imul(z,Te),l=l+Math.imul(j,wt)|0,h=h+Math.imul(j,Be)|0,h=h+Math.imul(S,wt)|0,A=A+Math.imul(S,Be)|0,l=l+Math.imul(_,_t)|0,h=h+Math.imul(_,qe)|0,h=h+Math.imul(u,_t)|0,A=A+Math.imul(u,qe)|0;var ae=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ae>>>26)|0,ae&=67108863,l=Math.imul(he,Ct),h=Math.imul(he,Te),h=h+Math.imul(W,Ct)|0,A=Math.imul(W,Te),l=l+Math.imul(Q,wt)|0,h=h+Math.imul(Q,Be)|0,h=h+Math.imul(z,wt)|0,A=A+Math.imul(z,Be)|0,l=l+Math.imul(j,_t)|0,h=h+Math.imul(j,qe)|0,h=h+Math.imul(S,_t)|0,A=A+Math.imul(S,qe)|0,l=l+Math.imul(_,Ot)|0,h=h+Math.imul(_,Fe)|0,h=h+Math.imul(u,Ot)|0,A=A+Math.imul(u,Fe)|0;var xe=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(xe>>>26)|0,xe&=67108863,l=Math.imul(Qe,Ct),h=Math.imul(Qe,Te),h=h+Math.imul(ne,Ct)|0,A=Math.imul(ne,Te),l=l+Math.imul(he,wt)|0,h=h+Math.imul(he,Be)|0,h=h+Math.imul(W,wt)|0,A=A+Math.imul(W,Be)|0,l=l+Math.imul(Q,_t)|0,h=h+Math.imul(Q,qe)|0,h=h+Math.imul(z,_t)|0,A=A+Math.imul(z,qe)|0,l=l+Math.imul(j,Ot)|0,h=h+Math.imul(j,Fe)|0,h=h+Math.imul(S,Ot)|0,A=A+Math.imul(S,Fe)|0,l=l+Math.imul(_,lt)|0,h=h+Math.imul(_,Se)|0,h=h+Math.imul(u,lt)|0,A=A+Math.imul(u,Se)|0;var we=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(we>>>26)|0,we&=67108863,l=Math.imul(Rt,Ct),h=Math.imul(Rt,Te),h=h+Math.imul(Pe,Ct)|0,A=Math.imul(Pe,Te),l=l+Math.imul(Qe,wt)|0,h=h+Math.imul(Qe,Be)|0,h=h+Math.imul(ne,wt)|0,A=A+Math.imul(ne,Be)|0,l=l+Math.imul(he,_t)|0,h=h+Math.imul(he,qe)|0,h=h+Math.imul(W,_t)|0,A=A+Math.imul(W,qe)|0,l=l+Math.imul(Q,Ot)|0,h=h+Math.imul(Q,Fe)|0,h=h+Math.imul(z,Ot)|0,A=A+Math.imul(z,Fe)|0,l=l+Math.imul(j,lt)|0,h=h+Math.imul(j,Se)|0,h=h+Math.imul(S,lt)|0,A=A+Math.imul(S,Se)|0,l=l+Math.imul(_,Bt)|0,h=h+Math.imul(_,De)|0,h=h+Math.imul(u,Bt)|0,A=A+Math.imul(u,De)|0;var je=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(je>>>26)|0,je&=67108863,l=Math.imul(It,Ct),h=Math.imul(It,Te),h=h+Math.imul(Ue,Ct)|0,A=Math.imul(Ue,Te),l=l+Math.imul(Rt,wt)|0,h=h+Math.imul(Rt,Be)|0,h=h+Math.imul(Pe,wt)|0,A=A+Math.imul(Pe,Be)|0,l=l+Math.imul(Qe,_t)|0,h=h+Math.imul(Qe,qe)|0,h=h+Math.imul(ne,_t)|0,A=A+Math.imul(ne,qe)|0,l=l+Math.imul(he,Ot)|0,h=h+Math.imul(he,Fe)|0,h=h+Math.imul(W,Ot)|0,A=A+Math.imul(W,Fe)|0,l=l+Math.imul(Q,lt)|0,h=h+Math.imul(Q,Se)|0,h=h+Math.imul(z,lt)|0,A=A+Math.imul(z,Se)|0,l=l+Math.imul(j,Bt)|0,h=h+Math.imul(j,De)|0,h=h+Math.imul(S,Bt)|0,A=A+Math.imul(S,De)|0,l=l+Math.imul(_,Ut)|0,h=h+Math.imul(_,_e)|0,h=h+Math.imul(u,Ut)|0,A=A+Math.imul(u,_e)|0;var ze=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(ze>>>26)|0,ze&=67108863,l=Math.imul(St,Ct),h=Math.imul(St,Te),h=h+Math.imul(Re,Ct)|0,A=Math.imul(Re,Te),l=l+Math.imul(It,wt)|0,h=h+Math.imul(It,Be)|0,h=h+Math.imul(Ue,wt)|0,A=A+Math.imul(Ue,Be)|0,l=l+Math.imul(Rt,_t)|0,h=h+Math.imul(Rt,qe)|0,h=h+Math.imul(Pe,_t)|0,A=A+Math.imul(Pe,qe)|0,l=l+Math.imul(Qe,Ot)|0,h=h+Math.imul(Qe,Fe)|0,h=h+Math.imul(ne,Ot)|0,A=A+Math.imul(ne,Fe)|0,l=l+Math.imul(he,lt)|0,h=h+Math.imul(he,Se)|0,h=h+Math.imul(W,lt)|0,A=A+Math.imul(W,Se)|0,l=l+Math.imul(Q,Bt)|0,h=h+Math.imul(Q,De)|0,h=h+Math.imul(z,Bt)|0,A=A+Math.imul(z,De)|0,l=l+Math.imul(j,Ut)|0,h=h+Math.imul(j,_e)|0,h=h+Math.imul(S,Ut)|0,A=A+Math.imul(S,_e)|0,l=l+Math.imul(_,C)|0,h=h+Math.imul(_,T)|0,h=h+Math.imul(u,C)|0,A=A+Math.imul(u,T)|0;var Ye=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,l=Math.imul(Et,Ct),h=Math.imul(Et,Te),h=h+Math.imul(Oe,Ct)|0,A=Math.imul(Oe,Te),l=l+Math.imul(St,wt)|0,h=h+Math.imul(St,Be)|0,h=h+Math.imul(Re,wt)|0,A=A+Math.imul(Re,Be)|0,l=l+Math.imul(It,_t)|0,h=h+Math.imul(It,qe)|0,h=h+Math.imul(Ue,_t)|0,A=A+Math.imul(Ue,qe)|0,l=l+Math.imul(Rt,Ot)|0,h=h+Math.imul(Rt,Fe)|0,h=h+Math.imul(Pe,Ot)|0,A=A+Math.imul(Pe,Fe)|0,l=l+Math.imul(Qe,lt)|0,h=h+Math.imul(Qe,Se)|0,h=h+Math.imul(ne,lt)|0,A=A+Math.imul(ne,Se)|0,l=l+Math.imul(he,Bt)|0,h=h+Math.imul(he,De)|0,h=h+Math.imul(W,Bt)|0,A=A+Math.imul(W,De)|0,l=l+Math.imul(Q,Ut)|0,h=h+Math.imul(Q,_e)|0,h=h+Math.imul(z,Ut)|0,A=A+Math.imul(z,_e)|0,l=l+Math.imul(j,C)|0,h=h+Math.imul(j,T)|0,h=h+Math.imul(S,C)|0,A=A+Math.imul(S,T)|0,l=l+Math.imul(_,w)|0,h=h+Math.imul(_,D)|0,h=h+Math.imul(u,w)|0,A=A+Math.imul(u,D)|0;var Ge=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,l=Math.imul(Tt,Ct),h=Math.imul(Tt,Te),h=h+Math.imul(ke,Ct)|0,A=Math.imul(ke,Te),l=l+Math.imul(Et,wt)|0,h=h+Math.imul(Et,Be)|0,h=h+Math.imul(Oe,wt)|0,A=A+Math.imul(Oe,Be)|0,l=l+Math.imul(St,_t)|0,h=h+Math.imul(St,qe)|0,h=h+Math.imul(Re,_t)|0,A=A+Math.imul(Re,qe)|0,l=l+Math.imul(It,Ot)|0,h=h+Math.imul(It,Fe)|0,h=h+Math.imul(Ue,Ot)|0,A=A+Math.imul(Ue,Fe)|0,l=l+Math.imul(Rt,lt)|0,h=h+Math.imul(Rt,Se)|0,h=h+Math.imul(Pe,lt)|0,A=A+Math.imul(Pe,Se)|0,l=l+Math.imul(Qe,Bt)|0,h=h+Math.imul(Qe,De)|0,h=h+Math.imul(ne,Bt)|0,A=A+Math.imul(ne,De)|0,l=l+Math.imul(he,Ut)|0,h=h+Math.imul(he,_e)|0,h=h+Math.imul(W,Ut)|0,A=A+Math.imul(W,_e)|0,l=l+Math.imul(Q,C)|0,h=h+Math.imul(Q,T)|0,h=h+Math.imul(z,C)|0,A=A+Math.imul(z,T)|0,l=l+Math.imul(j,w)|0,h=h+Math.imul(j,D)|0,h=h+Math.imul(S,w)|0,A=A+Math.imul(S,D)|0,l=l+Math.imul(_,Y)|0,h=h+Math.imul(_,V)|0,h=h+Math.imul(u,Y)|0,A=A+Math.imul(u,V)|0;var Ve=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,l=Math.imul(Tt,wt),h=Math.imul(Tt,Be),h=h+Math.imul(ke,wt)|0,A=Math.imul(ke,Be),l=l+Math.imul(Et,_t)|0,h=h+Math.imul(Et,qe)|0,h=h+Math.imul(Oe,_t)|0,A=A+Math.imul(Oe,qe)|0,l=l+Math.imul(St,Ot)|0,h=h+Math.imul(St,Fe)|0,h=h+Math.imul(Re,Ot)|0,A=A+Math.imul(Re,Fe)|0,l=l+Math.imul(It,lt)|0,h=h+Math.imul(It,Se)|0,h=h+Math.imul(Ue,lt)|0,A=A+Math.imul(Ue,Se)|0,l=l+Math.imul(Rt,Bt)|0,h=h+Math.imul(Rt,De)|0,h=h+Math.imul(Pe,Bt)|0,A=A+Math.imul(Pe,De)|0,l=l+Math.imul(Qe,Ut)|0,h=h+Math.imul(Qe,_e)|0,h=h+Math.imul(ne,Ut)|0,A=A+Math.imul(ne,_e)|0,l=l+Math.imul(he,C)|0,h=h+Math.imul(he,T)|0,h=h+Math.imul(W,C)|0,A=A+Math.imul(W,T)|0,l=l+Math.imul(Q,w)|0,h=h+Math.imul(Q,D)|0,h=h+Math.imul(z,w)|0,A=A+Math.imul(z,D)|0,l=l+Math.imul(j,Y)|0,h=h+Math.imul(j,V)|0,h=h+Math.imul(S,Y)|0,A=A+Math.imul(S,V)|0;var Je=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Je>>>26)|0,Je&=67108863,l=Math.imul(Tt,_t),h=Math.imul(Tt,qe),h=h+Math.imul(ke,_t)|0,A=Math.imul(ke,qe),l=l+Math.imul(Et,Ot)|0,h=h+Math.imul(Et,Fe)|0,h=h+Math.imul(Oe,Ot)|0,A=A+Math.imul(Oe,Fe)|0,l=l+Math.imul(St,lt)|0,h=h+Math.imul(St,Se)|0,h=h+Math.imul(Re,lt)|0,A=A+Math.imul(Re,Se)|0,l=l+Math.imul(It,Bt)|0,h=h+Math.imul(It,De)|0,h=h+Math.imul(Ue,Bt)|0,A=A+Math.imul(Ue,De)|0,l=l+Math.imul(Rt,Ut)|0,h=h+Math.imul(Rt,_e)|0,h=h+Math.imul(Pe,Ut)|0,A=A+Math.imul(Pe,_e)|0,l=l+Math.imul(Qe,C)|0,h=h+Math.imul(Qe,T)|0,h=h+Math.imul(ne,C)|0,A=A+Math.imul(ne,T)|0,l=l+Math.imul(he,w)|0,h=h+Math.imul(he,D)|0,h=h+Math.imul(W,w)|0,A=A+Math.imul(W,D)|0,l=l+Math.imul(Q,Y)|0,h=h+Math.imul(Q,V)|0,h=h+Math.imul(z,Y)|0,A=A+Math.imul(z,V)|0;var $e=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+($e>>>26)|0,$e&=67108863,l=Math.imul(Tt,Ot),h=Math.imul(Tt,Fe),h=h+Math.imul(ke,Ot)|0,A=Math.imul(ke,Fe),l=l+Math.imul(Et,lt)|0,h=h+Math.imul(Et,Se)|0,h=h+Math.imul(Oe,lt)|0,A=A+Math.imul(Oe,Se)|0,l=l+Math.imul(St,Bt)|0,h=h+Math.imul(St,De)|0,h=h+Math.imul(Re,Bt)|0,A=A+Math.imul(Re,De)|0,l=l+Math.imul(It,Ut)|0,h=h+Math.imul(It,_e)|0,h=h+Math.imul(Ue,Ut)|0,A=A+Math.imul(Ue,_e)|0,l=l+Math.imul(Rt,C)|0,h=h+Math.imul(Rt,T)|0,h=h+Math.imul(Pe,C)|0,A=A+Math.imul(Pe,T)|0,l=l+Math.imul(Qe,w)|0,h=h+Math.imul(Qe,D)|0,h=h+Math.imul(ne,w)|0,A=A+Math.imul(ne,D)|0,l=l+Math.imul(he,Y)|0,h=h+Math.imul(he,V)|0,h=h+Math.imul(W,Y)|0,A=A+Math.imul(W,V)|0;var Ie=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul(Tt,lt),h=Math.imul(Tt,Se),h=h+Math.imul(ke,lt)|0,A=Math.imul(ke,Se),l=l+Math.imul(Et,Bt)|0,h=h+Math.imul(Et,De)|0,h=h+Math.imul(Oe,Bt)|0,A=A+Math.imul(Oe,De)|0,l=l+Math.imul(St,Ut)|0,h=h+Math.imul(St,_e)|0,h=h+Math.imul(Re,Ut)|0,A=A+Math.imul(Re,_e)|0,l=l+Math.imul(It,C)|0,h=h+Math.imul(It,T)|0,h=h+Math.imul(Ue,C)|0,A=A+Math.imul(Ue,T)|0,l=l+Math.imul(Rt,w)|0,h=h+Math.imul(Rt,D)|0,h=h+Math.imul(Pe,w)|0,A=A+Math.imul(Pe,D)|0,l=l+Math.imul(Qe,Y)|0,h=h+Math.imul(Qe,V)|0,h=h+Math.imul(ne,Y)|0,A=A+Math.imul(ne,V)|0;var Le=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Le>>>26)|0,Le&=67108863,l=Math.imul(Tt,Bt),h=Math.imul(Tt,De),h=h+Math.imul(ke,Bt)|0,A=Math.imul(ke,De),l=l+Math.imul(Et,Ut)|0,h=h+Math.imul(Et,_e)|0,h=h+Math.imul(Oe,Ut)|0,A=A+Math.imul(Oe,_e)|0,l=l+Math.imul(St,C)|0,h=h+Math.imul(St,T)|0,h=h+Math.imul(Re,C)|0,A=A+Math.imul(Re,T)|0,l=l+Math.imul(It,w)|0,h=h+Math.imul(It,D)|0,h=h+Math.imul(Ue,w)|0,A=A+Math.imul(Ue,D)|0,l=l+Math.imul(Rt,Y)|0,h=h+Math.imul(Rt,V)|0,h=h+Math.imul(Pe,Y)|0,A=A+Math.imul(Pe,V)|0;var Ae=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,l=Math.imul(Tt,Ut),h=Math.imul(Tt,_e),h=h+Math.imul(ke,Ut)|0,A=Math.imul(ke,_e),l=l+Math.imul(Et,C)|0,h=h+Math.imul(Et,T)|0,h=h+Math.imul(Oe,C)|0,A=A+Math.imul(Oe,T)|0,l=l+Math.imul(St,w)|0,h=h+Math.imul(St,D)|0,h=h+Math.imul(Re,w)|0,A=A+Math.imul(Re,D)|0,l=l+Math.imul(It,Y)|0,h=h+Math.imul(It,V)|0,h=h+Math.imul(Ue,Y)|0,A=A+Math.imul(Ue,V)|0;var Me=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(Tt,C),h=Math.imul(Tt,T),h=h+Math.imul(ke,C)|0,A=Math.imul(ke,T),l=l+Math.imul(Et,w)|0,h=h+Math.imul(Et,D)|0,h=h+Math.imul(Oe,w)|0,A=A+Math.imul(Oe,D)|0,l=l+Math.imul(St,Y)|0,h=h+Math.imul(St,V)|0,h=h+Math.imul(Re,Y)|0,A=A+Math.imul(Re,V)|0;var Ce=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,l=Math.imul(Tt,w),h=Math.imul(Tt,D),h=h+Math.imul(ke,w)|0,A=Math.imul(ke,D),l=l+Math.imul(Et,Y)|0,h=h+Math.imul(Et,V)|0,h=h+Math.imul(Oe,Y)|0,A=A+Math.imul(Oe,V)|0;var me=(v+l|0)+((h&8191)<<13)|0;v=(A+(h>>>13)|0)+(me>>>26)|0,me&=67108863,l=Math.imul(Tt,Y),h=Math.imul(Tt,V),h=h+Math.imul(ke,Y)|0,A=Math.imul(ke,V);var $=(v+l|0)+((h&8191)<<13)|0;return v=(A+(h>>>13)|0)+($>>>26)|0,$&=67108863,s[0]=ee,s[1]=Ee,s[2]=ae,s[3]=xe,s[4]=we,s[5]=je,s[6]=ze,s[7]=Ye,s[8]=Ge,s[9]=Ve,s[10]=Je,s[11]=$e,s[12]=Ie,s[13]=Le,s[14]=Ae,s[15]=Me,s[16]=Ce,s[17]=me,s[18]=$,v!==0&&(s[19]=v,E.length++),E};Math.imul||(N=F);function G(k,d,b){b.negative=d.negative^k.negative,b.length=k.length+d.length;for(var E=0,p=0,f=0;f>>26)|0,p+=s>>>26,s&=67108863}b.words[f]=v,E=s,s=p}return E!==0?b.words[f]=E:b.length--,b.strip()}function Z(k,d,b){var E=new ie;return E.mulp(k,d,b)}n.prototype.mulTo=function(d,b){var E,p=this.length+d.length;return this.length===10&&d.length===10?E=N(this,d,b):p<63?E=F(this,d,b):p<1024?E=G(this,d,b):E=Z(this,d,b),E};function ie(k,d){this.x=k,this.y=d}ie.prototype.makeRBT=function(d){for(var b=new Array(d),E=n.prototype._countBits(d)-1,p=0;p>=1;return p},ie.prototype.permute=function(d,b,E,p,f,s){for(var v=0;v>>1)f++;return 1<>>13,E[2*s+1]=f&8191,f=f>>>13;for(s=2*b;s>=26,b+=p/67108864|0,b+=f>>>26,this.words[E]=f&67108863}return b!==0&&(this.words[E]=b,this.length++),this},n.prototype.muln=function(d){return this.clone().imuln(d)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(d){var b=R(d);if(b.length===0)return new n(1);for(var E=this,p=0;p=0);var b=d%26,E=(d-b)/26,p=67108863>>>26-b<<26-b,f;if(b!==0){var s=0;for(f=0;f>>26-b}s&&(this.words[f]=s,this.length++)}if(E!==0){for(f=this.length-1;f>=0;f--)this.words[f+E]=this.words[f];for(f=0;f=0);var p;b?p=(b-b%26)/26:p=0;var f=d%26,s=Math.min((d-f)/26,this.length),v=67108863^67108863>>>f<s)for(this.length-=s,h=0;h=0&&(A!==0||h>=p);h--){var q=this.words[h]|0;this.words[h]=A<<26-f|q>>>f,A=q&v}return l&&A!==0&&(l.words[l.length++]=A),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(d,b,E){return r(this.negative===0),this.iushrn(d,b,E)},n.prototype.shln=function(d){return this.clone().ishln(d)},n.prototype.ushln=function(d){return this.clone().iushln(d)},n.prototype.shrn=function(d){return this.clone().ishrn(d)},n.prototype.ushrn=function(d){return this.clone().iushrn(d)},n.prototype.testn=function(d){r(typeof d=="number"&&d>=0);var b=d%26,E=(d-b)/26,p=1<=0);var b=d%26,E=(d-b)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=E)return this;if(b!==0&&E++,this.length=Math.min(E,this.length),b!==0){var p=67108863^67108863>>>b<=67108864;b++)this.words[b]-=67108864,b===this.length-1?this.words[b+1]=1:this.words[b+1]++;return this.length=Math.max(this.length,b+1),this},n.prototype.isubn=function(d){if(r(typeof d=="number"),r(d<67108864),d<0)return this.iaddn(-d);if(this.negative!==0)return this.negative=0,this.iaddn(d),this.negative=1,this;if(this.words[0]-=d,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var b=0;b>26)-(l/67108864|0),this.words[f+E]=s&67108863}for(;f>26,this.words[f+E]=s&67108863;if(v===0)return this.strip();for(r(v===-1),v=0,f=0;f>26,this.words[f]=s&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(d,b){var E=this.length-d.length,p=this.clone(),f=d,s=f.words[f.length-1]|0,v=this._countBits(s);E=26-v,E!==0&&(f=f.ushln(E),p.iushln(E),s=f.words[f.length-1]|0);var l=p.length-f.length,h;if(b!=="mod"){h=new n(null),h.length=l+1,h.words=new Array(h.length);for(var A=0;A=0;_--){var u=(p.words[f.length+_]|0)*67108864+(p.words[f.length+_-1]|0);for(u=Math.min(u/s|0,67108863),p._ishlnsubmul(f,u,_);p.negative!==0;)u--,p.negative=0,p._ishlnsubmul(f,1,_),p.isZero()||(p.negative^=1);h&&(h.words[_]=u)}return h&&h.strip(),p.strip(),b!=="div"&&E!==0&&p.iushrn(E),{div:h||null,mod:p}},n.prototype.divmod=function(d,b,E){if(r(!d.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var p,f,s;return this.negative!==0&&d.negative===0?(s=this.neg().divmod(d,b),b!=="mod"&&(p=s.div.neg()),b!=="div"&&(f=s.mod.neg(),E&&f.negative!==0&&f.iadd(d)),{div:p,mod:f}):this.negative===0&&d.negative!==0?(s=this.divmod(d.neg(),b),b!=="mod"&&(p=s.div.neg()),{div:p,mod:s.mod}):(this.negative&d.negative)!==0?(s=this.neg().divmod(d.neg(),b),b!=="div"&&(f=s.mod.neg(),E&&f.negative!==0&&f.isub(d)),{div:s.div,mod:f}):d.length>this.length||this.cmp(d)<0?{div:new n(0),mod:this}:d.length===1?b==="div"?{div:this.divn(d.words[0]),mod:null}:b==="mod"?{div:null,mod:new n(this.modn(d.words[0]))}:{div:this.divn(d.words[0]),mod:new n(this.modn(d.words[0]))}:this._wordDiv(d,b)},n.prototype.div=function(d){return this.divmod(d,"div",!1).div},n.prototype.mod=function(d){return this.divmod(d,"mod",!1).mod},n.prototype.umod=function(d){return this.divmod(d,"mod",!0).mod},n.prototype.divRound=function(d){var b=this.divmod(d);if(b.mod.isZero())return b.div;var E=b.div.negative!==0?b.mod.isub(d):b.mod,p=d.ushrn(1),f=d.andln(1),s=E.cmp(p);return s<0||f===1&&s===0?b.div:b.div.negative!==0?b.div.isubn(1):b.div.iaddn(1)},n.prototype.modn=function(d){r(d<=67108863);for(var b=(1<<26)%d,E=0,p=this.length-1;p>=0;p--)E=(b*E+(this.words[p]|0))%d;return E},n.prototype.idivn=function(d){r(d<=67108863);for(var b=0,E=this.length-1;E>=0;E--){var p=(this.words[E]|0)+b*67108864;this.words[E]=p/d|0,b=p%d}return this.strip()},n.prototype.divn=function(d){return this.clone().idivn(d)},n.prototype.egcd=function(d){r(d.negative===0),r(!d.isZero());var b=this,E=d.clone();b.negative!==0?b=b.umod(d):b=b.clone();for(var p=new n(1),f=new n(0),s=new n(0),v=new n(1),l=0;b.isEven()&&E.isEven();)b.iushrn(1),E.iushrn(1),++l;for(var h=E.clone(),A=b.clone();!b.isZero();){for(var q=0,_=1;(b.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(b.iushrn(q);q-- >0;)(p.isOdd()||f.isOdd())&&(p.iadd(h),f.isub(A)),p.iushrn(1),f.iushrn(1);for(var u=0,I=1;(E.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(E.iushrn(u);u-- >0;)(s.isOdd()||v.isOdd())&&(s.iadd(h),v.isub(A)),s.iushrn(1),v.iushrn(1);b.cmp(E)>=0?(b.isub(E),p.isub(s),f.isub(v)):(E.isub(b),s.isub(p),v.isub(f))}return{a:s,b:v,gcd:E.iushln(l)}},n.prototype._invmp=function(d){r(d.negative===0),r(!d.isZero());var b=this,E=d.clone();b.negative!==0?b=b.umod(d):b=b.clone();for(var p=new n(1),f=new n(0),s=E.clone();b.cmpn(1)>0&&E.cmpn(1)>0;){for(var v=0,l=1;(b.words[0]&l)===0&&v<26;++v,l<<=1);if(v>0)for(b.iushrn(v);v-- >0;)p.isOdd()&&p.iadd(s),p.iushrn(1);for(var h=0,A=1;(E.words[0]&A)===0&&h<26;++h,A<<=1);if(h>0)for(E.iushrn(h);h-- >0;)f.isOdd()&&f.iadd(s),f.iushrn(1);b.cmp(E)>=0?(b.isub(E),p.isub(f)):(E.isub(b),f.isub(p))}var q;return b.cmpn(1)===0?q=p:q=f,q.cmpn(0)<0&&q.iadd(d),q},n.prototype.gcd=function(d){if(this.isZero())return d.abs();if(d.isZero())return this.abs();var b=this.clone(),E=d.clone();b.negative=0,E.negative=0;for(var p=0;b.isEven()&&E.isEven();p++)b.iushrn(1),E.iushrn(1);do{for(;b.isEven();)b.iushrn(1);for(;E.isEven();)E.iushrn(1);var f=b.cmp(E);if(f<0){var s=b;b=E,E=s}else if(f===0||E.cmpn(1)===0)break;b.isub(E)}while(!0);return E.iushln(p)},n.prototype.invm=function(d){return this.egcd(d).a.umod(d)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(d){return this.words[0]&d},n.prototype.bincn=function(d){r(typeof d=="number");var b=d%26,E=(d-b)/26,p=1<>>26,v&=67108863,this.words[s]=v}return f!==0&&(this.words[s]=f,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(d){var b=d<0;if(this.negative!==0&&!b)return-1;if(this.negative===0&&b)return 1;this.strip();var E;if(this.length>1)E=1;else{b&&(d=-d),r(d<=67108863,"Number is too big");var p=this.words[0]|0;E=p===d?0:pd.length)return 1;if(this.length=0;E--){var p=this.words[E]|0,f=d.words[E]|0;if(p!==f){pf&&(b=1);break}}return b},n.prototype.gtn=function(d){return this.cmpn(d)===1},n.prototype.gt=function(d){return this.cmp(d)===1},n.prototype.gten=function(d){return this.cmpn(d)>=0},n.prototype.gte=function(d){return this.cmp(d)>=0},n.prototype.ltn=function(d){return this.cmpn(d)===-1},n.prototype.lt=function(d){return this.cmp(d)===-1},n.prototype.lten=function(d){return this.cmpn(d)<=0},n.prototype.lte=function(d){return this.cmp(d)<=0},n.prototype.eqn=function(d){return this.cmpn(d)===0},n.prototype.eq=function(d){return this.cmp(d)===0},n.red=function(d){return new pe(d)},n.prototype.toRed=function(d){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),d.convertTo(this)._forceRed(d)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(d){return this.red=d,this},n.prototype.forceRed=function(d){return r(!this.red,"Already a number in reduction context"),this._forceRed(d)},n.prototype.redAdd=function(d){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,d)},n.prototype.redIAdd=function(d){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,d)},n.prototype.redSub=function(d){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,d)},n.prototype.redISub=function(d){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,d)},n.prototype.redShl=function(d){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,d)},n.prototype.redMul=function(d){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,d),this.red.mul(this,d)},n.prototype.redIMul=function(d){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,d),this.red.imul(this,d)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(d){return r(this.red&&!d.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,d)};var fe={k256:null,p224:null,p192:null,p25519:null};function ce(k,d){this.name=k,this.p=new n(d,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ce.prototype._tmp=function(){var d=new n(null);return d.words=new Array(Math.ceil(this.n/13)),d},ce.prototype.ireduce=function(d){var b=d,E;do this.split(b,this.tmp),b=this.imulK(b),b=b.iadd(this.tmp),E=b.bitLength();while(E>this.n);var p=E0?b.isub(this.p):b.strip!==void 0?b.strip():b._strip(),b},ce.prototype.split=function(d,b){d.iushrn(this.n,0,b)},ce.prototype.imulK=function(d){return d.imul(this.k)};function ge(){ce.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(ge,ce),ge.prototype.split=function(d,b){for(var E=4194303,p=Math.min(d.length,9),f=0;f>>22,s=v}s>>>=22,d.words[f-10]=s,s===0&&d.length>10?d.length-=10:d.length-=9},ge.prototype.imulK=function(d){d.words[d.length]=0,d.words[d.length+1]=0,d.length+=2;for(var b=0,E=0;E>>=26,d.words[E]=f,b=p}return b!==0&&(d.words[d.length++]=b),d},n._prime=function(d){if(fe[d])return fe[d];var b;if(d==="k256")b=new ge;else if(d==="p224")b=new ve;else if(d==="p192")b=new Ke;else if(d==="p25519")b=new be;else throw new Error("Unknown prime "+d);return fe[d]=b,b};function pe(k){if(typeof k=="string"){var d=n._prime(k);this.m=d.p,this.prime=d}else r(k.gtn(1),"modulus must be greater than 1"),this.m=k,this.prime=null}pe.prototype._verify1=function(d){r(d.negative===0,"red works only with positives"),r(d.red,"red works only with red numbers")},pe.prototype._verify2=function(d,b){r((d.negative|b.negative)===0,"red works only with positives"),r(d.red&&d.red===b.red,"red works only with red numbers")},pe.prototype.imod=function(d){return this.prime?this.prime.ireduce(d)._forceRed(this):d.umod(this.m)._forceRed(this)},pe.prototype.neg=function(d){return d.isZero()?d.clone():this.m.sub(d)._forceRed(this)},pe.prototype.add=function(d,b){this._verify2(d,b);var E=d.add(b);return E.cmp(this.m)>=0&&E.isub(this.m),E._forceRed(this)},pe.prototype.iadd=function(d,b){this._verify2(d,b);var E=d.iadd(b);return E.cmp(this.m)>=0&&E.isub(this.m),E},pe.prototype.sub=function(d,b){this._verify2(d,b);var E=d.sub(b);return E.cmpn(0)<0&&E.iadd(this.m),E._forceRed(this)},pe.prototype.isub=function(d,b){this._verify2(d,b);var E=d.isub(b);return E.cmpn(0)<0&&E.iadd(this.m),E},pe.prototype.shl=function(d,b){return this._verify1(d),this.imod(d.ushln(b))},pe.prototype.imul=function(d,b){return this._verify2(d,b),this.imod(d.imul(b))},pe.prototype.mul=function(d,b){return this._verify2(d,b),this.imod(d.mul(b))},pe.prototype.isqr=function(d){return this.imul(d,d.clone())},pe.prototype.sqr=function(d){return this.mul(d,d)},pe.prototype.sqrt=function(d){if(d.isZero())return d.clone();var b=this.m.andln(3);if(r(b%2===1),b===3){var E=this.m.add(new n(1)).iushrn(2);return this.pow(d,E)}for(var p=this.m.subn(1),f=0;!p.isZero()&&p.andln(1)===0;)f++,p.iushrn(1);r(!p.isZero());var s=new n(1).toRed(this),v=s.redNeg(),l=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new n(2*h*h).toRed(this);this.pow(h,l).cmp(v)!==0;)h.redIAdd(v);for(var A=this.pow(h,p),q=this.pow(d,p.addn(1).iushrn(1)),_=this.pow(d,p),u=f;_.cmp(s)!==0;){for(var I=_,j=0;I.cmp(s)!==0;j++)I=I.redSqr();r(j=0;f--){for(var A=b.words[f],q=h-1;q>=0;q--){var _=A>>q&1;if(s!==p[0]&&(s=this.sqr(s)),_===0&&v===0){l=0;continue}v<<=1,v|=_,l++,!(l!==E&&(f!==0||q!==0))&&(s=this.mul(s,p[v]),l=0,v=0)}h=26}return s},pe.prototype.convertTo=function(d){var b=d.umod(this.m);return b===d?b.clone():b},pe.prototype.convertFrom=function(d){var b=d.clone();return b.red=null,b},n.mont=function(d){return new Ne(d)};function Ne(k){pe.call(this,k),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(Ne,pe),Ne.prototype.convertTo=function(d){return this.imod(d.ushln(this.shift))},Ne.prototype.convertFrom=function(d){var b=this.imod(d.mul(this.rinv));return b.red=null,b},Ne.prototype.imul=function(d,b){if(d.isZero()||b.isZero())return d.words[0]=0,d.length=1,d;var E=d.imul(b),p=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),f=E.isub(p).iushrn(this.shift),s=f;return f.cmp(this.m)>=0?s=f.isub(this.m):f.cmpn(0)<0&&(s=f.iadd(this.m)),s._forceRed(this)},Ne.prototype.mul=function(d,b){if(d.isZero()||b.isZero())return new n(0)._forceRed(this);var E=d.mul(b),p=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),f=E.isub(p).iushrn(this.shift),s=f;return f.cmp(this.m)>=0?s=f.isub(this.m):f.cmpn(0)<0&&(s=f.iadd(this.m)),s._forceRed(this)},Ne.prototype.invm=function(d){var b=this.imod(d._invmp(this.m).mul(this.r2));return b._forceRed(this)}})(typeof V1>"u"||V1,Ow)});var $1=P(()=>{g()});var Wu=P((Lee,X1)=>{g();var W1;X1.exports=function(e){return W1||(W1=new ef(null)),W1.generate(e)};function ef(t){this.rand=t}X1.exports.Rand=ef;ef.prototype.generate=function(e){return this._rand(e)};ef.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),i=0;i{g();var Hf=sr(),SF=Wu();function zf(t){this.rand=t||new SF.Rand}Dw.exports=zf;zf.create=function(e){return new zf(e)};zf.prototype._randbelow=function(e){var r=e.bitLength(),i=Math.ceil(r/8);do var n=new Hf(this.rand.generate(i));while(n.cmp(e)>=0);return n};zf.prototype._randrange=function(e,r){var i=r.sub(e);return e.add(this._randbelow(i))};zf.prototype.test=function(e,r,i){var n=e.bitLength(),a=Hf.mont(e),o=new Hf(1).toRed(a);r||(r=Math.max(1,n/48|0));for(var c=e.subn(1),m=0;!c.testn(m);m++);for(var M=e.shrn(m),B=c.toRed(a),R=!0;r>0;r--){var F=this._randrange(new Hf(2),c);i&&i(F);var N=F.toRed(a).redPow(M);if(!(N.cmp(o)===0||N.cmp(B)===0)){for(var G=1;G0;r--){var B=this._randrange(new Hf(2),o),R=e.gcd(B);if(R.cmpn(1)!==0)return R;var F=B.toRed(n).redPow(m);if(!(F.cmp(a)===0||F.cmp(M)===0)){for(var N=1;N{g();var CF=qf();kw.exports=np;np.simpleSieve=rp;np.fermatTest=ip;var br=sr(),BF=new br(24),qF=Z1(),Pw=new qF,RF=new br(1),tp=new br(2),TF=new br(5),jee=new br(16),Hee=new br(8),OF=new br(10),DF=new br(3),zee=new br(7),PF=new br(11),Uw=new br(4),Gee=new br(12),ep=null;function UF(){if(ep!==null)return ep;var t=1048576,e=[];e[0]=2;for(var r=1,i=3;it;)r.ishrn(1);if(r.isEven()&&r.iadd(RF),r.testn(1)||r.iadd(tp),e.cmp(tp)){if(!e.cmp(TF))for(;r.mod(OF).cmp(DF);)r.iadd(Uw)}else for(;r.mod(BF).cmp(PF);)r.iadd(Uw);if(i=r.shrn(1),rp(i)&&rp(r)&&ip(i)&&ip(r)&&Pw.test(i)&&Pw.test(r))return r}}});var Fw=P(($ee,kF)=>{kF.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}});var Kw=P((Wee,Qw)=>{g();var oi=sr(),FF=Z1(),Lw=new FF,LF=new oi(24),NF=new oi(11),QF=new oi(10),KF=new oi(3),jF=new oi(7),Nw=fp(),HF=qf();Qw.exports=In;function zF(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this._pub=new oi(t),this}function GF(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this._priv=new oi(t),this}var Ju={};function YF(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in Ju)return Ju[i];var n=0;if(t.isEven()||!Nw.simpleSieve||!Nw.fermatTest(t)||!Lw.test(t))return n+=1,r==="02"||r==="05"?n+=8:n+=4,Ju[i]=n,n;Lw.test(t.shrn(1))||(n+=2);var a;switch(r){case"02":t.mod(LF).cmp(NF)&&(n+=8);break;case"05":a=t.mod(QF),a.cmp(KF)&&a.cmp(jF)&&(n+=8);break;default:n+=4}return Ju[i]=n,n}function In(t,e,r){this.setGenerator(e),this.__prime=new oi(t),this._prime=oi.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=zF,this.setPrivateKey=GF):this._primeCode=8}Object.defineProperty(In.prototype,"verifyError",{enumerable:!0,get:function(){return typeof this._primeCode!="number"&&(this._primeCode=YF(this.__prime,this.__gen)),this._primeCode}});In.prototype.generateKeys=function(){return this._priv||(this._priv=new oi(HF(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()};In.prototype.computeSecret=function(t){t=new oi(t),t=t.toRed(this._prime);var e=t.redPow(this._priv).fromRed(),r=new U(e.toArray()),i=this.getPrime();if(r.length{g();var VF=fp(),jw=Fw(),ap=Kw();function $F(t){var e=new U(jw[t].prime,"hex"),r=new U(jw[t].gen,"hex");return new ap(e,r)}var WF={binary:!0,hex:!0,base64:!0};function Hw(t,e,r,i){return U.isBuffer(e)||WF[e]===void 0?Hw(t,"binary",e,r):(e=e||"binary",i=i||"binary",r=r||new U([2]),U.isBuffer(r)||(r=new U(r,i)),typeof t=="number"?new ap(VF(t,r),r,!0):(U.isBuffer(t)||(t=new U(t,e)),new ap(t,r,!0)))}Ta.DiffieHellmanGroup=Ta.createDiffieHellmanGroup=Ta.getDiffieHellman=$F;Ta.createDiffieHellman=Ta.DiffieHellman=Hw});var Yw=P((Gw,op)=>{g();(function(t,e){"use strict";function r(p,f){if(!p)throw new Error(f||"Assertion failed")}function i(p,f){p.super_=f;var s=function(){};s.prototype=f.prototype,p.prototype=new s,p.prototype.constructor=p}function n(p,f,s){if(n.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((f==="le"||f==="be")&&(s=f,f=10),this._init(p||0,f||10,s||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=$u().Buffer}catch{}n.isBN=function(f){return f instanceof n?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===n.wordSize&&Array.isArray(f.words)},n.max=function(f,s){return f.cmp(s)>0?f:s},n.min=function(f,s){return f.cmp(s)<0?f:s},n.prototype._init=function(f,s,v){if(typeof f=="number")return this._initNumber(f,s,v);if(typeof f=="object")return this._initArray(f,s,v);s==="hex"&&(s=16),r(s===(s|0)&&s>=2&&s<=36),f=f.toString().replace(/\s+/g,"");var l=0;f[0]==="-"&&(l++,this.negative=1),l=0;l-=3)A=f[l]|f[l-1]<<8|f[l-2]<<16,this.words[h]|=A<>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);else if(v==="le")for(l=0,h=0;l>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);return this._strip()};function o(p,f){var s=p.charCodeAt(f);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;r(!1,"Invalid character in "+p)}function c(p,f,s){var v=o(p,s);return s-1>=f&&(v|=o(p,s-1)<<4),v}n.prototype._parseHex=function(f,s,v){this.length=Math.ceil((f.length-s)/6),this.words=new Array(this.length);for(var l=0;l=s;l-=2)q=c(f,s,l)<=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8;else{var _=f.length-s;for(l=_%2===0?s+1:s;l=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8}this._strip()};function m(p,f,s,v){for(var l=0,h=0,A=Math.min(p.length,s),q=f;q=49?h=_-49+10:_>=17?h=_-17+10:h=_,r(_>=0&&h1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=B}catch{n.prototype.inspect=B}else n.prototype.inspect=B;function B(){return(this.red?""}var R=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],F=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(f,s){f=f||10,s=s|0||1;var v;if(f===16||f==="hex"){v="";for(var l=0,h=0,A=0;A>>24-l&16777215,h!==0||A!==this.length-1?v=R[6-_.length]+_+v:v=_+v,l+=2,l>=26&&(l-=26,A--)}for(h!==0&&(v=h.toString(16)+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}if(f===(f|0)&&f>=2&&f<=36){var u=F[f],I=N[f];v="";var j=this.clone();for(j.negative=0;!j.isZero();){var S=j.modrn(I).toString(f);j=j.idivn(I),j.isZero()?v=S+v:v=R[u-S.length]+S+v}for(this.isZero()&&(v="0"+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},n.prototype.toJSON=function(){return this.toString(16,2)},a&&(n.prototype.toBuffer=function(f,s){return this.toArrayLike(a,f,s)}),n.prototype.toArray=function(f,s){return this.toArrayLike(Array,f,s)};var G=function(f,s){return f.allocUnsafe?f.allocUnsafe(s):new f(s)};n.prototype.toArrayLike=function(f,s,v){this._strip();var l=this.byteLength(),h=v||Math.max(1,l);r(l<=h,"byte array longer than desired length"),r(h>0,"Requested array length <= 0");var A=G(f,h),q=s==="le"?"LE":"BE";return this["_toArrayLike"+q](A,l),A},n.prototype._toArrayLikeLE=function(f,s){for(var v=0,l=0,h=0,A=0;h>8&255),v>16&255),A===6?(v>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v=0&&(f[v--]=q>>8&255),v>=0&&(f[v--]=q>>16&255),A===6?(v>=0&&(f[v--]=q>>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v>=0)for(f[v--]=l;v>=0;)f[v--]=0},Math.clz32?n.prototype._countBits=function(f){return 32-Math.clz32(f)}:n.prototype._countBits=function(f){var s=f,v=0;return s>=4096&&(v+=13,s>>>=13),s>=64&&(v+=7,s>>>=7),s>=8&&(v+=4,s>>>=4),s>=2&&(v+=2,s>>>=2),v+s},n.prototype._zeroBits=function(f){if(f===0)return 26;var s=f,v=0;return(s&8191)===0&&(v+=13,s>>>=13),(s&127)===0&&(v+=7,s>>>=7),(s&15)===0&&(v+=4,s>>>=4),(s&3)===0&&(v+=2,s>>>=2),(s&1)===0&&v++,v},n.prototype.bitLength=function(){var f=this.words[this.length-1],s=this._countBits(f);return(this.length-1)*26+s};function Z(p){for(var f=new Array(p.bitLength()),s=0;s>>l&1}return f}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,s=0;sf.length?this.clone().ior(f):f.clone().ior(this)},n.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},n.prototype.iuand=function(f){var s;this.length>f.length?s=f:s=this;for(var v=0;vf.length?this.clone().iand(f):f.clone().iand(this)},n.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},n.prototype.iuxor=function(f){var s,v;this.length>f.length?(s=this,v=f):(s=f,v=this);for(var l=0;lf.length?this.clone().ixor(f):f.clone().ixor(this)},n.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},n.prototype.inotn=function(f){r(typeof f=="number"&&f>=0);var s=Math.ceil(f/26)|0,v=f%26;this._expand(s),v>0&&s--;for(var l=0;l0&&(this.words[l]=~this.words[l]&67108863>>26-v),this._strip()},n.prototype.notn=function(f){return this.clone().inotn(f)},n.prototype.setn=function(f,s){r(typeof f=="number"&&f>=0);var v=f/26|0,l=f%26;return this._expand(v+1),s?this.words[v]=this.words[v]|1<f.length?(v=this,l=f):(v=f,l=this);for(var h=0,A=0;A>>26;for(;h!==0&&A>>26;if(this.length=v.length,h!==0)this.words[this.length]=h,this.length++;else if(v!==this)for(;Af.length?this.clone().iadd(f):f.clone().iadd(this)},n.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var s=this.iadd(f);return f.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var v=this.cmp(f);if(v===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,h;v>0?(l=this,h=f):(l=f,h=this);for(var A=0,q=0;q>26,this.words[q]=s&67108863;for(;A!==0&&q>26,this.words[q]=s&67108863;if(A===0&&q>>26,j=_&67108863,S=Math.min(u,f.length-1),L=Math.max(0,u-p.length+1);L<=S;L++){var Q=u-L|0;l=p.words[Q]|0,h=f.words[L]|0,A=l*h+j,I+=A/67108864|0,j=A&67108863}s.words[u]=j|0,_=I|0}return _!==0?s.words[u]=_|0:s.length--,s._strip()}var fe=function(f,s,v){var l=f.words,h=s.words,A=v.words,q=0,_,u,I,j=l[0]|0,S=j&8191,L=j>>>13,Q=l[1]|0,z=Q&8191,J=Q>>>13,he=l[2]|0,W=he&8191,te=he>>>13,Qe=l[3]|0,ne=Qe&8191,ye=Qe>>>13,Rt=l[4]|0,Pe=Rt&8191,We=Rt>>>13,It=l[5]|0,Ue=It&8191,tt=It>>>13,St=l[6]|0,Re=St&8191,rt=St>>>13,Et=l[7]|0,Oe=Et&8191,it=Et>>>13,Tt=l[8]|0,ke=Tt&8191,nt=Tt>>>13,Ct=l[9]|0,Te=Ct&8191,Ze=Ct>>>13,wt=h[0]|0,Be=wt&8191,et=wt>>>13,_t=h[1]|0,qe=_t&8191,ft=_t>>>13,Ot=h[2]|0,Fe=Ot&8191,ut=Ot>>>13,lt=h[3]|0,Se=lt&8191,Xe=lt>>>13,Bt=h[4]|0,De=Bt&8191,at=Bt>>>13,Ut=h[5]|0,_e=Ut&8191,ot=Ut>>>13,C=h[6]|0,T=C&8191,O=C>>>13,w=h[7]|0,D=w&8191,H=w>>>13,Y=h[8]|0,V=Y&8191,ee=Y>>>13,Ee=h[9]|0,ae=Ee&8191,xe=Ee>>>13;v.negative=f.negative^s.negative,v.length=19,_=Math.imul(S,Be),u=Math.imul(S,et),u=u+Math.imul(L,Be)|0,I=Math.imul(L,et);var we=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(we>>>26)|0,we&=67108863,_=Math.imul(z,Be),u=Math.imul(z,et),u=u+Math.imul(J,Be)|0,I=Math.imul(J,et),_=_+Math.imul(S,qe)|0,u=u+Math.imul(S,ft)|0,u=u+Math.imul(L,qe)|0,I=I+Math.imul(L,ft)|0;var je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(je>>>26)|0,je&=67108863,_=Math.imul(W,Be),u=Math.imul(W,et),u=u+Math.imul(te,Be)|0,I=Math.imul(te,et),_=_+Math.imul(z,qe)|0,u=u+Math.imul(z,ft)|0,u=u+Math.imul(J,qe)|0,I=I+Math.imul(J,ft)|0,_=_+Math.imul(S,Fe)|0,u=u+Math.imul(S,ut)|0,u=u+Math.imul(L,Fe)|0,I=I+Math.imul(L,ut)|0;var ze=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(ze>>>26)|0,ze&=67108863,_=Math.imul(ne,Be),u=Math.imul(ne,et),u=u+Math.imul(ye,Be)|0,I=Math.imul(ye,et),_=_+Math.imul(W,qe)|0,u=u+Math.imul(W,ft)|0,u=u+Math.imul(te,qe)|0,I=I+Math.imul(te,ft)|0,_=_+Math.imul(z,Fe)|0,u=u+Math.imul(z,ut)|0,u=u+Math.imul(J,Fe)|0,I=I+Math.imul(J,ut)|0,_=_+Math.imul(S,Se)|0,u=u+Math.imul(S,Xe)|0,u=u+Math.imul(L,Se)|0,I=I+Math.imul(L,Xe)|0;var Ye=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,_=Math.imul(Pe,Be),u=Math.imul(Pe,et),u=u+Math.imul(We,Be)|0,I=Math.imul(We,et),_=_+Math.imul(ne,qe)|0,u=u+Math.imul(ne,ft)|0,u=u+Math.imul(ye,qe)|0,I=I+Math.imul(ye,ft)|0,_=_+Math.imul(W,Fe)|0,u=u+Math.imul(W,ut)|0,u=u+Math.imul(te,Fe)|0,I=I+Math.imul(te,ut)|0,_=_+Math.imul(z,Se)|0,u=u+Math.imul(z,Xe)|0,u=u+Math.imul(J,Se)|0,I=I+Math.imul(J,Xe)|0,_=_+Math.imul(S,De)|0,u=u+Math.imul(S,at)|0,u=u+Math.imul(L,De)|0,I=I+Math.imul(L,at)|0;var Ge=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,_=Math.imul(Ue,Be),u=Math.imul(Ue,et),u=u+Math.imul(tt,Be)|0,I=Math.imul(tt,et),_=_+Math.imul(Pe,qe)|0,u=u+Math.imul(Pe,ft)|0,u=u+Math.imul(We,qe)|0,I=I+Math.imul(We,ft)|0,_=_+Math.imul(ne,Fe)|0,u=u+Math.imul(ne,ut)|0,u=u+Math.imul(ye,Fe)|0,I=I+Math.imul(ye,ut)|0,_=_+Math.imul(W,Se)|0,u=u+Math.imul(W,Xe)|0,u=u+Math.imul(te,Se)|0,I=I+Math.imul(te,Xe)|0,_=_+Math.imul(z,De)|0,u=u+Math.imul(z,at)|0,u=u+Math.imul(J,De)|0,I=I+Math.imul(J,at)|0,_=_+Math.imul(S,_e)|0,u=u+Math.imul(S,ot)|0,u=u+Math.imul(L,_e)|0,I=I+Math.imul(L,ot)|0;var Ve=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,_=Math.imul(Re,Be),u=Math.imul(Re,et),u=u+Math.imul(rt,Be)|0,I=Math.imul(rt,et),_=_+Math.imul(Ue,qe)|0,u=u+Math.imul(Ue,ft)|0,u=u+Math.imul(tt,qe)|0,I=I+Math.imul(tt,ft)|0,_=_+Math.imul(Pe,Fe)|0,u=u+Math.imul(Pe,ut)|0,u=u+Math.imul(We,Fe)|0,I=I+Math.imul(We,ut)|0,_=_+Math.imul(ne,Se)|0,u=u+Math.imul(ne,Xe)|0,u=u+Math.imul(ye,Se)|0,I=I+Math.imul(ye,Xe)|0,_=_+Math.imul(W,De)|0,u=u+Math.imul(W,at)|0,u=u+Math.imul(te,De)|0,I=I+Math.imul(te,at)|0,_=_+Math.imul(z,_e)|0,u=u+Math.imul(z,ot)|0,u=u+Math.imul(J,_e)|0,I=I+Math.imul(J,ot)|0,_=_+Math.imul(S,T)|0,u=u+Math.imul(S,O)|0,u=u+Math.imul(L,T)|0,I=I+Math.imul(L,O)|0;var Je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Je>>>26)|0,Je&=67108863,_=Math.imul(Oe,Be),u=Math.imul(Oe,et),u=u+Math.imul(it,Be)|0,I=Math.imul(it,et),_=_+Math.imul(Re,qe)|0,u=u+Math.imul(Re,ft)|0,u=u+Math.imul(rt,qe)|0,I=I+Math.imul(rt,ft)|0,_=_+Math.imul(Ue,Fe)|0,u=u+Math.imul(Ue,ut)|0,u=u+Math.imul(tt,Fe)|0,I=I+Math.imul(tt,ut)|0,_=_+Math.imul(Pe,Se)|0,u=u+Math.imul(Pe,Xe)|0,u=u+Math.imul(We,Se)|0,I=I+Math.imul(We,Xe)|0,_=_+Math.imul(ne,De)|0,u=u+Math.imul(ne,at)|0,u=u+Math.imul(ye,De)|0,I=I+Math.imul(ye,at)|0,_=_+Math.imul(W,_e)|0,u=u+Math.imul(W,ot)|0,u=u+Math.imul(te,_e)|0,I=I+Math.imul(te,ot)|0,_=_+Math.imul(z,T)|0,u=u+Math.imul(z,O)|0,u=u+Math.imul(J,T)|0,I=I+Math.imul(J,O)|0,_=_+Math.imul(S,D)|0,u=u+Math.imul(S,H)|0,u=u+Math.imul(L,D)|0,I=I+Math.imul(L,H)|0;var $e=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($e>>>26)|0,$e&=67108863,_=Math.imul(ke,Be),u=Math.imul(ke,et),u=u+Math.imul(nt,Be)|0,I=Math.imul(nt,et),_=_+Math.imul(Oe,qe)|0,u=u+Math.imul(Oe,ft)|0,u=u+Math.imul(it,qe)|0,I=I+Math.imul(it,ft)|0,_=_+Math.imul(Re,Fe)|0,u=u+Math.imul(Re,ut)|0,u=u+Math.imul(rt,Fe)|0,I=I+Math.imul(rt,ut)|0,_=_+Math.imul(Ue,Se)|0,u=u+Math.imul(Ue,Xe)|0,u=u+Math.imul(tt,Se)|0,I=I+Math.imul(tt,Xe)|0,_=_+Math.imul(Pe,De)|0,u=u+Math.imul(Pe,at)|0,u=u+Math.imul(We,De)|0,I=I+Math.imul(We,at)|0,_=_+Math.imul(ne,_e)|0,u=u+Math.imul(ne,ot)|0,u=u+Math.imul(ye,_e)|0,I=I+Math.imul(ye,ot)|0,_=_+Math.imul(W,T)|0,u=u+Math.imul(W,O)|0,u=u+Math.imul(te,T)|0,I=I+Math.imul(te,O)|0,_=_+Math.imul(z,D)|0,u=u+Math.imul(z,H)|0,u=u+Math.imul(J,D)|0,I=I+Math.imul(J,H)|0,_=_+Math.imul(S,V)|0,u=u+Math.imul(S,ee)|0,u=u+Math.imul(L,V)|0,I=I+Math.imul(L,ee)|0;var Ie=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,_=Math.imul(Te,Be),u=Math.imul(Te,et),u=u+Math.imul(Ze,Be)|0,I=Math.imul(Ze,et),_=_+Math.imul(ke,qe)|0,u=u+Math.imul(ke,ft)|0,u=u+Math.imul(nt,qe)|0,I=I+Math.imul(nt,ft)|0,_=_+Math.imul(Oe,Fe)|0,u=u+Math.imul(Oe,ut)|0,u=u+Math.imul(it,Fe)|0,I=I+Math.imul(it,ut)|0,_=_+Math.imul(Re,Se)|0,u=u+Math.imul(Re,Xe)|0,u=u+Math.imul(rt,Se)|0,I=I+Math.imul(rt,Xe)|0,_=_+Math.imul(Ue,De)|0,u=u+Math.imul(Ue,at)|0,u=u+Math.imul(tt,De)|0,I=I+Math.imul(tt,at)|0,_=_+Math.imul(Pe,_e)|0,u=u+Math.imul(Pe,ot)|0,u=u+Math.imul(We,_e)|0,I=I+Math.imul(We,ot)|0,_=_+Math.imul(ne,T)|0,u=u+Math.imul(ne,O)|0,u=u+Math.imul(ye,T)|0,I=I+Math.imul(ye,O)|0,_=_+Math.imul(W,D)|0,u=u+Math.imul(W,H)|0,u=u+Math.imul(te,D)|0,I=I+Math.imul(te,H)|0,_=_+Math.imul(z,V)|0,u=u+Math.imul(z,ee)|0,u=u+Math.imul(J,V)|0,I=I+Math.imul(J,ee)|0,_=_+Math.imul(S,ae)|0,u=u+Math.imul(S,xe)|0,u=u+Math.imul(L,ae)|0,I=I+Math.imul(L,xe)|0;var Le=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Le>>>26)|0,Le&=67108863,_=Math.imul(Te,qe),u=Math.imul(Te,ft),u=u+Math.imul(Ze,qe)|0,I=Math.imul(Ze,ft),_=_+Math.imul(ke,Fe)|0,u=u+Math.imul(ke,ut)|0,u=u+Math.imul(nt,Fe)|0,I=I+Math.imul(nt,ut)|0,_=_+Math.imul(Oe,Se)|0,u=u+Math.imul(Oe,Xe)|0,u=u+Math.imul(it,Se)|0,I=I+Math.imul(it,Xe)|0,_=_+Math.imul(Re,De)|0,u=u+Math.imul(Re,at)|0,u=u+Math.imul(rt,De)|0,I=I+Math.imul(rt,at)|0,_=_+Math.imul(Ue,_e)|0,u=u+Math.imul(Ue,ot)|0,u=u+Math.imul(tt,_e)|0,I=I+Math.imul(tt,ot)|0,_=_+Math.imul(Pe,T)|0,u=u+Math.imul(Pe,O)|0,u=u+Math.imul(We,T)|0,I=I+Math.imul(We,O)|0,_=_+Math.imul(ne,D)|0,u=u+Math.imul(ne,H)|0,u=u+Math.imul(ye,D)|0,I=I+Math.imul(ye,H)|0,_=_+Math.imul(W,V)|0,u=u+Math.imul(W,ee)|0,u=u+Math.imul(te,V)|0,I=I+Math.imul(te,ee)|0,_=_+Math.imul(z,ae)|0,u=u+Math.imul(z,xe)|0,u=u+Math.imul(J,ae)|0,I=I+Math.imul(J,xe)|0;var Ae=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,_=Math.imul(Te,Fe),u=Math.imul(Te,ut),u=u+Math.imul(Ze,Fe)|0,I=Math.imul(Ze,ut),_=_+Math.imul(ke,Se)|0,u=u+Math.imul(ke,Xe)|0,u=u+Math.imul(nt,Se)|0,I=I+Math.imul(nt,Xe)|0,_=_+Math.imul(Oe,De)|0,u=u+Math.imul(Oe,at)|0,u=u+Math.imul(it,De)|0,I=I+Math.imul(it,at)|0,_=_+Math.imul(Re,_e)|0,u=u+Math.imul(Re,ot)|0,u=u+Math.imul(rt,_e)|0,I=I+Math.imul(rt,ot)|0,_=_+Math.imul(Ue,T)|0,u=u+Math.imul(Ue,O)|0,u=u+Math.imul(tt,T)|0,I=I+Math.imul(tt,O)|0,_=_+Math.imul(Pe,D)|0,u=u+Math.imul(Pe,H)|0,u=u+Math.imul(We,D)|0,I=I+Math.imul(We,H)|0,_=_+Math.imul(ne,V)|0,u=u+Math.imul(ne,ee)|0,u=u+Math.imul(ye,V)|0,I=I+Math.imul(ye,ee)|0,_=_+Math.imul(W,ae)|0,u=u+Math.imul(W,xe)|0,u=u+Math.imul(te,ae)|0,I=I+Math.imul(te,xe)|0;var Me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,_=Math.imul(Te,Se),u=Math.imul(Te,Xe),u=u+Math.imul(Ze,Se)|0,I=Math.imul(Ze,Xe),_=_+Math.imul(ke,De)|0,u=u+Math.imul(ke,at)|0,u=u+Math.imul(nt,De)|0,I=I+Math.imul(nt,at)|0,_=_+Math.imul(Oe,_e)|0,u=u+Math.imul(Oe,ot)|0,u=u+Math.imul(it,_e)|0,I=I+Math.imul(it,ot)|0,_=_+Math.imul(Re,T)|0,u=u+Math.imul(Re,O)|0,u=u+Math.imul(rt,T)|0,I=I+Math.imul(rt,O)|0,_=_+Math.imul(Ue,D)|0,u=u+Math.imul(Ue,H)|0,u=u+Math.imul(tt,D)|0,I=I+Math.imul(tt,H)|0,_=_+Math.imul(Pe,V)|0,u=u+Math.imul(Pe,ee)|0,u=u+Math.imul(We,V)|0,I=I+Math.imul(We,ee)|0,_=_+Math.imul(ne,ae)|0,u=u+Math.imul(ne,xe)|0,u=u+Math.imul(ye,ae)|0,I=I+Math.imul(ye,xe)|0;var Ce=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,_=Math.imul(Te,De),u=Math.imul(Te,at),u=u+Math.imul(Ze,De)|0,I=Math.imul(Ze,at),_=_+Math.imul(ke,_e)|0,u=u+Math.imul(ke,ot)|0,u=u+Math.imul(nt,_e)|0,I=I+Math.imul(nt,ot)|0,_=_+Math.imul(Oe,T)|0,u=u+Math.imul(Oe,O)|0,u=u+Math.imul(it,T)|0,I=I+Math.imul(it,O)|0,_=_+Math.imul(Re,D)|0,u=u+Math.imul(Re,H)|0,u=u+Math.imul(rt,D)|0,I=I+Math.imul(rt,H)|0,_=_+Math.imul(Ue,V)|0,u=u+Math.imul(Ue,ee)|0,u=u+Math.imul(tt,V)|0,I=I+Math.imul(tt,ee)|0,_=_+Math.imul(Pe,ae)|0,u=u+Math.imul(Pe,xe)|0,u=u+Math.imul(We,ae)|0,I=I+Math.imul(We,xe)|0;var me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(me>>>26)|0,me&=67108863,_=Math.imul(Te,_e),u=Math.imul(Te,ot),u=u+Math.imul(Ze,_e)|0,I=Math.imul(Ze,ot),_=_+Math.imul(ke,T)|0,u=u+Math.imul(ke,O)|0,u=u+Math.imul(nt,T)|0,I=I+Math.imul(nt,O)|0,_=_+Math.imul(Oe,D)|0,u=u+Math.imul(Oe,H)|0,u=u+Math.imul(it,D)|0,I=I+Math.imul(it,H)|0,_=_+Math.imul(Re,V)|0,u=u+Math.imul(Re,ee)|0,u=u+Math.imul(rt,V)|0,I=I+Math.imul(rt,ee)|0,_=_+Math.imul(Ue,ae)|0,u=u+Math.imul(Ue,xe)|0,u=u+Math.imul(tt,ae)|0,I=I+Math.imul(tt,xe)|0;var $=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($>>>26)|0,$&=67108863,_=Math.imul(Te,T),u=Math.imul(Te,O),u=u+Math.imul(Ze,T)|0,I=Math.imul(Ze,O),_=_+Math.imul(ke,D)|0,u=u+Math.imul(ke,H)|0,u=u+Math.imul(nt,D)|0,I=I+Math.imul(nt,H)|0,_=_+Math.imul(Oe,V)|0,u=u+Math.imul(Oe,ee)|0,u=u+Math.imul(it,V)|0,I=I+Math.imul(it,ee)|0,_=_+Math.imul(Re,ae)|0,u=u+Math.imul(Re,xe)|0,u=u+Math.imul(rt,ae)|0,I=I+Math.imul(rt,xe)|0;var X=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(X>>>26)|0,X&=67108863,_=Math.imul(Te,D),u=Math.imul(Te,H),u=u+Math.imul(Ze,D)|0,I=Math.imul(Ze,H),_=_+Math.imul(ke,V)|0,u=u+Math.imul(ke,ee)|0,u=u+Math.imul(nt,V)|0,I=I+Math.imul(nt,ee)|0,_=_+Math.imul(Oe,ae)|0,u=u+Math.imul(Oe,xe)|0,u=u+Math.imul(it,ae)|0,I=I+Math.imul(it,xe)|0;var de=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(de>>>26)|0,de&=67108863,_=Math.imul(Te,V),u=Math.imul(Te,ee),u=u+Math.imul(Ze,V)|0,I=Math.imul(Ze,ee),_=_+Math.imul(ke,ae)|0,u=u+Math.imul(ke,xe)|0,u=u+Math.imul(nt,ae)|0,I=I+Math.imul(nt,xe)|0;var oe=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(oe>>>26)|0,oe&=67108863,_=Math.imul(Te,ae),u=Math.imul(Te,xe),u=u+Math.imul(Ze,ae)|0,I=Math.imul(Ze,xe);var se=(q+_|0)+((u&8191)<<13)|0;return q=(I+(u>>>13)|0)+(se>>>26)|0,se&=67108863,A[0]=we,A[1]=je,A[2]=ze,A[3]=Ye,A[4]=Ge,A[5]=Ve,A[6]=Je,A[7]=$e,A[8]=Ie,A[9]=Le,A[10]=Ae,A[11]=Me,A[12]=Ce,A[13]=me,A[14]=$,A[15]=X,A[16]=de,A[17]=oe,A[18]=se,q!==0&&(A[19]=q,v.length++),v};Math.imul||(fe=ie);function ce(p,f,s){s.negative=f.negative^p.negative,s.length=p.length+f.length;for(var v=0,l=0,h=0;h>>26)|0,l+=A>>>26,A&=67108863}s.words[h]=q,v=A,A=l}return v!==0?s.words[h]=v:s.length--,s._strip()}function ge(p,f,s){return ce(p,f,s)}n.prototype.mulTo=function(f,s){var v,l=this.length+f.length;return this.length===10&&f.length===10?v=fe(this,f,s):l<63?v=ie(this,f,s):l<1024?v=ce(this,f,s):v=ge(this,f,s),v};function ve(p,f){this.x=p,this.y=f}ve.prototype.makeRBT=function(f){for(var s=new Array(f),v=n.prototype._countBits(f)-1,l=0;l>=1;return l},ve.prototype.permute=function(f,s,v,l,h,A){for(var q=0;q>>1)h++;return 1<>>13,v[2*A+1]=h&8191,h=h>>>13;for(A=2*s;A>=26,v+=h/67108864|0,v+=A>>>26,this.words[l]=A&67108863}return v!==0&&(this.words[l]=v,this.length++),s?this.ineg():this},n.prototype.muln=function(f){return this.clone().imuln(f)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(f){var s=Z(f);if(s.length===0)return new n(1);for(var v=this,l=0;l=0);var s=f%26,v=(f-s)/26,l=67108863>>>26-s<<26-s,h;if(s!==0){var A=0;for(h=0;h>>26-s}A&&(this.words[h]=A,this.length++)}if(v!==0){for(h=this.length-1;h>=0;h--)this.words[h+v]=this.words[h];for(h=0;h=0);var l;s?l=(s-s%26)/26:l=0;var h=f%26,A=Math.min((f-h)/26,this.length),q=67108863^67108863>>>h<A)for(this.length-=A,u=0;u=0&&(I!==0||u>=l);u--){var j=this.words[u]|0;this.words[u]=I<<26-h|j>>>h,I=j&q}return _&&I!==0&&(_.words[_.length++]=I),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(f,s,v){return r(this.negative===0),this.iushrn(f,s,v)},n.prototype.shln=function(f){return this.clone().ishln(f)},n.prototype.ushln=function(f){return this.clone().iushln(f)},n.prototype.shrn=function(f){return this.clone().ishrn(f)},n.prototype.ushrn=function(f){return this.clone().iushrn(f)},n.prototype.testn=function(f){r(typeof f=="number"&&f>=0);var s=f%26,v=(f-s)/26,l=1<=0);var s=f%26,v=(f-s)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=v)return this;if(s!==0&&v++,this.length=Math.min(v,this.length),s!==0){var l=67108863^67108863>>>s<=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},n.prototype.isubn=function(f){if(r(typeof f=="number"),r(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s>26)-(_/67108864|0),this.words[h+v]=A&67108863}for(;h>26,this.words[h+v]=A&67108863;if(q===0)return this._strip();for(r(q===-1),q=0,h=0;h>26,this.words[h]=A&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(f,s){var v=this.length-f.length,l=this.clone(),h=f,A=h.words[h.length-1]|0,q=this._countBits(A);v=26-q,v!==0&&(h=h.ushln(v),l.iushln(v),A=h.words[h.length-1]|0);var _=l.length-h.length,u;if(s!=="mod"){u=new n(null),u.length=_+1,u.words=new Array(u.length);for(var I=0;I=0;S--){var L=(l.words[h.length+S]|0)*67108864+(l.words[h.length+S-1]|0);for(L=Math.min(L/A|0,67108863),l._ishlnsubmul(h,L,S);l.negative!==0;)L--,l.negative=0,l._ishlnsubmul(h,1,S),l.isZero()||(l.negative^=1);u&&(u.words[S]=L)}return u&&u._strip(),l._strip(),s!=="div"&&v!==0&&l.iushrn(v),{div:u||null,mod:l}},n.prototype.divmod=function(f,s,v){if(r(!f.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var l,h,A;return this.negative!==0&&f.negative===0?(A=this.neg().divmod(f,s),s!=="mod"&&(l=A.div.neg()),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.iadd(f)),{div:l,mod:h}):this.negative===0&&f.negative!==0?(A=this.divmod(f.neg(),s),s!=="mod"&&(l=A.div.neg()),{div:l,mod:A.mod}):(this.negative&f.negative)!==0?(A=this.neg().divmod(f.neg(),s),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.isub(f)),{div:A.div,mod:h}):f.length>this.length||this.cmp(f)<0?{div:new n(0),mod:this}:f.length===1?s==="div"?{div:this.divn(f.words[0]),mod:null}:s==="mod"?{div:null,mod:new n(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new n(this.modrn(f.words[0]))}:this._wordDiv(f,s)},n.prototype.div=function(f){return this.divmod(f,"div",!1).div},n.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},n.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},n.prototype.divRound=function(f){var s=this.divmod(f);if(s.mod.isZero())return s.div;var v=s.div.negative!==0?s.mod.isub(f):s.mod,l=f.ushrn(1),h=f.andln(1),A=v.cmp(l);return A<0||h===1&&A===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},n.prototype.modrn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=(1<<26)%f,l=0,h=this.length-1;h>=0;h--)l=(v*l+(this.words[h]|0))%f;return s?-l:l},n.prototype.modn=function(f){return this.modrn(f)},n.prototype.idivn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=0,l=this.length-1;l>=0;l--){var h=(this.words[l]|0)+v*67108864;this.words[l]=h/f|0,v=h%f}return this._strip(),s?this.ineg():this},n.prototype.divn=function(f){return this.clone().idivn(f)},n.prototype.egcd=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=new n(0),q=new n(1),_=0;s.isEven()&&v.isEven();)s.iushrn(1),v.iushrn(1),++_;for(var u=v.clone(),I=s.clone();!s.isZero();){for(var j=0,S=1;(s.words[0]&S)===0&&j<26;++j,S<<=1);if(j>0)for(s.iushrn(j);j-- >0;)(l.isOdd()||h.isOdd())&&(l.iadd(u),h.isub(I)),l.iushrn(1),h.iushrn(1);for(var L=0,Q=1;(v.words[0]&Q)===0&&L<26;++L,Q<<=1);if(L>0)for(v.iushrn(L);L-- >0;)(A.isOdd()||q.isOdd())&&(A.iadd(u),q.isub(I)),A.iushrn(1),q.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(A),h.isub(q)):(v.isub(s),A.isub(l),q.isub(h))}return{a:A,b:q,gcd:v.iushln(_)}},n.prototype._invmp=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=v.clone();s.cmpn(1)>0&&v.cmpn(1)>0;){for(var q=0,_=1;(s.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(s.iushrn(q);q-- >0;)l.isOdd()&&l.iadd(A),l.iushrn(1);for(var u=0,I=1;(v.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(v.iushrn(u);u-- >0;)h.isOdd()&&h.iadd(A),h.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(h)):(v.isub(s),h.isub(l))}var j;return s.cmpn(1)===0?j=l:j=h,j.cmpn(0)<0&&j.iadd(f),j},n.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var s=this.clone(),v=f.clone();s.negative=0,v.negative=0;for(var l=0;s.isEven()&&v.isEven();l++)s.iushrn(1),v.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;v.isEven();)v.iushrn(1);var h=s.cmp(v);if(h<0){var A=s;s=v,v=A}else if(h===0||v.cmpn(1)===0)break;s.isub(v)}while(!0);return v.iushln(l)},n.prototype.invm=function(f){return this.egcd(f).a.umod(f)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(f){return this.words[0]&f},n.prototype.bincn=function(f){r(typeof f=="number");var s=f%26,v=(f-s)/26,l=1<>>26,q&=67108863,this.words[A]=q}return h!==0&&(this.words[A]=h,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(f){var s=f<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var v;if(this.length>1)v=1;else{s&&(f=-f),r(f<=67108863,"Number is too big");var l=this.words[0]|0;v=l===f?0:lf.length)return 1;if(this.length=0;v--){var l=this.words[v]|0,h=f.words[v]|0;if(l!==h){lh&&(s=1);break}}return s},n.prototype.gtn=function(f){return this.cmpn(f)===1},n.prototype.gt=function(f){return this.cmp(f)===1},n.prototype.gten=function(f){return this.cmpn(f)>=0},n.prototype.gte=function(f){return this.cmp(f)>=0},n.prototype.ltn=function(f){return this.cmpn(f)===-1},n.prototype.lt=function(f){return this.cmp(f)===-1},n.prototype.lten=function(f){return this.cmpn(f)<=0},n.prototype.lte=function(f){return this.cmp(f)<=0},n.prototype.eqn=function(f){return this.cmpn(f)===0},n.prototype.eq=function(f){return this.cmp(f)===0},n.red=function(f){return new b(f)},n.prototype.toRed=function(f){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(f){return this.red=f,this},n.prototype.forceRed=function(f){return r(!this.red,"Already a number in reduction context"),this._forceRed(f)},n.prototype.redAdd=function(f){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},n.prototype.redIAdd=function(f){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},n.prototype.redSub=function(f){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},n.prototype.redISub=function(f){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},n.prototype.redShl=function(f){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},n.prototype.redMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},n.prototype.redIMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(f){return r(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var Ke={k256:null,p224:null,p192:null,p25519:null};function be(p,f){this.name=p,this.p=new n(f,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}be.prototype._tmp=function(){var f=new n(null);return f.words=new Array(Math.ceil(this.n/13)),f},be.prototype.ireduce=function(f){var s=f,v;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),v=s.bitLength();while(v>this.n);var l=v0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},be.prototype.split=function(f,s){f.iushrn(this.n,0,s)},be.prototype.imulK=function(f){return f.imul(this.k)};function pe(){be.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(pe,be),pe.prototype.split=function(f,s){for(var v=4194303,l=Math.min(f.length,9),h=0;h>>22,A=q}A>>>=22,f.words[h-10]=A,A===0&&f.length>10?f.length-=10:f.length-=9},pe.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var s=0,v=0;v>>=26,f.words[v]=h,s=l}return s!==0&&(f.words[f.length++]=s),f},n._prime=function(f){if(Ke[f])return Ke[f];var s;if(f==="k256")s=new pe;else if(f==="p224")s=new Ne;else if(f==="p192")s=new k;else if(f==="p25519")s=new d;else throw new Error("Unknown prime "+f);return Ke[f]=s,s};function b(p){if(typeof p=="string"){var f=n._prime(p);this.m=f.p,this.prime=f}else r(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}b.prototype._verify1=function(f){r(f.negative===0,"red works only with positives"),r(f.red,"red works only with red numbers")},b.prototype._verify2=function(f,s){r((f.negative|s.negative)===0,"red works only with positives"),r(f.red&&f.red===s.red,"red works only with red numbers")},b.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(M(f,f.umod(this.m)._forceRed(this)),f)},b.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},b.prototype.add=function(f,s){this._verify2(f,s);var v=f.add(s);return v.cmp(this.m)>=0&&v.isub(this.m),v._forceRed(this)},b.prototype.iadd=function(f,s){this._verify2(f,s);var v=f.iadd(s);return v.cmp(this.m)>=0&&v.isub(this.m),v},b.prototype.sub=function(f,s){this._verify2(f,s);var v=f.sub(s);return v.cmpn(0)<0&&v.iadd(this.m),v._forceRed(this)},b.prototype.isub=function(f,s){this._verify2(f,s);var v=f.isub(s);return v.cmpn(0)<0&&v.iadd(this.m),v},b.prototype.shl=function(f,s){return this._verify1(f),this.imod(f.ushln(s))},b.prototype.imul=function(f,s){return this._verify2(f,s),this.imod(f.imul(s))},b.prototype.mul=function(f,s){return this._verify2(f,s),this.imod(f.mul(s))},b.prototype.isqr=function(f){return this.imul(f,f.clone())},b.prototype.sqr=function(f){return this.mul(f,f)},b.prototype.sqrt=function(f){if(f.isZero())return f.clone();var s=this.m.andln(3);if(r(s%2===1),s===3){var v=this.m.add(new n(1)).iushrn(2);return this.pow(f,v)}for(var l=this.m.subn(1),h=0;!l.isZero()&&l.andln(1)===0;)h++,l.iushrn(1);r(!l.isZero());var A=new n(1).toRed(this),q=A.redNeg(),_=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new n(2*u*u).toRed(this);this.pow(u,_).cmp(q)!==0;)u.redIAdd(q);for(var I=this.pow(u,l),j=this.pow(f,l.addn(1).iushrn(1)),S=this.pow(f,l),L=h;S.cmp(A)!==0;){for(var Q=S,z=0;Q.cmp(A)!==0;z++)Q=Q.redSqr();r(z=0;h--){for(var I=s.words[h],j=u-1;j>=0;j--){var S=I>>j&1;if(A!==l[0]&&(A=this.sqr(A)),S===0&&q===0){_=0;continue}q<<=1,q|=S,_++,!(_!==v&&(h!==0||j!==0))&&(A=this.mul(A,l[q]),_=0,q=0)}u=26}return A},b.prototype.convertTo=function(f){var s=f.umod(this.m);return s===f?s.clone():s},b.prototype.convertFrom=function(f){var s=f.clone();return s.red=null,s},n.mont=function(f){return new E(f)};function E(p){b.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(E,b),E.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},E.prototype.convertFrom=function(f){var s=this.imod(f.mul(this.rinv));return s.red=null,s},E.prototype.imul=function(f,s){if(f.isZero()||s.isZero())return f.words[0]=0,f.length=1,f;var v=f.imul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.mul=function(f,s){if(f.isZero()||s.isZero())return new n(0)._forceRed(this);var v=f.mul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.invm=function(f){var s=this.imod(f._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof op>"u"||op,Gw)});var Zu=P((tte,Ww)=>{g();var Oa=Yw(),JF=qf();function XF(t){var e=Vw(t),r=e.toRed(Oa.mont(t.modulus)).redPow(new Oa(t.publicExponent)).fromRed();return{blinder:r,unblinder:e.invm(t.modulus)}}function Vw(t){var e=t.modulus.byteLength(),r;do r=new Oa(JF(e));while(r.cmp(t.modulus)>=0||!r.umod(t.prime1)||!r.umod(t.prime2));return r}function $w(t,e){var r=XF(e),i=e.modulus.byteLength(),n=new Oa(t).mul(r.blinder).umod(e.modulus),a=n.toRed(Oa.mont(e.prime1)),o=n.toRed(Oa.mont(e.prime2)),c=e.coefficient,m=e.prime1,M=e.prime2,B=a.redPow(e.exponent1).fromRed(),R=o.redPow(e.exponent2).fromRed(),F=B.isub(R).imul(c).umod(m).imul(M);return R.iadd(F).imul(r.unblinder).umod(e.modulus).toArrayLike(U,"be",i)}$w.getr=Vw;Ww.exports=$w});var Jw=P((ite,ZF)=>{ZF.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var sp=P(e7=>{"use strict";g();var eh=e7;function eL(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t!="string"){for(var i=0;i>8,o=n&255;a?r.push(a,o):r.push(o)}return r}eh.toArray=eL;function Xw(t){return t.length===1?"0"+t:t}eh.zero2=Xw;function Zw(t){for(var e="",r=0;r{"use strict";g();var Mi=t7,tL=sr(),rL=zr(),th=sp();Mi.assert=rL;Mi.toArray=th.toArray;Mi.zero2=th.zero2;Mi.toHex=th.toHex;Mi.encode=th.encode;function iL(t,e,r){var i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?c=(n>>1)-m:c=m,a.isubn(c)):c=0,i[o]=c,a.iushrn(1)}return i}Mi.getNAF=iL;function nL(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var i=0,n=0,a;t.cmpn(-i)>0||e.cmpn(-n)>0;){var o=t.andln(3)+i&3,c=e.andln(3)+n&3;o===3&&(o=-1),c===3&&(c=-1);var m;(o&1)===0?m=0:(a=t.andln(7)+i&7,(a===3||a===5)&&c===2?m=-o:m=o),r[0].push(m);var M;(c&1)===0?M=0:(a=e.andln(7)+n&7,(a===3||a===5)&&o===2?M=-c:M=c),r[1].push(M),2*i===m+1&&(i=1-i),2*n===M+1&&(n=1-n),t.iushrn(1),e.iushrn(1)}return r}Mi.getJSF=nL;function fL(t,e,r){var i="_"+e;t.prototype[e]=function(){return this[i]!==void 0?this[i]:this[i]=r.call(this)}}Mi.cachedProperty=fL;function aL(t){return typeof t=="string"?Mi.toArray(t,"hex"):t}Mi.parseBytes=aL;function oL(t){return new tL(t,"hex","le")}Mi.intFromLE=oL});var As=P((ste,r7)=>{"use strict";g();var Gf=sr(),ws=Gr(),rh=ws.getNAF,sL=ws.getJSF,ih=ws.assert;function tf(t,e){this.type=t,this.p=new Gf(e.p,16),this.red=e.prime?Gf.red(e.prime):Gf.mont(this.p),this.zero=new Gf(0).toRed(this.red),this.one=new Gf(1).toRed(this.red),this.two=new Gf(2).toRed(this.red),this.n=e.n&&new Gf(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}r7.exports=tf;tf.prototype.point=function(){throw new Error("Not implemented")};tf.prototype.validate=function(){throw new Error("Not implemented")};tf.prototype._fixedNafMul=function(e,r){ih(e.precomputed);var i=e._getDoubles(),n=rh(r,1,this._bitLength),a=(1<=c;M--)m=(m<<1)+n[M];o.push(m)}for(var B=this.jpoint(null,null,null),R=this.jpoint(null,null,null),F=a;F>0;F--){for(c=0;c=0;m--){for(var M=0;m>=0&&o[m]===0;m--)M++;if(m>=0&&M++,c=c.dblp(M),m<0)break;var B=o[m];ih(B!==0),e.type==="affine"?B>0?c=c.mixedAdd(a[B-1>>1]):c=c.mixedAdd(a[-B-1>>1].neg()):B>0?c=c.add(a[B-1>>1]):c=c.add(a[-B-1>>1].neg())}return e.type==="affine"?c.toP():c};tf.prototype._wnafMulAdd=function(e,r,i,n,a){var o=this._wnafT1,c=this._wnafT2,m=this._wnafT3,M=0,B,R,F;for(B=0;B=1;B-=2){var G=B-1,Z=B;if(o[G]!==1||o[Z]!==1){m[G]=rh(i[G],o[G],this._bitLength),m[Z]=rh(i[Z],o[Z],this._bitLength),M=Math.max(m[G].length,M),M=Math.max(m[Z].length,M);continue}var ie=[r[G],null,null,r[Z]];r[G].y.cmp(r[Z].y)===0?(ie[1]=r[G].add(r[Z]),ie[2]=r[G].toJ().mixedAdd(r[Z].neg())):r[G].y.cmp(r[Z].y.redNeg())===0?(ie[1]=r[G].toJ().mixedAdd(r[Z]),ie[2]=r[G].add(r[Z].neg())):(ie[1]=r[G].toJ().mixedAdd(r[Z]),ie[2]=r[G].toJ().mixedAdd(r[Z].neg()));var fe=[-3,-1,-5,-7,0,7,5,1,3],ce=sL(i[G],i[Z]);for(M=Math.max(ce[0].length,M),m[G]=new Array(M),m[Z]=new Array(M),R=0;R=0;B--){for(var pe=0;B>=0;){var Ne=!0;for(R=0;R=0&&pe++,Ke=Ke.dblp(pe),B<0)break;for(R=0;R0?F=c[R][k-1>>1]:k<0&&(F=c[R][-k-1>>1].neg()),F.type==="affine"?Ke=Ke.mixedAdd(F):Ke=Ke.add(F))}}for(B=0;B=Math.ceil((e.bitLength()+1)/r.step):!1};si.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,a=0;a{"use strict";g();var uL=Gr(),tr=sr(),up=gt(),Da=As(),hL=uL.assert;function ui(t){Da.call(this,"short",t),this.a=new tr(t.a,16).toRed(this.red),this.b=new tr(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}up(ui,Da);i7.exports=ui;ui.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,i;if(e.beta)r=new tr(e.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);r=n[0].cmp(n[1])<0?n[0]:n[1],r=r.toRed(this.red)}if(e.lambda)i=new tr(e.lambda,16);else{var a=this._getEndoRoots(this.n);this.g.mul(a[0]).x.cmp(this.g.x.redMul(r))===0?i=a[0]:(i=a[1],hL(this.g.mul(i).x.cmp(this.g.x.redMul(r))===0))}var o;return e.basis?o=e.basis.map(function(c){return{a:new tr(c.a,16),b:new tr(c.b,16)}}):o=this._getEndoBasis(i),{beta:r,lambda:i,basis:o}}};ui.prototype._getEndoRoots=function(e){var r=e===this.p?this.red:tr.mont(e),i=new tr(2).toRed(r).redInvm(),n=i.redNeg(),a=new tr(3).toRed(r).redNeg().redSqrt().redMul(i),o=n.redAdd(a).fromRed(),c=n.redSub(a).fromRed();return[o,c]};ui.prototype._getEndoBasis=function(e){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),i=e,n=this.n.clone(),a=new tr(1),o=new tr(0),c=new tr(0),m=new tr(1),M,B,R,F,N,G,Z,ie=0,fe,ce;i.cmpn(0)!==0;){var ge=n.div(i);fe=n.sub(ge.mul(i)),ce=c.sub(ge.mul(a));var ve=m.sub(ge.mul(o));if(!R&&fe.cmp(r)<0)M=Z.neg(),B=a,R=fe.neg(),F=ce;else if(R&&++ie===2)break;Z=fe,n=i,i=fe,c=a,a=ce,m=o,o=ve}N=fe.neg(),G=ce;var Ke=R.sqr().add(F.sqr()),be=N.sqr().add(G.sqr());return be.cmp(Ke)>=0&&(N=M,G=B),R.negative&&(R=R.neg(),F=F.neg()),N.negative&&(N=N.neg(),G=G.neg()),[{a:R,b:F},{a:N,b:G}]};ui.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],n=r[1],a=n.b.mul(e).divRound(this.n),o=i.b.neg().mul(e).divRound(this.n),c=a.mul(i.a),m=o.mul(n.a),M=a.mul(i.b),B=o.mul(n.b),R=e.sub(c).sub(m),F=M.add(B).neg();return{k1:R,k2:F}};ui.prototype.pointFromX=function(e,r){e=new tr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var a=n.fromRed().isOdd();return(r&&!a||!r&&a)&&(n=n.redNeg()),this.point(e,n)};ui.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,n=this.a.redMul(r),a=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(a).cmpn(0)===0};ui.prototype._endoWnafMulAdd=function(e,r,i){for(var n=this._endoWnafT1,a=this._endoWnafT2,o=0;o":""};dr.prototype.isInfinity=function(){return this.inf};dr.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)};dr.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=e.redInvm(),a=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),o=a.redSqr().redISub(this.x.redAdd(this.x)),c=a.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,c)};dr.prototype.getX=function(){return this.x.fromRed()};dr.prototype.getY=function(){return this.y.fromRed()};dr.prototype.mul=function(e){return e=new tr(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};dr.prototype.mulAdd=function(e,r,i){var n=[this,r],a=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,a):this.curve._wnafMulAdd(1,n,a,2)};dr.prototype.jmulAdd=function(e,r,i){var n=[this,r],a=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,a,!0):this.curve._wnafMulAdd(1,n,a,2,!0)};dr.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};dr.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,n=function(a){return a.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r};dr.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function gr(t,e,r,i){Da.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new tr(0)):(this.x=new tr(e,16),this.y=new tr(r,16),this.z=new tr(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}up(gr,Da.BasePoint);ui.prototype.jpoint=function(e,r,i){return new gr(this,e,r,i)};gr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(e);return this.curve.point(i,n)};gr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};gr.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),a=e.x.redMul(i),o=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),m=n.redSub(a),M=o.redSub(c);if(m.cmpn(0)===0)return M.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var B=m.redSqr(),R=B.redMul(m),F=n.redMul(B),N=M.redSqr().redIAdd(R).redISub(F).redISub(F),G=M.redMul(F.redISub(N)).redISub(o.redMul(R)),Z=this.z.redMul(e.z).redMul(m);return this.curve.jpoint(N,G,Z)};gr.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=e.x.redMul(r),a=this.y,o=e.y.redMul(r).redMul(this.z),c=i.redSub(n),m=a.redSub(o);if(c.cmpn(0)===0)return m.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var M=c.redSqr(),B=M.redMul(c),R=i.redMul(M),F=m.redSqr().redIAdd(B).redISub(R).redISub(R),N=m.redMul(R.redISub(F)).redISub(a.redMul(B)),G=this.z.redMul(c);return this.curve.jpoint(F,N,G)};gr.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(a),this.x.cmp(i)===0)return!0}};gr.prototype.inspect=function(){return this.isInfinity()?"":""};gr.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var o7=P((dte,a7)=>{"use strict";g();var Pa=sr(),f7=gt(),nh=As(),cL=Gr();function Ua(t){nh.call(this,"mont",t),this.a=new Pa(t.a,16).toRed(this.red),this.b=new Pa(t.b,16).toRed(this.red),this.i4=new Pa(4).toRed(this.red).redInvm(),this.two=new Pa(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}f7(Ua,nh);a7.exports=Ua;Ua.prototype.validate=function(e){var r=e.normalize().x,i=r.redSqr(),n=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),a=n.redSqrt();return a.redSqr().cmp(n)===0};function lr(t,e,r){nh.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Pa(e,16),this.z=new Pa(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}f7(lr,nh.BasePoint);Ua.prototype.decodePoint=function(e,r){return this.point(cL.toArray(e,r),1)};Ua.prototype.point=function(e,r){return new lr(this,e,r)};Ua.prototype.pointFromJSON=function(e){return lr.fromJSON(this,e)};lr.prototype.precompute=function(){};lr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};lr.fromJSON=function(e,r){return new lr(e,r[0],r[1]||e.one)};lr.prototype.inspect=function(){return this.isInfinity()?"":""};lr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};lr.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),i=this.x.redSub(this.z),n=i.redSqr(),a=r.redSub(n),o=r.redMul(n),c=a.redMul(n.redAdd(this.curve.a24.redMul(a)));return this.curve.point(o,c)};lr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.diffAdd=function(e,r){var i=this.x.redAdd(this.z),n=this.x.redSub(this.z),a=e.x.redAdd(e.z),o=e.x.redSub(e.z),c=o.redMul(i),m=a.redMul(n),M=r.z.redMul(c.redAdd(m).redSqr()),B=r.x.redMul(c.redISub(m).redSqr());return this.curve.point(M,B)};lr.prototype.mul=function(e){for(var r=e.clone(),i=this,n=this.curve.point(null,null),a=this,o=[];r.cmpn(0)!==0;r.iushrn(1))o.push(r.andln(1));for(var c=o.length-1;c>=0;c--)o[c]===0?(i=i.diffAdd(n,a),n=n.dbl()):(n=i.diffAdd(n,a),i=i.dbl());return n};lr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};lr.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};lr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};lr.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var h7=P((pte,u7)=>{"use strict";g();var dL=Gr(),En=sr(),s7=gt(),fh=As(),lL=dL.assert;function Yi(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,fh.call(this,"edwards",t),this.a=new En(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new En(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new En(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),lL(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}s7(Yi,fh);u7.exports=Yi;Yi.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};Yi.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};Yi.prototype.jpoint=function(e,r,i,n){return this.point(e,r,i,n)};Yi.prototype.pointFromX=function(e,r){e=new En(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),n=this.c2.redSub(this.a.redMul(i)),a=this.one.redSub(this.c2.redMul(this.d).redMul(i)),o=n.redMul(a.redInvm()),c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");var m=c.fromRed().isOdd();return(r&&!m||!r&&m)&&(c=c.redNeg()),this.point(e,c)};Yi.prototype.pointFromY=function(e,r){e=new En(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),n=i.redSub(this.c2),a=i.redMul(this.d).redMul(this.c2).redSub(this.a),o=n.redMul(a.redInvm());if(o.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)};Yi.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),i=e.y.redSqr(),n=r.redMul(this.a).redAdd(i),a=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return n.cmp(a)===0};function Yt(t,e,r,i,n){fh.BasePoint.call(this,t,"projective"),e===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new En(e,16),this.y=new En(r,16),this.z=i?new En(i,16):this.curve.one,this.t=n&&new En(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}s7(Yt,fh.BasePoint);Yi.prototype.pointFromJSON=function(e){return Yt.fromJSON(this,e)};Yi.prototype.point=function(e,r,i,n){return new Yt(this,e,r,i,n)};Yt.fromJSON=function(e,r){return new Yt(e,r[0],r[1],r[2])};Yt.prototype.inspect=function(){return this.isInfinity()?"":""};Yt.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Yt.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var n=this.curve._mulA(e),a=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),o=n.redAdd(r),c=o.redSub(i),m=n.redSub(r),M=a.redMul(c),B=o.redMul(m),R=a.redMul(m),F=c.redMul(o);return this.curve.point(M,B,F,R)};Yt.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),n,a,o,c,m,M;if(this.curve.twisted){c=this.curve._mulA(r);var B=c.redAdd(i);this.zOne?(n=e.redSub(r).redSub(i).redMul(B.redSub(this.curve.two)),a=B.redMul(c.redSub(i)),o=B.redSqr().redSub(B).redSub(B)):(m=this.z.redSqr(),M=B.redSub(m).redISub(m),n=e.redSub(r).redISub(i).redMul(M),a=B.redMul(c.redSub(i)),o=B.redMul(M))}else c=r.redAdd(i),m=this.curve._mulC(this.z).redSqr(),M=c.redSub(m).redSub(m),n=this.curve._mulC(e.redISub(c)).redMul(M),a=this.curve._mulC(c).redMul(r.redISub(i)),o=c.redMul(M);return this.curve.point(n,a,o)};Yt.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};Yt.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),i=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),n=this.t.redMul(this.curve.dd).redMul(e.t),a=this.z.redMul(e.z.redAdd(e.z)),o=i.redSub(r),c=a.redSub(n),m=a.redAdd(n),M=i.redAdd(r),B=o.redMul(c),R=m.redMul(M),F=o.redMul(M),N=c.redMul(m);return this.curve.point(B,R,N,F)};Yt.prototype._projAdd=function(e){var r=this.z.redMul(e.z),i=r.redSqr(),n=this.x.redMul(e.x),a=this.y.redMul(e.y),o=this.curve.d.redMul(n).redMul(a),c=i.redSub(o),m=i.redAdd(o),M=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(n).redISub(a),B=r.redMul(c).redMul(M),R,F;return this.curve.twisted?(R=r.redMul(m).redMul(a.redSub(this.curve._mulA(n))),F=c.redMul(m)):(R=r.redMul(m).redMul(a.redSub(n)),F=this.curve._mulC(c).redMul(m)),this.curve.point(B,R,F)};Yt.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};Yt.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};Yt.prototype.mulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!1)};Yt.prototype.jmulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!0)};Yt.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};Yt.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Yt.prototype.getX=function(){return this.normalize(),this.x.fromRed()};Yt.prototype.getY=function(){return this.normalize(),this.y.fromRed()};Yt.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};Yt.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=e.clone(),n=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(n),this.x.cmp(r)===0)return!0}};Yt.prototype.toP=Yt.prototype.normalize;Yt.prototype.mixedAdd=Yt.prototype.add});var hp=P(c7=>{"use strict";g();var ah=c7;ah.base=As();ah.short=n7();ah.mont=o7();ah.edwards=h7()});var Si=P(Gt=>{"use strict";g();var pL=zr(),vL=gt();Gt.inherits=vL;function bL(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function gL(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),n=0;n>6|192,r[i++]=a&63|128):bL(t,n)?(a=65536+((a&1023)<<10)+(t.charCodeAt(++n)&1023),r[i++]=a>>18|240,r[i++]=a>>12&63|128,r[i++]=a>>6&63|128,r[i++]=a&63|128):(r[i++]=a>>12|224,r[i++]=a>>6&63|128,r[i++]=a&63|128)}else for(n=0;n>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}Gt.htonl=d7;function mL(t,e){for(var r="",i=0;i>>0}return a}Gt.join32=xL;function wL(t,e){for(var r=new Array(t.length*4),i=0,n=0;i>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=a&255):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=a&255)}return r}Gt.split32=wL;function AL(t,e){return t>>>e|t<<32-e}Gt.rotr32=AL;function _L(t,e){return t<>>32-e}Gt.rotl32=_L;function IL(t,e){return t+e>>>0}Gt.sum32=IL;function EL(t,e,r){return t+e+r>>>0}Gt.sum32_3=EL;function ML(t,e,r,i){return t+e+r+i>>>0}Gt.sum32_4=ML;function SL(t,e,r,i,n){return t+e+r+i+n>>>0}Gt.sum32_5=SL;function CL(t,e,r,i){var n=t[e],a=t[e+1],o=i+a>>>0,c=(o>>0,t[e+1]=o}Gt.sum64=CL;function BL(t,e,r,i){var n=e+i>>>0,a=(n>>0}Gt.sum64_hi=BL;function qL(t,e,r,i){var n=e+i;return n>>>0}Gt.sum64_lo=qL;function RL(t,e,r,i,n,a,o,c){var m=0,M=e;M=M+i>>>0,m+=M>>0,m+=M>>0,m+=M>>0}Gt.sum64_4_hi=RL;function TL(t,e,r,i,n,a,o,c){var m=e+i+a+c;return m>>>0}Gt.sum64_4_lo=TL;function OL(t,e,r,i,n,a,o,c,m,M){var B=0,R=e;R=R+i>>>0,B+=R>>0,B+=R>>0,B+=R>>0,B+=R>>0}Gt.sum64_5_hi=OL;function DL(t,e,r,i,n,a,o,c,m,M){var B=e+i+a+c+M;return B>>>0}Gt.sum64_5_lo=DL;function PL(t,e,r){var i=e<<32-r|t>>>r;return i>>>0}Gt.rotr64_hi=PL;function UL(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Gt.rotr64_lo=UL;function kL(t,e,r){return t>>>r}Gt.shr64_hi=kL;function FL(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Gt.shr64_lo=FL});var ka=P(b7=>{"use strict";g();var v7=Si(),LL=zr();function oh(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}b7.BlockHash=oh;oh.prototype.update=function(e,r){if(e=v7.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var i=e.length%this._delta8;this.pending=e.slice(e.length-i,e.length),this.pending.length===0&&(this.pending=null),e=v7.join32(e,0,e.length-i,this.endian);for(var n=0;n>>24&255,n[a++]=e>>>16&255,n[a++]=e>>>8&255,n[a++]=e&255}else for(n[a++]=e&255,n[a++]=e>>>8&255,n[a++]=e>>>16&255,n[a++]=e>>>24&255,n[a++]=0,n[a++]=0,n[a++]=0,n[a++]=0,o=8;o{"use strict";g();var NL=Si(),Vi=NL.rotr32;function QL(t,e,r,i){if(t===0)return g7(e,r,i);if(t===1||t===3)return m7(e,r,i);if(t===2)return y7(e,r,i)}Mn.ft_1=QL;function g7(t,e,r){return t&e^~t&r}Mn.ch32=g7;function y7(t,e,r){return t&e^t&r^e&r}Mn.maj32=y7;function m7(t,e,r){return t^e^r}Mn.p32=m7;function KL(t){return Vi(t,2)^Vi(t,13)^Vi(t,22)}Mn.s0_256=KL;function jL(t){return Vi(t,6)^Vi(t,11)^Vi(t,25)}Mn.s1_256=jL;function HL(t){return Vi(t,7)^Vi(t,18)^t>>>3}Mn.g0_256=HL;function zL(t){return Vi(t,17)^Vi(t,19)^t>>>10}Mn.g1_256=zL});var A7=P((Ite,w7)=>{"use strict";g();var Fa=Si(),GL=ka(),YL=cp(),dp=Fa.rotl32,_s=Fa.sum32,VL=Fa.sum32_5,$L=YL.ft_1,x7=GL.BlockHash,WL=[1518500249,1859775393,2400959708,3395469782];function $i(){if(!(this instanceof $i))return new $i;x7.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Fa.inherits($i,x7);w7.exports=$i;$i.blockSize=512;$i.outSize=160;$i.hmacStrength=80;$i.padLength=64;$i.prototype._update=function(e,r){for(var i=this.W,n=0;n<16;n++)i[n]=e[r+n];for(;n{"use strict";g();var La=Si(),JL=ka(),Na=cp(),XL=zr(),Ci=La.sum32,ZL=La.sum32_4,eN=La.sum32_5,tN=Na.ch32,rN=Na.maj32,iN=Na.s0_256,nN=Na.s1_256,fN=Na.g0_256,aN=Na.g1_256,_7=JL.BlockHash,oN=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Wi(){if(!(this instanceof Wi))return new Wi;_7.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=oN,this.W=new Array(64)}La.inherits(Wi,_7);I7.exports=Wi;Wi.blockSize=512;Wi.outSize=256;Wi.hmacStrength=192;Wi.padLength=64;Wi.prototype._update=function(e,r){for(var i=this.W,n=0;n<16;n++)i[n]=e[r+n];for(;n{"use strict";g();var pp=Si(),E7=lp();function Sn(){if(!(this instanceof Sn))return new Sn;E7.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}pp.inherits(Sn,E7);M7.exports=Sn;Sn.blockSize=512;Sn.outSize=224;Sn.hmacStrength=192;Sn.padLength=64;Sn.prototype._digest=function(e){return e==="hex"?pp.toHex32(this.h.slice(0,7),"big"):pp.split32(this.h.slice(0,7),"big")}});var gp=P((qte,R7)=>{"use strict";g();var Fr=Si(),sN=ka(),uN=zr(),Ji=Fr.rotr64_hi,Xi=Fr.rotr64_lo,C7=Fr.shr64_hi,B7=Fr.shr64_lo,rf=Fr.sum64,vp=Fr.sum64_hi,bp=Fr.sum64_lo,hN=Fr.sum64_4_hi,cN=Fr.sum64_4_lo,dN=Fr.sum64_5_hi,lN=Fr.sum64_5_lo,q7=sN.BlockHash,pN=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Bi(){if(!(this instanceof Bi))return new Bi;q7.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=pN,this.W=new Array(160)}Fr.inherits(Bi,q7);R7.exports=Bi;Bi.blockSize=1024;Bi.outSize=512;Bi.hmacStrength=192;Bi.padLength=128;Bi.prototype._prepareBlock=function(e,r){for(var i=this.W,n=0;n<32;n++)i[n]=e[r+n];for(;n{"use strict";g();var yp=Si(),T7=gp();function Cn(){if(!(this instanceof Cn))return new Cn;T7.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}yp.inherits(Cn,T7);O7.exports=Cn;Cn.blockSize=1024;Cn.outSize=384;Cn.hmacStrength=192;Cn.padLength=128;Cn.prototype._digest=function(e){return e==="hex"?yp.toHex32(this.h.slice(0,12),"big"):yp.split32(this.h.slice(0,12),"big")}});var P7=P(Qa=>{"use strict";g();Qa.sha1=A7();Qa.sha224=S7();Qa.sha256=lp();Qa.sha384=D7();Qa.sha512=gp()});var Q7=P(N7=>{"use strict";g();var Yf=Si(),SN=ka(),sh=Yf.rotl32,U7=Yf.sum32,Is=Yf.sum32_3,k7=Yf.sum32_4,L7=SN.BlockHash;function Zi(){if(!(this instanceof Zi))return new Zi;L7.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Yf.inherits(Zi,L7);N7.ripemd160=Zi;Zi.blockSize=512;Zi.outSize=160;Zi.hmacStrength=192;Zi.padLength=64;Zi.prototype._update=function(e,r){for(var i=this.h[0],n=this.h[1],a=this.h[2],o=this.h[3],c=this.h[4],m=i,M=n,B=a,R=o,F=c,N=0;N<80;N++){var G=U7(sh(k7(i,F7(N,n,a,o),e[qN[N]+r],CN(N)),TN[N]),c);i=c,c=o,o=sh(a,10),a=n,n=G,G=U7(sh(k7(m,F7(79-N,M,B,R),e[RN[N]+r],BN(N)),ON[N]),F),m=F,F=R,R=sh(B,10),B=M,M=G}G=Is(this.h[1],a,R),this.h[1]=Is(this.h[2],o,F),this.h[2]=Is(this.h[3],c,m),this.h[3]=Is(this.h[4],i,M),this.h[4]=Is(this.h[0],n,B),this.h[0]=G};Zi.prototype._digest=function(e){return e==="hex"?Yf.toHex32(this.h,"little"):Yf.split32(this.h,"little")};function F7(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function CN(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function BN(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var qN=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],RN=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],TN=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],ON=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var j7=P((Fte,K7)=>{"use strict";g();var DN=Si(),PN=zr();function Ka(t,e,r){if(!(this instanceof Ka))return new Ka(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(DN.toArray(e,r))}K7.exports=Ka;Ka.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),PN(e.length<=this.blockSize);for(var r=e.length;r{g();var yr=H7;yr.utils=Si();yr.common=ka();yr.sha=P7();yr.ripemd=Q7();yr.hmac=j7();yr.sha1=yr.sha.sha1;yr.sha256=yr.sha.sha256;yr.sha224=yr.sha.sha224;yr.sha384=yr.sha.sha384;yr.sha512=yr.sha.sha512;yr.ripemd160=yr.ripemd.ripemd160});var G7=P((Kte,z7)=>{g();z7.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var hh=P($7=>{"use strict";g();var xp=$7,nf=uh(),mp=hp(),UN=Gr(),Y7=UN.assert;function V7(t){t.type==="short"?this.curve=new mp.short(t):t.type==="edwards"?this.curve=new mp.edwards(t):this.curve=new mp.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,Y7(this.g.validate(),"Invalid curve"),Y7(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}xp.PresetCurve=V7;function ff(t,e){Object.defineProperty(xp,t,{configurable:!0,enumerable:!0,get:function(){var r=new V7(e);return Object.defineProperty(xp,t,{configurable:!0,enumerable:!0,value:r}),r}})}ff("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:nf.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});ff("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:nf.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});ff("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:nf.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});ff("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:nf.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});ff("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:nf.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});ff("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:nf.sha256,gRed:!1,g:["9"]});ff("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:nf.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var wp;try{wp=G7()}catch{wp=void 0}ff("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:nf.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",wp]})});var X7=P((Gte,J7)=>{"use strict";g();var kN=uh(),Vf=sp(),W7=zr();function af(t){if(!(this instanceof af))return new af(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Vf.toArray(t.entropy,t.entropyEnc||"hex"),r=Vf.toArray(t.nonce,t.nonceEnc||"hex"),i=Vf.toArray(t.pers,t.persEnc||"hex");W7(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}J7.exports=af;af.prototype._init=function(e,r,i){var n=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var a=0;a=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1};af.prototype.generate=function(e,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=Vf.toArray(i,n||"hex"),this._update(i));for(var a=[];a.length{"use strict";g();var FN=sr(),LN=Gr(),Ap=LN.assert;function Sr(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}Z7.exports=Sr;Sr.fromPublic=function(e,r,i){return r instanceof Sr?r:new Sr(e,{pub:r,pubEnc:i})};Sr.fromPrivate=function(e,r,i){return r instanceof Sr?r:new Sr(e,{priv:r,privEnc:i})};Sr.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};Sr.prototype.getPublic=function(e,r){return typeof e=="string"&&(r=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,e):this.pub};Sr.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};Sr.prototype._importPrivate=function(e,r){this.priv=new FN(e,r||16),this.priv=this.priv.umod(this.ec.curve.n)};Sr.prototype._importPublic=function(e,r){if(e.x||e.y){this.ec.curve.type==="mont"?Ap(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&Ap(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,r)};Sr.prototype.derive=function(e){return e.validate()||Ap(e.validate(),"public point not validated"),e.mul(this.priv).getX()};Sr.prototype.sign=function(e,r,i){return this.ec.sign(e,this,r,i)};Sr.prototype.verify=function(e,r){return this.ec.verify(e,r,this)};Sr.prototype.inspect=function(){return""}});var iA=P((Wte,rA)=>{"use strict";g();var ch=sr(),Ep=Gr(),NN=Ep.assert;function dh(t,e){if(t instanceof dh)return t;this._importDER(t,e)||(NN(t.r&&t.s,"Signature without r or s"),this.r=new ch(t.r,16),this.s=new ch(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}rA.exports=dh;function QN(){this.place=0}function _p(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,a=0,o=e.place;a>>=0;return n<=127?!1:(e.place=o,n)}function tA(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}dh.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=tA(r),i=tA(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];Ip(n,r.length),n=n.concat(r),n.push(2),Ip(n,i.length);var a=n.concat(i),o=[48];return Ip(o,a.length),o=o.concat(a),Ep.encode(o,e)}});var oA=P((Xte,aA)=>{"use strict";g();var $f=sr(),nA=X7(),KN=Gr(),Mp=hh(),jN=Wu(),fA=KN.assert,Sp=eA(),lh=iA();function hi(t){if(!(this instanceof hi))return new hi(t);typeof t=="string"&&(fA(Object.prototype.hasOwnProperty.call(Mp,t),"Unknown curve "+t),t=Mp[t]),t instanceof Mp.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}aA.exports=hi;hi.prototype.keyPair=function(e){return new Sp(this,e)};hi.prototype.keyFromPrivate=function(e,r){return Sp.fromPrivate(this,e,r)};hi.prototype.keyFromPublic=function(e,r){return Sp.fromPublic(this,e,r)};hi.prototype.genKeyPair=function(e){e||(e={});for(var r=new nA({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||jN(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new $f(2));;){var a=new $f(r.generate(i));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}};hi.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e};hi.prototype.sign=function(e,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new $f(e,16));for(var a=this.n.byteLength(),o=r.getPrivate().toArray("be",a),c=e.toArray("be",a),m=new nA({hash:this.hash,entropy:o,nonce:c,pers:n.pers,persEnc:n.persEnc||"utf8"}),M=this.n.sub(new $f(1)),B=0;;B++){var R=n.k?n.k(B):new $f(m.generate(this.n.byteLength()));if(R=this._truncateToN(R,!0),!(R.cmpn(1)<=0||R.cmp(M)>=0)){var F=this.g.mul(R);if(!F.isInfinity()){var N=F.getX(),G=N.umod(this.n);if(G.cmpn(0)!==0){var Z=R.invm(this.n).mul(G.mul(r.getPrivate()).iadd(e));if(Z=Z.umod(this.n),Z.cmpn(0)!==0){var ie=(F.getY().isOdd()?1:0)|(N.cmp(G)!==0?2:0);return n.canonical&&Z.cmp(this.nh)>0&&(Z=this.n.sub(Z),ie^=1),new lh({r:G,s:Z,recoveryParam:ie})}}}}}};hi.prototype.verify=function(e,r,i,n){e=this._truncateToN(new $f(e,16)),i=this.keyFromPublic(i,n),r=new lh(r,"hex");var a=r.r,o=r.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0||o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var c=o.invm(this.n),m=c.mul(e).umod(this.n),M=c.mul(a).umod(this.n),B;return this.curve._maxwellTrick?(B=this.g.jmulAdd(m,i.getPublic(),M),B.isInfinity()?!1:B.eqXToP(a)):(B=this.g.mulAdd(m,i.getPublic(),M),B.isInfinity()?!1:B.getX().umod(this.n).cmp(a)===0)};hi.prototype.recoverPubKey=function(t,e,r,i){fA((3&r)===r,"The recovery param is more than two bits"),e=new lh(e,i);var n=this.n,a=new $f(t),o=e.r,c=e.s,m=r&1,M=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&M)throw new Error("Unable to find sencond key candinate");M?o=this.curve.pointFromX(o.add(this.curve.n),m):o=this.curve.pointFromX(o,m);var B=e.r.invm(n),R=n.sub(a).mul(B).umod(n),F=c.mul(B).umod(n);return this.g.mulAdd(R,o,F)};hi.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new lh(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(t,e,n)}catch{continue}if(a.eq(r))return n}throw new Error("Unable to find valid recovery factor")}});var cA=P((ere,hA)=>{"use strict";g();var Es=Gr(),uA=Es.assert,sA=Es.parseBytes,ja=Es.cachedProperty;function pr(t,e){this.eddsa=t,this._secret=sA(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=sA(e.pub)}pr.fromPublic=function(e,r){return r instanceof pr?r:new pr(e,{pub:r})};pr.fromSecret=function(e,r){return r instanceof pr?r:new pr(e,{secret:r})};pr.prototype.secret=function(){return this._secret};ja(pr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});ja(pr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});ja(pr,"privBytes",function(){var e=this.eddsa,r=this.hash(),i=e.encodingLength-1,n=r.slice(0,e.encodingLength);return n[0]&=248,n[i]&=127,n[i]|=64,n});ja(pr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});ja(pr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});ja(pr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});pr.prototype.sign=function(e){return uA(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};pr.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)};pr.prototype.getSecret=function(e){return uA(this._secret,"KeyPair is public only"),Es.encode(this.secret(),e)};pr.prototype.getPublic=function(e){return Es.encode(this.pubBytes(),e)};hA.exports=pr});var lA=P((rre,dA)=>{"use strict";g();var HN=sr(),ph=Gr(),zN=ph.assert,vh=ph.cachedProperty,GN=ph.parseBytes;function Wf(t,e){this.eddsa=t,typeof e!="object"&&(e=GN(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),zN(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof HN&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}vh(Wf,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});vh(Wf,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});vh(Wf,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});vh(Wf,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});Wf.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Wf.prototype.toHex=function(){return ph.encode(this.toBytes(),"hex").toUpperCase()};dA.exports=Wf});var yA=P((nre,gA)=>{"use strict";g();var YN=uh(),VN=hh(),Ha=Gr(),$N=Ha.assert,vA=Ha.parseBytes,bA=cA(),pA=lA();function Lr(t){if($N(t==="ed25519","only tested with ed25519 so far"),!(this instanceof Lr))return new Lr(t);t=VN[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=YN.sha512}gA.exports=Lr;Lr.prototype.sign=function(e,r){e=vA(e);var i=this.keyFromSecret(r),n=this.hashInt(i.messagePrefix(),e),a=this.g.mul(n),o=this.encodePoint(a),c=this.hashInt(o,i.pubBytes(),e).mul(i.priv()),m=n.add(c).umod(this.curve.n);return this.makeSignature({R:a,S:m,Rencoded:o})};Lr.prototype.verify=function(e,r,i){e=vA(e),r=this.makeSignature(r);var n=this.keyFromPublic(i),a=this.hashInt(r.Rencoded(),n.pubBytes(),e),o=this.g.mul(r.S()),c=r.R().add(n.pub().mul(a));return c.eq(o)};Lr.prototype.hashInt=function(){for(var e=this.hash(),r=0;r{"use strict";g();var Jf=mA;Jf.version=Jw().version;Jf.utils=Gr();Jf.rand=Wu();Jf.curve=hp();Jf.curves=hh();Jf.ec=oA();Jf.eddsa=yA()});var Bp=P((xA,Cp)=>{g();(function(t,e){"use strict";function r(p,f){if(!p)throw new Error(f||"Assertion failed")}function i(p,f){p.super_=f;var s=function(){};s.prototype=f.prototype,p.prototype=new s,p.prototype.constructor=p}function n(p,f,s){if(n.isBN(p))return p;this.negative=0,this.words=null,this.length=0,this.red=null,p!==null&&((f==="le"||f==="be")&&(s=f,f=10),this._init(p||0,f||10,s||"be"))}typeof t=="object"?t.exports=n:e.BN=n,n.BN=n,n.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=$u().Buffer}catch{}n.isBN=function(f){return f instanceof n?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===n.wordSize&&Array.isArray(f.words)},n.max=function(f,s){return f.cmp(s)>0?f:s},n.min=function(f,s){return f.cmp(s)<0?f:s},n.prototype._init=function(f,s,v){if(typeof f=="number")return this._initNumber(f,s,v);if(typeof f=="object")return this._initArray(f,s,v);s==="hex"&&(s=16),r(s===(s|0)&&s>=2&&s<=36),f=f.toString().replace(/\s+/g,"");var l=0;f[0]==="-"&&(l++,this.negative=1),l=0;l-=3)A=f[l]|f[l-1]<<8|f[l-2]<<16,this.words[h]|=A<>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);else if(v==="le")for(l=0,h=0;l>>26-q&67108863,q+=24,q>=26&&(q-=26,h++);return this._strip()};function o(p,f){var s=p.charCodeAt(f);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;r(!1,"Invalid character in "+p)}function c(p,f,s){var v=o(p,s);return s-1>=f&&(v|=o(p,s-1)<<4),v}n.prototype._parseHex=function(f,s,v){this.length=Math.ceil((f.length-s)/6),this.words=new Array(this.length);for(var l=0;l=s;l-=2)q=c(f,s,l)<=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8;else{var _=f.length-s;for(l=_%2===0?s+1:s;l=18?(h-=18,A+=1,this.words[A]|=q>>>26):h+=8}this._strip()};function m(p,f,s,v){for(var l=0,h=0,A=Math.min(p.length,s),q=f;q=49?h=_-49+10:_>=17?h=_-17+10:h=_,r(_>=0&&h1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=B}catch{n.prototype.inspect=B}else n.prototype.inspect=B;function B(){return(this.red?""}var R=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],F=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(f,s){f=f||10,s=s|0||1;var v;if(f===16||f==="hex"){v="";for(var l=0,h=0,A=0;A>>24-l&16777215,h!==0||A!==this.length-1?v=R[6-_.length]+_+v:v=_+v,l+=2,l>=26&&(l-=26,A--)}for(h!==0&&(v=h.toString(16)+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}if(f===(f|0)&&f>=2&&f<=36){var u=F[f],I=N[f];v="";var j=this.clone();for(j.negative=0;!j.isZero();){var S=j.modrn(I).toString(f);j=j.idivn(I),j.isZero()?v=S+v:v=R[u-S.length]+S+v}for(this.isZero()&&(v="0"+v);v.length%s!==0;)v="0"+v;return this.negative!==0&&(v="-"+v),v}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},n.prototype.toJSON=function(){return this.toString(16,2)},a&&(n.prototype.toBuffer=function(f,s){return this.toArrayLike(a,f,s)}),n.prototype.toArray=function(f,s){return this.toArrayLike(Array,f,s)};var G=function(f,s){return f.allocUnsafe?f.allocUnsafe(s):new f(s)};n.prototype.toArrayLike=function(f,s,v){this._strip();var l=this.byteLength(),h=v||Math.max(1,l);r(l<=h,"byte array longer than desired length"),r(h>0,"Requested array length <= 0");var A=G(f,h),q=s==="le"?"LE":"BE";return this["_toArrayLike"+q](A,l),A},n.prototype._toArrayLikeLE=function(f,s){for(var v=0,l=0,h=0,A=0;h>8&255),v>16&255),A===6?(v>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v=0&&(f[v--]=q>>8&255),v>=0&&(f[v--]=q>>16&255),A===6?(v>=0&&(f[v--]=q>>24&255),l=0,A=0):(l=q>>>24,A+=2)}if(v>=0)for(f[v--]=l;v>=0;)f[v--]=0},Math.clz32?n.prototype._countBits=function(f){return 32-Math.clz32(f)}:n.prototype._countBits=function(f){var s=f,v=0;return s>=4096&&(v+=13,s>>>=13),s>=64&&(v+=7,s>>>=7),s>=8&&(v+=4,s>>>=4),s>=2&&(v+=2,s>>>=2),v+s},n.prototype._zeroBits=function(f){if(f===0)return 26;var s=f,v=0;return(s&8191)===0&&(v+=13,s>>>=13),(s&127)===0&&(v+=7,s>>>=7),(s&15)===0&&(v+=4,s>>>=4),(s&3)===0&&(v+=2,s>>>=2),(s&1)===0&&v++,v},n.prototype.bitLength=function(){var f=this.words[this.length-1],s=this._countBits(f);return(this.length-1)*26+s};function Z(p){for(var f=new Array(p.bitLength()),s=0;s>>l&1}return f}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,s=0;sf.length?this.clone().ior(f):f.clone().ior(this)},n.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},n.prototype.iuand=function(f){var s;this.length>f.length?s=f:s=this;for(var v=0;vf.length?this.clone().iand(f):f.clone().iand(this)},n.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},n.prototype.iuxor=function(f){var s,v;this.length>f.length?(s=this,v=f):(s=f,v=this);for(var l=0;lf.length?this.clone().ixor(f):f.clone().ixor(this)},n.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},n.prototype.inotn=function(f){r(typeof f=="number"&&f>=0);var s=Math.ceil(f/26)|0,v=f%26;this._expand(s),v>0&&s--;for(var l=0;l0&&(this.words[l]=~this.words[l]&67108863>>26-v),this._strip()},n.prototype.notn=function(f){return this.clone().inotn(f)},n.prototype.setn=function(f,s){r(typeof f=="number"&&f>=0);var v=f/26|0,l=f%26;return this._expand(v+1),s?this.words[v]=this.words[v]|1<f.length?(v=this,l=f):(v=f,l=this);for(var h=0,A=0;A>>26;for(;h!==0&&A>>26;if(this.length=v.length,h!==0)this.words[this.length]=h,this.length++;else if(v!==this)for(;Af.length?this.clone().iadd(f):f.clone().iadd(this)},n.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var s=this.iadd(f);return f.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var v=this.cmp(f);if(v===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,h;v>0?(l=this,h=f):(l=f,h=this);for(var A=0,q=0;q>26,this.words[q]=s&67108863;for(;A!==0&&q>26,this.words[q]=s&67108863;if(A===0&&q>>26,j=_&67108863,S=Math.min(u,f.length-1),L=Math.max(0,u-p.length+1);L<=S;L++){var Q=u-L|0;l=p.words[Q]|0,h=f.words[L]|0,A=l*h+j,I+=A/67108864|0,j=A&67108863}s.words[u]=j|0,_=I|0}return _!==0?s.words[u]=_|0:s.length--,s._strip()}var fe=function(f,s,v){var l=f.words,h=s.words,A=v.words,q=0,_,u,I,j=l[0]|0,S=j&8191,L=j>>>13,Q=l[1]|0,z=Q&8191,J=Q>>>13,he=l[2]|0,W=he&8191,te=he>>>13,Qe=l[3]|0,ne=Qe&8191,ye=Qe>>>13,Rt=l[4]|0,Pe=Rt&8191,We=Rt>>>13,It=l[5]|0,Ue=It&8191,tt=It>>>13,St=l[6]|0,Re=St&8191,rt=St>>>13,Et=l[7]|0,Oe=Et&8191,it=Et>>>13,Tt=l[8]|0,ke=Tt&8191,nt=Tt>>>13,Ct=l[9]|0,Te=Ct&8191,Ze=Ct>>>13,wt=h[0]|0,Be=wt&8191,et=wt>>>13,_t=h[1]|0,qe=_t&8191,ft=_t>>>13,Ot=h[2]|0,Fe=Ot&8191,ut=Ot>>>13,lt=h[3]|0,Se=lt&8191,Xe=lt>>>13,Bt=h[4]|0,De=Bt&8191,at=Bt>>>13,Ut=h[5]|0,_e=Ut&8191,ot=Ut>>>13,C=h[6]|0,T=C&8191,O=C>>>13,w=h[7]|0,D=w&8191,H=w>>>13,Y=h[8]|0,V=Y&8191,ee=Y>>>13,Ee=h[9]|0,ae=Ee&8191,xe=Ee>>>13;v.negative=f.negative^s.negative,v.length=19,_=Math.imul(S,Be),u=Math.imul(S,et),u=u+Math.imul(L,Be)|0,I=Math.imul(L,et);var we=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(we>>>26)|0,we&=67108863,_=Math.imul(z,Be),u=Math.imul(z,et),u=u+Math.imul(J,Be)|0,I=Math.imul(J,et),_=_+Math.imul(S,qe)|0,u=u+Math.imul(S,ft)|0,u=u+Math.imul(L,qe)|0,I=I+Math.imul(L,ft)|0;var je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(je>>>26)|0,je&=67108863,_=Math.imul(W,Be),u=Math.imul(W,et),u=u+Math.imul(te,Be)|0,I=Math.imul(te,et),_=_+Math.imul(z,qe)|0,u=u+Math.imul(z,ft)|0,u=u+Math.imul(J,qe)|0,I=I+Math.imul(J,ft)|0,_=_+Math.imul(S,Fe)|0,u=u+Math.imul(S,ut)|0,u=u+Math.imul(L,Fe)|0,I=I+Math.imul(L,ut)|0;var ze=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(ze>>>26)|0,ze&=67108863,_=Math.imul(ne,Be),u=Math.imul(ne,et),u=u+Math.imul(ye,Be)|0,I=Math.imul(ye,et),_=_+Math.imul(W,qe)|0,u=u+Math.imul(W,ft)|0,u=u+Math.imul(te,qe)|0,I=I+Math.imul(te,ft)|0,_=_+Math.imul(z,Fe)|0,u=u+Math.imul(z,ut)|0,u=u+Math.imul(J,Fe)|0,I=I+Math.imul(J,ut)|0,_=_+Math.imul(S,Se)|0,u=u+Math.imul(S,Xe)|0,u=u+Math.imul(L,Se)|0,I=I+Math.imul(L,Xe)|0;var Ye=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,_=Math.imul(Pe,Be),u=Math.imul(Pe,et),u=u+Math.imul(We,Be)|0,I=Math.imul(We,et),_=_+Math.imul(ne,qe)|0,u=u+Math.imul(ne,ft)|0,u=u+Math.imul(ye,qe)|0,I=I+Math.imul(ye,ft)|0,_=_+Math.imul(W,Fe)|0,u=u+Math.imul(W,ut)|0,u=u+Math.imul(te,Fe)|0,I=I+Math.imul(te,ut)|0,_=_+Math.imul(z,Se)|0,u=u+Math.imul(z,Xe)|0,u=u+Math.imul(J,Se)|0,I=I+Math.imul(J,Xe)|0,_=_+Math.imul(S,De)|0,u=u+Math.imul(S,at)|0,u=u+Math.imul(L,De)|0,I=I+Math.imul(L,at)|0;var Ge=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,_=Math.imul(Ue,Be),u=Math.imul(Ue,et),u=u+Math.imul(tt,Be)|0,I=Math.imul(tt,et),_=_+Math.imul(Pe,qe)|0,u=u+Math.imul(Pe,ft)|0,u=u+Math.imul(We,qe)|0,I=I+Math.imul(We,ft)|0,_=_+Math.imul(ne,Fe)|0,u=u+Math.imul(ne,ut)|0,u=u+Math.imul(ye,Fe)|0,I=I+Math.imul(ye,ut)|0,_=_+Math.imul(W,Se)|0,u=u+Math.imul(W,Xe)|0,u=u+Math.imul(te,Se)|0,I=I+Math.imul(te,Xe)|0,_=_+Math.imul(z,De)|0,u=u+Math.imul(z,at)|0,u=u+Math.imul(J,De)|0,I=I+Math.imul(J,at)|0,_=_+Math.imul(S,_e)|0,u=u+Math.imul(S,ot)|0,u=u+Math.imul(L,_e)|0,I=I+Math.imul(L,ot)|0;var Ve=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,_=Math.imul(Re,Be),u=Math.imul(Re,et),u=u+Math.imul(rt,Be)|0,I=Math.imul(rt,et),_=_+Math.imul(Ue,qe)|0,u=u+Math.imul(Ue,ft)|0,u=u+Math.imul(tt,qe)|0,I=I+Math.imul(tt,ft)|0,_=_+Math.imul(Pe,Fe)|0,u=u+Math.imul(Pe,ut)|0,u=u+Math.imul(We,Fe)|0,I=I+Math.imul(We,ut)|0,_=_+Math.imul(ne,Se)|0,u=u+Math.imul(ne,Xe)|0,u=u+Math.imul(ye,Se)|0,I=I+Math.imul(ye,Xe)|0,_=_+Math.imul(W,De)|0,u=u+Math.imul(W,at)|0,u=u+Math.imul(te,De)|0,I=I+Math.imul(te,at)|0,_=_+Math.imul(z,_e)|0,u=u+Math.imul(z,ot)|0,u=u+Math.imul(J,_e)|0,I=I+Math.imul(J,ot)|0,_=_+Math.imul(S,T)|0,u=u+Math.imul(S,O)|0,u=u+Math.imul(L,T)|0,I=I+Math.imul(L,O)|0;var Je=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Je>>>26)|0,Je&=67108863,_=Math.imul(Oe,Be),u=Math.imul(Oe,et),u=u+Math.imul(it,Be)|0,I=Math.imul(it,et),_=_+Math.imul(Re,qe)|0,u=u+Math.imul(Re,ft)|0,u=u+Math.imul(rt,qe)|0,I=I+Math.imul(rt,ft)|0,_=_+Math.imul(Ue,Fe)|0,u=u+Math.imul(Ue,ut)|0,u=u+Math.imul(tt,Fe)|0,I=I+Math.imul(tt,ut)|0,_=_+Math.imul(Pe,Se)|0,u=u+Math.imul(Pe,Xe)|0,u=u+Math.imul(We,Se)|0,I=I+Math.imul(We,Xe)|0,_=_+Math.imul(ne,De)|0,u=u+Math.imul(ne,at)|0,u=u+Math.imul(ye,De)|0,I=I+Math.imul(ye,at)|0,_=_+Math.imul(W,_e)|0,u=u+Math.imul(W,ot)|0,u=u+Math.imul(te,_e)|0,I=I+Math.imul(te,ot)|0,_=_+Math.imul(z,T)|0,u=u+Math.imul(z,O)|0,u=u+Math.imul(J,T)|0,I=I+Math.imul(J,O)|0,_=_+Math.imul(S,D)|0,u=u+Math.imul(S,H)|0,u=u+Math.imul(L,D)|0,I=I+Math.imul(L,H)|0;var $e=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($e>>>26)|0,$e&=67108863,_=Math.imul(ke,Be),u=Math.imul(ke,et),u=u+Math.imul(nt,Be)|0,I=Math.imul(nt,et),_=_+Math.imul(Oe,qe)|0,u=u+Math.imul(Oe,ft)|0,u=u+Math.imul(it,qe)|0,I=I+Math.imul(it,ft)|0,_=_+Math.imul(Re,Fe)|0,u=u+Math.imul(Re,ut)|0,u=u+Math.imul(rt,Fe)|0,I=I+Math.imul(rt,ut)|0,_=_+Math.imul(Ue,Se)|0,u=u+Math.imul(Ue,Xe)|0,u=u+Math.imul(tt,Se)|0,I=I+Math.imul(tt,Xe)|0,_=_+Math.imul(Pe,De)|0,u=u+Math.imul(Pe,at)|0,u=u+Math.imul(We,De)|0,I=I+Math.imul(We,at)|0,_=_+Math.imul(ne,_e)|0,u=u+Math.imul(ne,ot)|0,u=u+Math.imul(ye,_e)|0,I=I+Math.imul(ye,ot)|0,_=_+Math.imul(W,T)|0,u=u+Math.imul(W,O)|0,u=u+Math.imul(te,T)|0,I=I+Math.imul(te,O)|0,_=_+Math.imul(z,D)|0,u=u+Math.imul(z,H)|0,u=u+Math.imul(J,D)|0,I=I+Math.imul(J,H)|0,_=_+Math.imul(S,V)|0,u=u+Math.imul(S,ee)|0,u=u+Math.imul(L,V)|0,I=I+Math.imul(L,ee)|0;var Ie=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,_=Math.imul(Te,Be),u=Math.imul(Te,et),u=u+Math.imul(Ze,Be)|0,I=Math.imul(Ze,et),_=_+Math.imul(ke,qe)|0,u=u+Math.imul(ke,ft)|0,u=u+Math.imul(nt,qe)|0,I=I+Math.imul(nt,ft)|0,_=_+Math.imul(Oe,Fe)|0,u=u+Math.imul(Oe,ut)|0,u=u+Math.imul(it,Fe)|0,I=I+Math.imul(it,ut)|0,_=_+Math.imul(Re,Se)|0,u=u+Math.imul(Re,Xe)|0,u=u+Math.imul(rt,Se)|0,I=I+Math.imul(rt,Xe)|0,_=_+Math.imul(Ue,De)|0,u=u+Math.imul(Ue,at)|0,u=u+Math.imul(tt,De)|0,I=I+Math.imul(tt,at)|0,_=_+Math.imul(Pe,_e)|0,u=u+Math.imul(Pe,ot)|0,u=u+Math.imul(We,_e)|0,I=I+Math.imul(We,ot)|0,_=_+Math.imul(ne,T)|0,u=u+Math.imul(ne,O)|0,u=u+Math.imul(ye,T)|0,I=I+Math.imul(ye,O)|0,_=_+Math.imul(W,D)|0,u=u+Math.imul(W,H)|0,u=u+Math.imul(te,D)|0,I=I+Math.imul(te,H)|0,_=_+Math.imul(z,V)|0,u=u+Math.imul(z,ee)|0,u=u+Math.imul(J,V)|0,I=I+Math.imul(J,ee)|0,_=_+Math.imul(S,ae)|0,u=u+Math.imul(S,xe)|0,u=u+Math.imul(L,ae)|0,I=I+Math.imul(L,xe)|0;var Le=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Le>>>26)|0,Le&=67108863,_=Math.imul(Te,qe),u=Math.imul(Te,ft),u=u+Math.imul(Ze,qe)|0,I=Math.imul(Ze,ft),_=_+Math.imul(ke,Fe)|0,u=u+Math.imul(ke,ut)|0,u=u+Math.imul(nt,Fe)|0,I=I+Math.imul(nt,ut)|0,_=_+Math.imul(Oe,Se)|0,u=u+Math.imul(Oe,Xe)|0,u=u+Math.imul(it,Se)|0,I=I+Math.imul(it,Xe)|0,_=_+Math.imul(Re,De)|0,u=u+Math.imul(Re,at)|0,u=u+Math.imul(rt,De)|0,I=I+Math.imul(rt,at)|0,_=_+Math.imul(Ue,_e)|0,u=u+Math.imul(Ue,ot)|0,u=u+Math.imul(tt,_e)|0,I=I+Math.imul(tt,ot)|0,_=_+Math.imul(Pe,T)|0,u=u+Math.imul(Pe,O)|0,u=u+Math.imul(We,T)|0,I=I+Math.imul(We,O)|0,_=_+Math.imul(ne,D)|0,u=u+Math.imul(ne,H)|0,u=u+Math.imul(ye,D)|0,I=I+Math.imul(ye,H)|0,_=_+Math.imul(W,V)|0,u=u+Math.imul(W,ee)|0,u=u+Math.imul(te,V)|0,I=I+Math.imul(te,ee)|0,_=_+Math.imul(z,ae)|0,u=u+Math.imul(z,xe)|0,u=u+Math.imul(J,ae)|0,I=I+Math.imul(J,xe)|0;var Ae=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,_=Math.imul(Te,Fe),u=Math.imul(Te,ut),u=u+Math.imul(Ze,Fe)|0,I=Math.imul(Ze,ut),_=_+Math.imul(ke,Se)|0,u=u+Math.imul(ke,Xe)|0,u=u+Math.imul(nt,Se)|0,I=I+Math.imul(nt,Xe)|0,_=_+Math.imul(Oe,De)|0,u=u+Math.imul(Oe,at)|0,u=u+Math.imul(it,De)|0,I=I+Math.imul(it,at)|0,_=_+Math.imul(Re,_e)|0,u=u+Math.imul(Re,ot)|0,u=u+Math.imul(rt,_e)|0,I=I+Math.imul(rt,ot)|0,_=_+Math.imul(Ue,T)|0,u=u+Math.imul(Ue,O)|0,u=u+Math.imul(tt,T)|0,I=I+Math.imul(tt,O)|0,_=_+Math.imul(Pe,D)|0,u=u+Math.imul(Pe,H)|0,u=u+Math.imul(We,D)|0,I=I+Math.imul(We,H)|0,_=_+Math.imul(ne,V)|0,u=u+Math.imul(ne,ee)|0,u=u+Math.imul(ye,V)|0,I=I+Math.imul(ye,ee)|0,_=_+Math.imul(W,ae)|0,u=u+Math.imul(W,xe)|0,u=u+Math.imul(te,ae)|0,I=I+Math.imul(te,xe)|0;var Me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Me>>>26)|0,Me&=67108863,_=Math.imul(Te,Se),u=Math.imul(Te,Xe),u=u+Math.imul(Ze,Se)|0,I=Math.imul(Ze,Xe),_=_+Math.imul(ke,De)|0,u=u+Math.imul(ke,at)|0,u=u+Math.imul(nt,De)|0,I=I+Math.imul(nt,at)|0,_=_+Math.imul(Oe,_e)|0,u=u+Math.imul(Oe,ot)|0,u=u+Math.imul(it,_e)|0,I=I+Math.imul(it,ot)|0,_=_+Math.imul(Re,T)|0,u=u+Math.imul(Re,O)|0,u=u+Math.imul(rt,T)|0,I=I+Math.imul(rt,O)|0,_=_+Math.imul(Ue,D)|0,u=u+Math.imul(Ue,H)|0,u=u+Math.imul(tt,D)|0,I=I+Math.imul(tt,H)|0,_=_+Math.imul(Pe,V)|0,u=u+Math.imul(Pe,ee)|0,u=u+Math.imul(We,V)|0,I=I+Math.imul(We,ee)|0,_=_+Math.imul(ne,ae)|0,u=u+Math.imul(ne,xe)|0,u=u+Math.imul(ye,ae)|0,I=I+Math.imul(ye,xe)|0;var Ce=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,_=Math.imul(Te,De),u=Math.imul(Te,at),u=u+Math.imul(Ze,De)|0,I=Math.imul(Ze,at),_=_+Math.imul(ke,_e)|0,u=u+Math.imul(ke,ot)|0,u=u+Math.imul(nt,_e)|0,I=I+Math.imul(nt,ot)|0,_=_+Math.imul(Oe,T)|0,u=u+Math.imul(Oe,O)|0,u=u+Math.imul(it,T)|0,I=I+Math.imul(it,O)|0,_=_+Math.imul(Re,D)|0,u=u+Math.imul(Re,H)|0,u=u+Math.imul(rt,D)|0,I=I+Math.imul(rt,H)|0,_=_+Math.imul(Ue,V)|0,u=u+Math.imul(Ue,ee)|0,u=u+Math.imul(tt,V)|0,I=I+Math.imul(tt,ee)|0,_=_+Math.imul(Pe,ae)|0,u=u+Math.imul(Pe,xe)|0,u=u+Math.imul(We,ae)|0,I=I+Math.imul(We,xe)|0;var me=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(me>>>26)|0,me&=67108863,_=Math.imul(Te,_e),u=Math.imul(Te,ot),u=u+Math.imul(Ze,_e)|0,I=Math.imul(Ze,ot),_=_+Math.imul(ke,T)|0,u=u+Math.imul(ke,O)|0,u=u+Math.imul(nt,T)|0,I=I+Math.imul(nt,O)|0,_=_+Math.imul(Oe,D)|0,u=u+Math.imul(Oe,H)|0,u=u+Math.imul(it,D)|0,I=I+Math.imul(it,H)|0,_=_+Math.imul(Re,V)|0,u=u+Math.imul(Re,ee)|0,u=u+Math.imul(rt,V)|0,I=I+Math.imul(rt,ee)|0,_=_+Math.imul(Ue,ae)|0,u=u+Math.imul(Ue,xe)|0,u=u+Math.imul(tt,ae)|0,I=I+Math.imul(tt,xe)|0;var $=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+($>>>26)|0,$&=67108863,_=Math.imul(Te,T),u=Math.imul(Te,O),u=u+Math.imul(Ze,T)|0,I=Math.imul(Ze,O),_=_+Math.imul(ke,D)|0,u=u+Math.imul(ke,H)|0,u=u+Math.imul(nt,D)|0,I=I+Math.imul(nt,H)|0,_=_+Math.imul(Oe,V)|0,u=u+Math.imul(Oe,ee)|0,u=u+Math.imul(it,V)|0,I=I+Math.imul(it,ee)|0,_=_+Math.imul(Re,ae)|0,u=u+Math.imul(Re,xe)|0,u=u+Math.imul(rt,ae)|0,I=I+Math.imul(rt,xe)|0;var X=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(X>>>26)|0,X&=67108863,_=Math.imul(Te,D),u=Math.imul(Te,H),u=u+Math.imul(Ze,D)|0,I=Math.imul(Ze,H),_=_+Math.imul(ke,V)|0,u=u+Math.imul(ke,ee)|0,u=u+Math.imul(nt,V)|0,I=I+Math.imul(nt,ee)|0,_=_+Math.imul(Oe,ae)|0,u=u+Math.imul(Oe,xe)|0,u=u+Math.imul(it,ae)|0,I=I+Math.imul(it,xe)|0;var de=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(de>>>26)|0,de&=67108863,_=Math.imul(Te,V),u=Math.imul(Te,ee),u=u+Math.imul(Ze,V)|0,I=Math.imul(Ze,ee),_=_+Math.imul(ke,ae)|0,u=u+Math.imul(ke,xe)|0,u=u+Math.imul(nt,ae)|0,I=I+Math.imul(nt,xe)|0;var oe=(q+_|0)+((u&8191)<<13)|0;q=(I+(u>>>13)|0)+(oe>>>26)|0,oe&=67108863,_=Math.imul(Te,ae),u=Math.imul(Te,xe),u=u+Math.imul(Ze,ae)|0,I=Math.imul(Ze,xe);var se=(q+_|0)+((u&8191)<<13)|0;return q=(I+(u>>>13)|0)+(se>>>26)|0,se&=67108863,A[0]=we,A[1]=je,A[2]=ze,A[3]=Ye,A[4]=Ge,A[5]=Ve,A[6]=Je,A[7]=$e,A[8]=Ie,A[9]=Le,A[10]=Ae,A[11]=Me,A[12]=Ce,A[13]=me,A[14]=$,A[15]=X,A[16]=de,A[17]=oe,A[18]=se,q!==0&&(A[19]=q,v.length++),v};Math.imul||(fe=ie);function ce(p,f,s){s.negative=f.negative^p.negative,s.length=p.length+f.length;for(var v=0,l=0,h=0;h>>26)|0,l+=A>>>26,A&=67108863}s.words[h]=q,v=A,A=l}return v!==0?s.words[h]=v:s.length--,s._strip()}function ge(p,f,s){return ce(p,f,s)}n.prototype.mulTo=function(f,s){var v,l=this.length+f.length;return this.length===10&&f.length===10?v=fe(this,f,s):l<63?v=ie(this,f,s):l<1024?v=ce(this,f,s):v=ge(this,f,s),v};function ve(p,f){this.x=p,this.y=f}ve.prototype.makeRBT=function(f){for(var s=new Array(f),v=n.prototype._countBits(f)-1,l=0;l>=1;return l},ve.prototype.permute=function(f,s,v,l,h,A){for(var q=0;q>>1)h++;return 1<>>13,v[2*A+1]=h&8191,h=h>>>13;for(A=2*s;A>=26,v+=h/67108864|0,v+=A>>>26,this.words[l]=A&67108863}return v!==0&&(this.words[l]=v,this.length++),s?this.ineg():this},n.prototype.muln=function(f){return this.clone().imuln(f)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(f){var s=Z(f);if(s.length===0)return new n(1);for(var v=this,l=0;l=0);var s=f%26,v=(f-s)/26,l=67108863>>>26-s<<26-s,h;if(s!==0){var A=0;for(h=0;h>>26-s}A&&(this.words[h]=A,this.length++)}if(v!==0){for(h=this.length-1;h>=0;h--)this.words[h+v]=this.words[h];for(h=0;h=0);var l;s?l=(s-s%26)/26:l=0;var h=f%26,A=Math.min((f-h)/26,this.length),q=67108863^67108863>>>h<A)for(this.length-=A,u=0;u=0&&(I!==0||u>=l);u--){var j=this.words[u]|0;this.words[u]=I<<26-h|j>>>h,I=j&q}return _&&I!==0&&(_.words[_.length++]=I),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(f,s,v){return r(this.negative===0),this.iushrn(f,s,v)},n.prototype.shln=function(f){return this.clone().ishln(f)},n.prototype.ushln=function(f){return this.clone().iushln(f)},n.prototype.shrn=function(f){return this.clone().ishrn(f)},n.prototype.ushrn=function(f){return this.clone().iushrn(f)},n.prototype.testn=function(f){r(typeof f=="number"&&f>=0);var s=f%26,v=(f-s)/26,l=1<=0);var s=f%26,v=(f-s)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=v)return this;if(s!==0&&v++,this.length=Math.min(v,this.length),s!==0){var l=67108863^67108863>>>s<=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},n.prototype.isubn=function(f){if(r(typeof f=="number"),r(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s>26)-(_/67108864|0),this.words[h+v]=A&67108863}for(;h>26,this.words[h+v]=A&67108863;if(q===0)return this._strip();for(r(q===-1),q=0,h=0;h>26,this.words[h]=A&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(f,s){var v=this.length-f.length,l=this.clone(),h=f,A=h.words[h.length-1]|0,q=this._countBits(A);v=26-q,v!==0&&(h=h.ushln(v),l.iushln(v),A=h.words[h.length-1]|0);var _=l.length-h.length,u;if(s!=="mod"){u=new n(null),u.length=_+1,u.words=new Array(u.length);for(var I=0;I=0;S--){var L=(l.words[h.length+S]|0)*67108864+(l.words[h.length+S-1]|0);for(L=Math.min(L/A|0,67108863),l._ishlnsubmul(h,L,S);l.negative!==0;)L--,l.negative=0,l._ishlnsubmul(h,1,S),l.isZero()||(l.negative^=1);u&&(u.words[S]=L)}return u&&u._strip(),l._strip(),s!=="div"&&v!==0&&l.iushrn(v),{div:u||null,mod:l}},n.prototype.divmod=function(f,s,v){if(r(!f.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var l,h,A;return this.negative!==0&&f.negative===0?(A=this.neg().divmod(f,s),s!=="mod"&&(l=A.div.neg()),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.iadd(f)),{div:l,mod:h}):this.negative===0&&f.negative!==0?(A=this.divmod(f.neg(),s),s!=="mod"&&(l=A.div.neg()),{div:l,mod:A.mod}):(this.negative&f.negative)!==0?(A=this.neg().divmod(f.neg(),s),s!=="div"&&(h=A.mod.neg(),v&&h.negative!==0&&h.isub(f)),{div:A.div,mod:h}):f.length>this.length||this.cmp(f)<0?{div:new n(0),mod:this}:f.length===1?s==="div"?{div:this.divn(f.words[0]),mod:null}:s==="mod"?{div:null,mod:new n(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new n(this.modrn(f.words[0]))}:this._wordDiv(f,s)},n.prototype.div=function(f){return this.divmod(f,"div",!1).div},n.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},n.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},n.prototype.divRound=function(f){var s=this.divmod(f);if(s.mod.isZero())return s.div;var v=s.div.negative!==0?s.mod.isub(f):s.mod,l=f.ushrn(1),h=f.andln(1),A=v.cmp(l);return A<0||h===1&&A===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},n.prototype.modrn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=(1<<26)%f,l=0,h=this.length-1;h>=0;h--)l=(v*l+(this.words[h]|0))%f;return s?-l:l},n.prototype.modn=function(f){return this.modrn(f)},n.prototype.idivn=function(f){var s=f<0;s&&(f=-f),r(f<=67108863);for(var v=0,l=this.length-1;l>=0;l--){var h=(this.words[l]|0)+v*67108864;this.words[l]=h/f|0,v=h%f}return this._strip(),s?this.ineg():this},n.prototype.divn=function(f){return this.clone().idivn(f)},n.prototype.egcd=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=new n(0),q=new n(1),_=0;s.isEven()&&v.isEven();)s.iushrn(1),v.iushrn(1),++_;for(var u=v.clone(),I=s.clone();!s.isZero();){for(var j=0,S=1;(s.words[0]&S)===0&&j<26;++j,S<<=1);if(j>0)for(s.iushrn(j);j-- >0;)(l.isOdd()||h.isOdd())&&(l.iadd(u),h.isub(I)),l.iushrn(1),h.iushrn(1);for(var L=0,Q=1;(v.words[0]&Q)===0&&L<26;++L,Q<<=1);if(L>0)for(v.iushrn(L);L-- >0;)(A.isOdd()||q.isOdd())&&(A.iadd(u),q.isub(I)),A.iushrn(1),q.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(A),h.isub(q)):(v.isub(s),A.isub(l),q.isub(h))}return{a:A,b:q,gcd:v.iushln(_)}},n.prototype._invmp=function(f){r(f.negative===0),r(!f.isZero());var s=this,v=f.clone();s.negative!==0?s=s.umod(f):s=s.clone();for(var l=new n(1),h=new n(0),A=v.clone();s.cmpn(1)>0&&v.cmpn(1)>0;){for(var q=0,_=1;(s.words[0]&_)===0&&q<26;++q,_<<=1);if(q>0)for(s.iushrn(q);q-- >0;)l.isOdd()&&l.iadd(A),l.iushrn(1);for(var u=0,I=1;(v.words[0]&I)===0&&u<26;++u,I<<=1);if(u>0)for(v.iushrn(u);u-- >0;)h.isOdd()&&h.iadd(A),h.iushrn(1);s.cmp(v)>=0?(s.isub(v),l.isub(h)):(v.isub(s),h.isub(l))}var j;return s.cmpn(1)===0?j=l:j=h,j.cmpn(0)<0&&j.iadd(f),j},n.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var s=this.clone(),v=f.clone();s.negative=0,v.negative=0;for(var l=0;s.isEven()&&v.isEven();l++)s.iushrn(1),v.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;v.isEven();)v.iushrn(1);var h=s.cmp(v);if(h<0){var A=s;s=v,v=A}else if(h===0||v.cmpn(1)===0)break;s.isub(v)}while(!0);return v.iushln(l)},n.prototype.invm=function(f){return this.egcd(f).a.umod(f)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(f){return this.words[0]&f},n.prototype.bincn=function(f){r(typeof f=="number");var s=f%26,v=(f-s)/26,l=1<>>26,q&=67108863,this.words[A]=q}return h!==0&&(this.words[A]=h,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(f){var s=f<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var v;if(this.length>1)v=1;else{s&&(f=-f),r(f<=67108863,"Number is too big");var l=this.words[0]|0;v=l===f?0:lf.length)return 1;if(this.length=0;v--){var l=this.words[v]|0,h=f.words[v]|0;if(l!==h){lh&&(s=1);break}}return s},n.prototype.gtn=function(f){return this.cmpn(f)===1},n.prototype.gt=function(f){return this.cmp(f)===1},n.prototype.gten=function(f){return this.cmpn(f)>=0},n.prototype.gte=function(f){return this.cmp(f)>=0},n.prototype.ltn=function(f){return this.cmpn(f)===-1},n.prototype.lt=function(f){return this.cmp(f)===-1},n.prototype.lten=function(f){return this.cmpn(f)<=0},n.prototype.lte=function(f){return this.cmp(f)<=0},n.prototype.eqn=function(f){return this.cmpn(f)===0},n.prototype.eq=function(f){return this.cmp(f)===0},n.red=function(f){return new b(f)},n.prototype.toRed=function(f){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(f){return this.red=f,this},n.prototype.forceRed=function(f){return r(!this.red,"Already a number in reduction context"),this._forceRed(f)},n.prototype.redAdd=function(f){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},n.prototype.redIAdd=function(f){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},n.prototype.redSub=function(f){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},n.prototype.redISub=function(f){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},n.prototype.redShl=function(f){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},n.prototype.redMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},n.prototype.redIMul=function(f){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(f){return r(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var Ke={k256:null,p224:null,p192:null,p25519:null};function be(p,f){this.name=p,this.p=new n(f,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}be.prototype._tmp=function(){var f=new n(null);return f.words=new Array(Math.ceil(this.n/13)),f},be.prototype.ireduce=function(f){var s=f,v;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),v=s.bitLength();while(v>this.n);var l=v0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},be.prototype.split=function(f,s){f.iushrn(this.n,0,s)},be.prototype.imulK=function(f){return f.imul(this.k)};function pe(){be.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(pe,be),pe.prototype.split=function(f,s){for(var v=4194303,l=Math.min(f.length,9),h=0;h>>22,A=q}A>>>=22,f.words[h-10]=A,A===0&&f.length>10?f.length-=10:f.length-=9},pe.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var s=0,v=0;v>>=26,f.words[v]=h,s=l}return s!==0&&(f.words[f.length++]=s),f},n._prime=function(f){if(Ke[f])return Ke[f];var s;if(f==="k256")s=new pe;else if(f==="p224")s=new Ne;else if(f==="p192")s=new k;else if(f==="p25519")s=new d;else throw new Error("Unknown prime "+f);return Ke[f]=s,s};function b(p){if(typeof p=="string"){var f=n._prime(p);this.m=f.p,this.prime=f}else r(p.gtn(1),"modulus must be greater than 1"),this.m=p,this.prime=null}b.prototype._verify1=function(f){r(f.negative===0,"red works only with positives"),r(f.red,"red works only with red numbers")},b.prototype._verify2=function(f,s){r((f.negative|s.negative)===0,"red works only with positives"),r(f.red&&f.red===s.red,"red works only with red numbers")},b.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(M(f,f.umod(this.m)._forceRed(this)),f)},b.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},b.prototype.add=function(f,s){this._verify2(f,s);var v=f.add(s);return v.cmp(this.m)>=0&&v.isub(this.m),v._forceRed(this)},b.prototype.iadd=function(f,s){this._verify2(f,s);var v=f.iadd(s);return v.cmp(this.m)>=0&&v.isub(this.m),v},b.prototype.sub=function(f,s){this._verify2(f,s);var v=f.sub(s);return v.cmpn(0)<0&&v.iadd(this.m),v._forceRed(this)},b.prototype.isub=function(f,s){this._verify2(f,s);var v=f.isub(s);return v.cmpn(0)<0&&v.iadd(this.m),v},b.prototype.shl=function(f,s){return this._verify1(f),this.imod(f.ushln(s))},b.prototype.imul=function(f,s){return this._verify2(f,s),this.imod(f.imul(s))},b.prototype.mul=function(f,s){return this._verify2(f,s),this.imod(f.mul(s))},b.prototype.isqr=function(f){return this.imul(f,f.clone())},b.prototype.sqr=function(f){return this.mul(f,f)},b.prototype.sqrt=function(f){if(f.isZero())return f.clone();var s=this.m.andln(3);if(r(s%2===1),s===3){var v=this.m.add(new n(1)).iushrn(2);return this.pow(f,v)}for(var l=this.m.subn(1),h=0;!l.isZero()&&l.andln(1)===0;)h++,l.iushrn(1);r(!l.isZero());var A=new n(1).toRed(this),q=A.redNeg(),_=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new n(2*u*u).toRed(this);this.pow(u,_).cmp(q)!==0;)u.redIAdd(q);for(var I=this.pow(u,l),j=this.pow(f,l.addn(1).iushrn(1)),S=this.pow(f,l),L=h;S.cmp(A)!==0;){for(var Q=S,z=0;Q.cmp(A)!==0;z++)Q=Q.redSqr();r(z=0;h--){for(var I=s.words[h],j=u-1;j>=0;j--){var S=I>>j&1;if(A!==l[0]&&(A=this.sqr(A)),S===0&&q===0){_=0;continue}q<<=1,q|=S,_++,!(_!==v&&(h!==0||j!==0))&&(A=this.mul(A,l[q]),_=0,q=0)}u=26}return A},b.prototype.convertTo=function(f){var s=f.umod(this.m);return s===f?s.clone():s},b.prototype.convertFrom=function(f){var s=f.clone();return s.red=null,s},n.mont=function(f){return new E(f)};function E(p){b.call(this,p),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(E,b),E.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},E.prototype.convertFrom=function(f){var s=this.imod(f.mul(this.rinv));return s.red=null,s},E.prototype.imul=function(f,s){if(f.isZero()||s.isZero())return f.words[0]=0,f.length=1,f;var v=f.imul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.mul=function(f,s){if(f.isZero()||s.isZero())return new n(0)._forceRed(this);var v=f.mul(s),l=v.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=v.isub(l).iushrn(this.shift),A=h;return h.cmp(this.m)>=0?A=h.isub(this.m):h.cmpn(0)<0&&(A=h.iadd(this.m)),A._forceRed(this)},E.prototype.invm=function(f){var s=this.imod(f._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof Cp>"u"||Cp,xA)});var gh=P((ure,wA)=>{"use strict";g();var bh=fn(),za=bh.Buffer,ci={},di;for(di in bh)!bh.hasOwnProperty(di)||di==="SlowBuffer"||di==="Buffer"||(ci[di]=bh[di]);var Ga=ci.Buffer={};for(di in za)!za.hasOwnProperty(di)||di==="allocUnsafe"||di==="allocUnsafeSlow"||(Ga[di]=za[di]);ci.Buffer.prototype=za.prototype;(!Ga.from||Ga.from===Uint8Array.from)&&(Ga.from=function(t,e,r){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return za(t,e,r)});Ga.alloc||(Ga.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var i=za(t);return!e||e.length===0?i.fill(0):typeof r=="string"?i.fill(e,r):i.fill(e),i});if(!ci.kStringMaxLength)try{ci.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}ci.constants||(ci.constants={MAX_LENGTH:ci.kMaxLength},ci.kStringMaxLength&&(ci.constants.MAX_STRING_LENGTH=ci.kStringMaxLength));wA.exports=ci});var yh=P(AA=>{"use strict";g();var WN=gt();function li(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}AA.Reporter=li;li.prototype.isError=function(e){return e instanceof Ya};li.prototype.save=function(){let e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}};li.prototype.restore=function(e){let r=this._reporterState;r.obj=e.obj,r.path=r.path.slice(0,e.pathLen)};li.prototype.enterKey=function(e){return this._reporterState.path.push(e)};li.prototype.exitKey=function(e){let r=this._reporterState;r.path=r.path.slice(0,e-1)};li.prototype.leaveKey=function(e,r,i){let n=this._reporterState;this.exitKey(e),n.obj!==null&&(n.obj[r]=i)};li.prototype.path=function(){return this._reporterState.path.join("/")};li.prototype.enterObject=function(){let e=this._reporterState,r=e.obj;return e.obj={},r};li.prototype.leaveObject=function(e){let r=this._reporterState,i=r.obj;return r.obj=e,i};li.prototype.error=function(e){let r,i=this._reporterState,n=e instanceof Ya;if(n?r=e:r=new Ya(i.path.map(function(a){return"["+JSON.stringify(a)+"]"}).join(""),e.message||e,e.stack),!i.options.partial)throw r;return n||i.errors.push(r),r};li.prototype.wrapResult=function(e){let r=this._reporterState;return r.options.partial?{result:this.isError(e)?null:e,errors:r.errors}:e};function Ya(t,e){this.path=t,this.rethrow(e)}WN(Ya,Error);Ya.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,Ya),!this.stack)try{throw new Error(this.message)}catch(r){this.stack=r.stack}return this}});var Wa=P(qp=>{"use strict";g();var JN=gt(),mh=yh().Reporter,Va=gh().Buffer;function pi(t,e){if(mh.call(this,e),!Va.isBuffer(t)){this.error("Input not Buffer");return}this.base=t,this.offset=0,this.length=t.length}JN(pi,mh);qp.DecoderBuffer=pi;pi.isDecoderBuffer=function(e){return e instanceof pi?!0:typeof e=="object"&&Va.isBuffer(e.base)&&e.constructor.name==="DecoderBuffer"&&typeof e.offset=="number"&&typeof e.length=="number"&&typeof e.save=="function"&&typeof e.restore=="function"&&typeof e.isEmpty=="function"&&typeof e.readUInt8=="function"&&typeof e.skip=="function"&&typeof e.raw=="function"};pi.prototype.save=function(){return{offset:this.offset,reporter:mh.prototype.save.call(this)}};pi.prototype.restore=function(e){let r=new pi(this.base);return r.offset=e.offset,r.length=this.offset,this.offset=e.offset,mh.prototype.restore.call(this,e.reporter),r};pi.prototype.isEmpty=function(){return this.offset===this.length};pi.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")};pi.prototype.skip=function(e,r){if(!(this.offset+e<=this.length))return this.error(r||"DecoderBuffer overrun");let i=new pi(this.base);return i._reporterState=this._reporterState,i.offset=this.offset,i.length=this.offset+e,this.offset+=e,i};pi.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)};function $a(t,e){if(Array.isArray(t))this.length=0,this.value=t.map(function(r){return $a.isEncoderBuffer(r)||(r=new $a(r,e)),this.length+=r.length,r},this);else if(typeof t=="number"){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if(typeof t=="string")this.value=t,this.length=Va.byteLength(t);else if(Va.isBuffer(t))this.value=t,this.length=t.length;else return e.error("Unsupported type: "+typeof t)}qp.EncoderBuffer=$a;$a.isEncoderBuffer=function(e){return e instanceof $a?!0:typeof e=="object"&&e.constructor.name==="EncoderBuffer"&&typeof e.length=="number"&&typeof e.join=="function"};$a.prototype.join=function(e,r){return e||(e=Va.alloc(this.length)),r||(r=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(i){i.join(e,r),r+=i.length}):(typeof this.value=="number"?e[r]=this.value:typeof this.value=="string"?e.write(this.value,r):Va.isBuffer(this.value)&&this.value.copy(e,r),r+=this.length)),e}});var xh=P((vre,IA)=>{"use strict";g();var XN=yh().Reporter,ZN=Wa().EncoderBuffer,eQ=Wa().DecoderBuffer,Tr=zr(),_A=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],tQ=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(_A),rQ=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function zt(t,e,r){let i={};this._baseState=i,i.name=r,i.enc=t,i.parent=e||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}IA.exports=zt;var iQ=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];zt.prototype.clone=function(){let e=this._baseState,r={};iQ.forEach(function(n){r[n]=e[n]});let i=new this.constructor(r.parent);return i._baseState=r,i};zt.prototype._wrap=function(){let e=this._baseState;tQ.forEach(function(r){this[r]=function(){let n=new this.constructor(this);return e.children.push(n),n[r].apply(n,arguments)}},this)};zt.prototype._init=function(e){let r=this._baseState;Tr(r.parent===null),e.call(this),r.children=r.children.filter(function(i){return i._baseState.parent===this},this),Tr.equal(r.children.length,1,"Root node can have only one child")};zt.prototype._useArgs=function(e){let r=this._baseState,i=e.filter(function(n){return n instanceof this.constructor},this);e=e.filter(function(n){return!(n instanceof this.constructor)},this),i.length!==0&&(Tr(r.children===null),r.children=i,i.forEach(function(n){n._baseState.parent=this},this)),e.length!==0&&(Tr(r.args===null),r.args=e,r.reverseArgs=e.map(function(n){if(typeof n!="object"||n.constructor!==Object)return n;let a={};return Object.keys(n).forEach(function(o){o==(o|0)&&(o|=0);let c=n[o];a[c]=o}),a}))};rQ.forEach(function(t){zt.prototype[t]=function(){let r=this._baseState;throw new Error(t+" not implemented for encoding: "+r.enc)}});_A.forEach(function(t){zt.prototype[t]=function(){let r=this._baseState,i=Array.prototype.slice.call(arguments);return Tr(r.tag===null),r.tag=t,this._useArgs(i),this}});zt.prototype.use=function(e){Tr(e);let r=this._baseState;return Tr(r.use===null),r.use=e,this};zt.prototype.optional=function(){let e=this._baseState;return e.optional=!0,this};zt.prototype.def=function(e){let r=this._baseState;return Tr(r.default===null),r.default=e,r.optional=!0,this};zt.prototype.explicit=function(e){let r=this._baseState;return Tr(r.explicit===null&&r.implicit===null),r.explicit=e,this};zt.prototype.implicit=function(e){let r=this._baseState;return Tr(r.explicit===null&&r.implicit===null),r.implicit=e,this};zt.prototype.obj=function(){let e=this._baseState,r=Array.prototype.slice.call(arguments);return e.obj=!0,r.length!==0&&this._useArgs(r),this};zt.prototype.key=function(e){let r=this._baseState;return Tr(r.key===null),r.key=e,this};zt.prototype.any=function(){let e=this._baseState;return e.any=!0,this};zt.prototype.choice=function(e){let r=this._baseState;return Tr(r.choice===null),r.choice=e,this._useArgs(Object.keys(e).map(function(i){return e[i]})),this};zt.prototype.contains=function(e){let r=this._baseState;return Tr(r.use===null),r.contains=e,this};zt.prototype._decode=function(e,r){let i=this._baseState;if(i.parent===null)return e.wrapResult(i.children[0]._decode(e,r));let n=i.default,a=!0,o=null;if(i.key!==null&&(o=e.enterKey(i.key)),i.optional){let m=null;if(i.explicit!==null?m=i.explicit:i.implicit!==null?m=i.implicit:i.tag!==null&&(m=i.tag),m===null&&!i.any){let M=e.save();try{i.choice===null?this._decodeGeneric(i.tag,e,r):this._decodeChoice(e,r),a=!0}catch{a=!1}e.restore(M)}else if(a=this._peekTag(e,m,i.any),e.isError(a))return a}let c;if(i.obj&&a&&(c=e.enterObject()),a){if(i.explicit!==null){let M=this._decodeTag(e,i.explicit);if(e.isError(M))return M;e=M}let m=e.offset;if(i.use===null&&i.choice===null){let M;i.any&&(M=e.save());let B=this._decodeTag(e,i.implicit!==null?i.implicit:i.tag,i.any);if(e.isError(B))return B;i.any?n=e.raw(M):e=B}if(r&&r.track&&i.tag!==null&&r.track(e.path(),m,e.length,"tagged"),r&&r.track&&i.tag!==null&&r.track(e.path(),e.offset,e.length,"content"),i.any||(i.choice===null?n=this._decodeGeneric(i.tag,e,r):n=this._decodeChoice(e,r)),e.isError(n))return n;if(!i.any&&i.choice===null&&i.children!==null&&i.children.forEach(function(B){B._decode(e,r)}),i.contains&&(i.tag==="octstr"||i.tag==="bitstr")){let M=new eQ(n);n=this._getUse(i.contains,e._reporterState.obj)._decode(M,r)}}return i.obj&&a&&(n=e.leaveObject(c)),i.key!==null&&(n!==null||a===!0)?e.leaveKey(o,i.key,n):o!==null&&e.exitKey(o),n};zt.prototype._decodeGeneric=function(e,r,i){let n=this._baseState;return e==="seq"||e==="set"?null:e==="seqof"||e==="setof"?this._decodeList(r,e,n.args[0],i):/str$/.test(e)?this._decodeStr(r,e,i):e==="objid"&&n.args?this._decodeObjid(r,n.args[0],n.args[1],i):e==="objid"?this._decodeObjid(r,null,null,i):e==="gentime"||e==="utctime"?this._decodeTime(r,e,i):e==="null_"?this._decodeNull(r,i):e==="bool"?this._decodeBool(r,i):e==="objDesc"?this._decodeStr(r,e,i):e==="int"||e==="enum"?this._decodeInt(r,n.args&&n.args[0],i):n.use!==null?this._getUse(n.use,r._reporterState.obj)._decode(r,i):r.error("unknown tag: "+e)};zt.prototype._getUse=function(e,r){let i=this._baseState;return i.useDecoder=this._use(e,r),Tr(i.useDecoder._baseState.parent===null),i.useDecoder=i.useDecoder._baseState.children[0],i.implicit!==i.useDecoder._baseState.implicit&&(i.useDecoder=i.useDecoder.clone(),i.useDecoder._baseState.implicit=i.implicit),i.useDecoder};zt.prototype._decodeChoice=function(e,r){let i=this._baseState,n=null,a=!1;return Object.keys(i.choice).some(function(o){let c=e.save(),m=i.choice[o];try{let M=m._decode(e,r);if(e.isError(M))return!1;n={type:o,value:M},a=!0}catch{return e.restore(c),!1}return!0},this),a?n:e.error("Choice not matched")};zt.prototype._createEncoderBuffer=function(e){return new ZN(e,this.reporter)};zt.prototype._encode=function(e,r,i){let n=this._baseState;if(n.default!==null&&n.default===e)return;let a=this._encodeValue(e,r,i);if(a!==void 0&&!this._skipDefault(a,r,i))return a};zt.prototype._encodeValue=function(e,r,i){let n=this._baseState;if(n.parent===null)return n.children[0]._encode(e,r||new XN);let a=null;if(this.reporter=r,n.optional&&e===void 0)if(n.default!==null)e=n.default;else return;let o=null,c=!1;if(n.any)a=this._createEncoderBuffer(e);else if(n.choice)a=this._encodeChoice(e,r);else if(n.contains)o=this._getUse(n.contains,i)._encode(e,r),c=!0;else if(n.children)o=n.children.map(function(m){if(m._baseState.tag==="null_")return m._encode(null,r,e);if(m._baseState.key===null)return r.error("Child should have a key");let M=r.enterKey(m._baseState.key);if(typeof e!="object")return r.error("Child expected, but input is not object");let B=m._encode(e[m._baseState.key],r,e);return r.leaveKey(M),B},this).filter(function(m){return m}),o=this._createEncoderBuffer(o);else if(n.tag==="seqof"||n.tag==="setof"){if(!(n.args&&n.args.length===1))return r.error("Too many args for : "+n.tag);if(!Array.isArray(e))return r.error("seqof/setof, but data is not Array");let m=this.clone();m._baseState.implicit=null,o=this._createEncoderBuffer(e.map(function(M){let B=this._baseState;return this._getUse(B.args[0],e)._encode(M,r)},m))}else n.use!==null?a=this._getUse(n.use,i)._encode(e,r):(o=this._encodePrimitive(n.tag,e),c=!0);if(!n.any&&n.choice===null){let m=n.implicit!==null?n.implicit:n.tag,M=n.implicit===null?"universal":"context";m===null?n.use===null&&r.error("Tag could be omitted only for .use()"):n.use===null&&(a=this._encodeComposite(m,c,M,o))}return n.explicit!==null&&(a=this._encodeComposite(n.explicit,!1,"context",a)),a};zt.prototype._encodeChoice=function(e,r){let i=this._baseState,n=i.choice[e.type];return n||Tr(!1,e.type+" not found in "+JSON.stringify(Object.keys(i.choice))),n._encode(e.value,r)};zt.prototype._encodePrimitive=function(e,r){let i=this._baseState;if(/str$/.test(e))return this._encodeStr(r,e);if(e==="objid"&&i.args)return this._encodeObjid(r,i.reverseArgs[0],i.args[1]);if(e==="objid")return this._encodeObjid(r,null,null);if(e==="gentime"||e==="utctime")return this._encodeTime(r,e);if(e==="null_")return this._encodeNull();if(e==="int"||e==="enum")return this._encodeInt(r,i.args&&i.reverseArgs[0]);if(e==="bool")return this._encodeBool(r);if(e==="objDesc")return this._encodeStr(r,e);throw new Error("Unsupported tag: "+e)};zt.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)};zt.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}});var wh=P(Xf=>{"use strict";g();function EA(t){let e={};return Object.keys(t).forEach(function(r){(r|0)==r&&(r=r|0);let i=t[r];e[i]=r}),e}Xf.tagClass={0:"universal",1:"application",2:"context",3:"private"};Xf.tagClassByName=EA(Xf.tagClass);Xf.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};Xf.tagByName=EA(Xf.tag)});var Tp=P((mre,CA)=>{"use strict";g();var nQ=gt(),Bn=gh().Buffer,MA=xh(),Rp=wh();function SA(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new qi,this.tree._init(t.body)}CA.exports=SA;SA.prototype.encode=function(e,r){return this.tree._encode(e,r).join()};function qi(t){MA.call(this,"der",t)}nQ(qi,MA);qi.prototype._encodeComposite=function(e,r,i,n){let a=fQ(e,r,i,this.reporter);if(n.length<128){let m=Bn.alloc(2);return m[0]=a,m[1]=n.length,this._createEncoderBuffer([m,n])}let o=1;for(let m=n.length;m>=256;m>>=8)o++;let c=Bn.alloc(1+1+o);c[0]=a,c[1]=128|o;for(let m=1+o,M=n.length;M>0;m--,M>>=8)c[m]=M&255;return this._createEncoderBuffer([c,n])};qi.prototype._encodeStr=function(e,r){if(r==="bitstr")return this._createEncoderBuffer([e.unused|0,e.data]);if(r==="bmpstr"){let i=Bn.alloc(e.length*2);for(let n=0;n=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,e[0]*40+e[1])}let n=0;for(let c=0;c=128;m>>=7)n++}let a=Bn.alloc(n),o=a.length-1;for(let c=e.length-1;c>=0;c--){let m=e[c];for(a[o--]=m&127;(m>>=7)>0;)a[o--]=128|m&127}return this._createEncoderBuffer(a)};function vi(t){return t<10?"0"+t:t}qi.prototype._encodeTime=function(e,r){let i,n=new Date(e);return r==="gentime"?i=[vi(n.getUTCFullYear()),vi(n.getUTCMonth()+1),vi(n.getUTCDate()),vi(n.getUTCHours()),vi(n.getUTCMinutes()),vi(n.getUTCSeconds()),"Z"].join(""):r==="utctime"?i=[vi(n.getUTCFullYear()%100),vi(n.getUTCMonth()+1),vi(n.getUTCDate()),vi(n.getUTCHours()),vi(n.getUTCMinutes()),vi(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+r+" time is not supported yet"),this._encodeStr(i,"octstr")};qi.prototype._encodeNull=function(){return this._createEncoderBuffer("")};qi.prototype._encodeInt=function(e,r){if(typeof e=="string"){if(!r)return this.reporter.error("String int or enum given, but no values map");if(!r.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=r[e]}if(typeof e!="number"&&!Bn.isBuffer(e)){let a=e.toArray();!e.sign&&a[0]&128&&a.unshift(0),e=Bn.from(a)}if(Bn.isBuffer(e)){let a=e.length;e.length===0&&a++;let o=Bn.alloc(a);return e.copy(o),e.length===0&&(o[0]=0),this._createEncoderBuffer(o)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let i=1;for(let a=e;a>=256;a>>=8)i++;let n=new Array(i);for(let a=n.length-1;a>=0;a--)n[a]=e&255,e>>=8;return n[0]&128&&n.unshift(0),this._createEncoderBuffer(Bn.from(n))};qi.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)};qi.prototype._use=function(e,r){return typeof e=="function"&&(e=e(r)),e._getEncoder("der").tree};qi.prototype._skipDefault=function(e,r,i){let n=this._baseState,a;if(n.default===null)return!1;let o=e.join();if(n.defaultBuffer===void 0&&(n.defaultBuffer=this._encodeValue(n.default,r,i).join()),o.length!==n.defaultBuffer.length)return!1;for(a=0;a=31?i.error("Multi-octet tag encoding unsupported"):(e||(n|=32),n|=Rp.tagClassByName[r||"universal"]<<6,n)}});var qA=P((wre,BA)=>{"use strict";g();var aQ=gt(),Op=Tp();function Dp(t){Op.call(this,t),this.enc="pem"}aQ(Dp,Op);BA.exports=Dp;Dp.prototype.encode=function(e,r){let n=Op.prototype.encode.call(this,e).toString("base64"),a=["-----BEGIN "+r.label+"-----"];for(let o=0;o{"use strict";g();var RA=TA;RA.der=Tp();RA.pem=qA()});var kp=P((Ere,FA)=>{"use strict";g();var oQ=gt(),sQ=sr(),OA=Wa().DecoderBuffer,PA=xh(),DA=wh();function UA(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new Yr,this.tree._init(t.body)}FA.exports=UA;UA.prototype.decode=function(e,r){return OA.isDecoderBuffer(e)||(e=new OA(e,r)),this.tree._decode(e,r)};function Yr(t){PA.call(this,"der",t)}oQ(Yr,PA);Yr.prototype._peekTag=function(e,r,i){if(e.isEmpty())return!1;let n=e.save(),a=Up(e,'Failed to peek tag: "'+r+'"');return e.isError(a)?a:(e.restore(n),a.tag===r||a.tagStr===r||a.tagStr+"of"===r||i)};Yr.prototype._decodeTag=function(e,r,i){let n=Up(e,'Failed to decode tag of "'+r+'"');if(e.isError(n))return n;let a=kA(e,n.primitive,'Failed to get length of "'+r+'"');if(e.isError(a))return a;if(!i&&n.tag!==r&&n.tagStr!==r&&n.tagStr+"of"!==r)return e.error('Failed to match tag: "'+r+'"');if(n.primitive||a!==null)return e.skip(a,'Failed to match body of: "'+r+'"');let o=e.save(),c=this._skipUntilEnd(e,'Failed to skip indefinite length body: "'+this.tag+'"');return e.isError(c)?c:(a=e.offset-o.offset,e.restore(o),e.skip(a,'Failed to match body of: "'+r+'"'))};Yr.prototype._skipUntilEnd=function(e,r){for(;;){let i=Up(e,r);if(e.isError(i))return i;let n=kA(e,i.primitive,r);if(e.isError(n))return n;let a;if(i.primitive||n!==null?a=e.skip(n):a=this._skipUntilEnd(e,r),e.isError(a))return a;if(i.tagStr==="end")break}};Yr.prototype._decodeList=function(e,r,i,n){let a=[];for(;!e.isEmpty();){let o=this._peekTag(e,"end");if(e.isError(o))return o;let c=i.decode(e,"der",n);if(e.isError(c)&&o)break;a.push(c)}return a};Yr.prototype._decodeStr=function(e,r){if(r==="bitstr"){let i=e.readUInt8();return e.isError(i)?i:{unused:i,data:e.raw()}}else if(r==="bmpstr"){let i=e.raw();if(i.length%2===1)return e.error("Decoding of string type: bmpstr length mismatch");let n="";for(let a=0;a>6],n=(r&32)===0;if((r&31)===31){let o=r;for(r=0;(o&128)===128;){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=o&127}}else r&=31;let a=DA.tag[r];return{cls:i,primitive:n,tag:r,tagStr:a}}function kA(t,e,r){let i=t.readUInt8(r);if(t.isError(i))return i;if(!e&&i===128)return null;if((i&128)===0)return i;let n=i&127;if(n>4)return t.error("length octect is too long");i=0;for(let a=0;a{"use strict";g();var uQ=gt(),hQ=gh().Buffer,Fp=kp();function Lp(t){Fp.call(this,t),this.enc="pem"}uQ(Lp,Fp);LA.exports=Lp;Lp.prototype.decode=function(e,r){let i=e.toString().split(/[\r\n]+/g),n=r.label.toUpperCase(),a=/^-----(BEGIN|END) ([^-]+)-----$/,o=-1,c=-1;for(let B=0;B{"use strict";g();var QA=KA;QA.der=kp();QA.pem=NA()});var HA=P(jA=>{"use strict";g();var cQ=Pp(),dQ=Np(),lQ=gt(),pQ=jA;pQ.define=function(e,r){return new Ja(e,r)};function Ja(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}Ja.prototype._createNamed=function(e){let r=this.name;function i(n){this._initNamed(n,r)}return lQ(i,e),i.prototype._initNamed=function(a,o){e.call(this,a,o)},new i(this)};Ja.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(dQ[e])),this.decoders[e]};Ja.prototype.decode=function(e,r,i){return this._getDecoder(r).decode(e,i)};Ja.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(cQ[e])),this.encoders[e]};Ja.prototype.encode=function(e,r,i){return this._getEncoder(r).encode(e,i)}});var GA=P(zA=>{"use strict";g();var Ah=zA;Ah.Reporter=yh().Reporter;Ah.DecoderBuffer=Wa().DecoderBuffer;Ah.EncoderBuffer=Wa().EncoderBuffer;Ah.Node=xh()});var $A=P(VA=>{"use strict";g();var YA=VA;YA._reverse=function(e){let r={};return Object.keys(e).forEach(function(i){(i|0)==i&&(i=i|0);let n=e[i];r[n]=i}),r};YA.der=wh()});var Qp=P(WA=>{"use strict";g();var Xa=WA;Xa.bignum=sr();Xa.define=HA().define;Xa.base=GA();Xa.constants=$A();Xa.decoders=Np();Xa.encoders=Pp()});var e9=P((Lre,ZA)=>{"use strict";g();var Ri=Qp(),JA=Ri.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),vQ=Ri.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),Kp=Ri.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),bQ=Ri.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(Kp),this.key("subjectPublicKey").bitstr())}),gQ=Ri.define("RelativeDistinguishedName",function(){this.setof(vQ)}),yQ=Ri.define("RDNSequence",function(){this.seqof(gQ)}),XA=Ri.define("Name",function(){this.choice({rdnSequence:this.use(yQ)})}),mQ=Ri.define("Validity",function(){this.seq().obj(this.key("notBefore").use(JA),this.key("notAfter").use(JA))}),xQ=Ri.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),wQ=Ri.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(Kp),this.key("issuer").use(XA),this.key("validity").use(mQ),this.key("subject").use(XA),this.key("subjectPublicKeyInfo").use(bQ),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(xQ).optional())}),AQ=Ri.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(wQ),this.key("signatureAlgorithm").use(Kp),this.key("signatureValue").bitstr())});ZA.exports=AQ});var r9=P(Oi=>{"use strict";g();var Ti=Qp();Oi.certificate=e9();var _Q=Ti.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});Oi.RSAPrivateKey=_Q;var IQ=Ti.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});Oi.RSAPublicKey=IQ;var EQ=Ti.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(t9),this.key("subjectPublicKey").bitstr())});Oi.PublicKey=EQ;var t9=Ti.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),MQ=Ti.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(t9),this.key("subjectPrivateKey").octstr())});Oi.PrivateKey=MQ;var SQ=Ti.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});Oi.EncryptedPrivateKey=SQ;var CQ=Ti.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});Oi.DSAPrivateKey=CQ;Oi.DSAparam=Ti.define("DSAparam",function(){this.int()});var BQ=Ti.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(qQ),this.key("publicKey").optional().explicit(1).bitstr())});Oi.ECPrivateKey=BQ;var qQ=Ti.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});Oi.signature=Ti.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})});var i9=P((jre,RQ)=>{RQ.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}});var f9=P((Hre,n9)=>{g();var TQ=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,OQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,DQ=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,PQ=ys(),UQ=Vu(),_h=vt().Buffer;n9.exports=function(t,e){var r=t.toString(),i=r.match(TQ),n;if(i){var o="aes"+i[1],c=_h.from(i[2],"hex"),m=_h.from(i[3].replace(/[\r\n]/g,""),"base64"),M=PQ(e,c.slice(0,8),parseInt(i[1],10)).key,B=[],R=UQ.createDecipheriv(o,M,c);B.push(R.update(m)),B.push(R.final()),n=_h.concat(B)}else{var a=r.match(DQ);n=_h.from(a[2].replace(/[\r\n]/g,""),"base64")}var F=r.match(OQ)[1];return{tag:F,data:n}}});var Ss=P((Gre,o9)=>{g();var Nr=r9(),kQ=i9(),FQ=f9(),LQ=Vu(),NQ=B1(),jp=vt().Buffer;o9.exports=a9;function a9(t){var e;typeof t=="object"&&!jp.isBuffer(t)&&(e=t.passphrase,t=t.key),typeof t=="string"&&(t=jp.from(t));var r=FQ(t,e),i=r.tag,n=r.data,a,o;switch(i){case"CERTIFICATE":o=Nr.certificate.decode(n,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(o||(o=Nr.PublicKey.decode(n,"der")),a=o.algorithm.algorithm.join("."),a){case"1.2.840.113549.1.1.1":return Nr.RSAPublicKey.decode(o.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return o.subjectPrivateKey=o.subjectPublicKey,{type:"ec",data:o};case"1.2.840.10040.4.1":return o.algorithm.params.pub_key=Nr.DSAparam.decode(o.subjectPublicKey.data,"der"),{type:"dsa",data:o.algorithm.params};default:throw new Error("unknown key id "+a)}case"ENCRYPTED PRIVATE KEY":n=Nr.EncryptedPrivateKey.decode(n,"der"),n=QQ(n,e);case"PRIVATE KEY":switch(o=Nr.PrivateKey.decode(n,"der"),a=o.algorithm.algorithm.join("."),a){case"1.2.840.113549.1.1.1":return Nr.RSAPrivateKey.decode(o.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:o.algorithm.curve,privateKey:Nr.ECPrivateKey.decode(o.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return o.algorithm.params.priv_key=Nr.DSAparam.decode(o.subjectPrivateKey,"der"),{type:"dsa",params:o.algorithm.params};default:throw new Error("unknown key id "+a)}case"RSA PUBLIC KEY":return Nr.RSAPublicKey.decode(n,"der");case"RSA PRIVATE KEY":return Nr.RSAPrivateKey.decode(n,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:Nr.DSAPrivateKey.decode(n,"der")};case"EC PRIVATE KEY":return n=Nr.ECPrivateKey.decode(n,"der"),{curve:n.parameters.value,privateKey:n.privateKey};default:throw new Error("unknown key type "+i)}}a9.signature=Nr.signature;function QQ(t,e){var r=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),n=kQ[t.algorithm.decrypt.cipher.algo.join(".")],a=t.algorithm.decrypt.cipher.iv,o=t.subjectPrivateKey,c=parseInt(n.split("-")[1],10)/8,m=NQ.pbkdf2Sync(e,r,i,c,"sha1"),M=LQ.createDecipheriv(n,m,a),B=[];return B.push(M.update(o)),B.push(M.final()),jp.concat(B)}});var Hp=P((Vre,KQ)=>{KQ.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}});var h9=P(($re,Eh)=>{g();var Cr=vt().Buffer,Zf=m1(),jQ=Zu(),HQ=Ms().ec,Ih=Bp(),zQ=Ss(),GQ=Hp();function YQ(t,e,r,i,n){var a=zQ(e);if(a.curve){if(i!=="ecdsa"&&i!=="ecdsa/rsa")throw new Error("wrong private key type");return VQ(t,a)}else if(a.type==="dsa"){if(i!=="dsa")throw new Error("wrong private key type");return $Q(t,a,r)}else if(i!=="rsa"&&i!=="ecdsa/rsa")throw new Error("wrong private key type");t=Cr.concat([n,t]);for(var o=a.modulus.byteLength(),c=[0,1];t.length+c.length+10&&r.ishrn(i),r}function JQ(t,e){t=zp(t,e),t=t.mod(e);var r=Cr.from(t.toArray());if(r.length{g();var Gp=vt().Buffer,Cs=Bp(),ZQ=Ms().ec,d9=Ss(),eK=Hp();function tK(t,e,r,i,n){var a=d9(r);if(a.type==="ec"){if(i!=="ecdsa"&&i!=="ecdsa/rsa")throw new Error("wrong public key type");return rK(t,e,a)}else if(a.type==="dsa"){if(i!=="dsa")throw new Error("wrong public key type");return iK(t,e,a)}else if(i!=="rsa"&&i!=="ecdsa/rsa")throw new Error("wrong public key type");e=Gp.concat([n,e]);for(var o=a.modulus.byteLength(),c=[1],m=0;e.length+c.length+2=e)throw new Error("invalid sig")}l9.exports=tK});var x9=P((Zre,m9)=>{g();var Mh=vt().Buffer,g9=Ma(),Sh=h1(),y9=gt(),nK=h9(),fK=p9(),ea=x1();Object.keys(ea).forEach(function(t){ea[t].id=Mh.from(ea[t].id,"hex"),ea[t.toLowerCase()]=ea[t]});function Bs(t){Sh.Writable.call(this);var e=ea[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=g9(e.hash),this._tag=e.id,this._signType=e.sign}y9(Bs,Sh.Writable);Bs.prototype._write=function(e,r,i){this._hash.update(e),i()};Bs.prototype.update=function(e,r){return typeof e=="string"&&(e=Mh.from(e,r)),this._hash.update(e),this};Bs.prototype.sign=function(e,r){this.end();var i=this._hash.digest(),n=nK(i,e,this._hashType,this._signType,this._tag);return r?n.toString(r):n};function qs(t){Sh.Writable.call(this);var e=ea[t];if(!e)throw new Error("Unknown message digest");this._hash=g9(e.hash),this._tag=e.id,this._signType=e.sign}y9(qs,Sh.Writable);qs.prototype._write=function(e,r,i){this._hash.update(e),i()};qs.prototype.update=function(e,r){return typeof e=="string"&&(e=Mh.from(e,r)),this._hash.update(e),this};qs.prototype.verify=function(e,r,i){typeof r=="string"&&(r=Mh.from(r,i)),this.end();var n=this._hash.digest();return fK(r,n,e,this._signType,this._tag)};function v9(t){return new Bs(t)}function b9(t){return new qs(t)}m9.exports={Sign:v9,Verify:b9,createSign:v9,createVerify:b9}});var A9=P((tie,w9)=>{g();var aK=Ms(),oK=sr();w9.exports=function(e){return new ta(e)};var Vr={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};Vr.p224=Vr.secp224r1;Vr.p256=Vr.secp256r1=Vr.prime256v1;Vr.p192=Vr.secp192r1=Vr.prime192v1;Vr.p384=Vr.secp384r1;Vr.p521=Vr.secp521r1;function ta(t){this.curveType=Vr[t],this.curveType||(this.curveType={name:t}),this.curve=new aK.ec(this.curveType.name),this.keys=void 0}ta.prototype.generateKeys=function(t,e){return this.keys=this.curve.genKeyPair(),this.getPublicKey(t,e)};ta.prototype.computeSecret=function(t,e,r){e=e||"utf8",U.isBuffer(t)||(t=new U(t,e));var i=this.curve.keyFromPublic(t).getPublic(),n=i.mul(this.keys.getPrivate()).getX();return Yp(n,r,this.curveType.byteLength)};ta.prototype.getPublicKey=function(t,e){var r=this.keys.getPublic(e==="compressed",!0);return e==="hybrid"&&(r[r.length-1]%2?r[0]=7:r[0]=6),Yp(r,t)};ta.prototype.getPrivateKey=function(t){return Yp(this.keys.getPrivate(),t)};ta.prototype.setPublicKey=function(t,e){return e=e||"utf8",U.isBuffer(t)||(t=new U(t,e)),this.keys._importPublic(t),this};ta.prototype.setPrivateKey=function(t,e){e=e||"utf8",U.isBuffer(t)||(t=new U(t,e));var r=new oK(t);return r=r.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(r),this};function Yp(t,e,r){Array.isArray(t)||(t=t.toArray());var i=new U(t);if(r&&i.length{g();var sK=Ma(),Vp=vt().Buffer;_9.exports=function(t,e){for(var r=Vp.alloc(0),i=0,n;r.length{g();I9.exports=function(e,r){for(var i=e.length,n=-1;++n{g();var E9=sr(),hK=vt().Buffer;function cK(t,e){return hK.from(t.toRed(E9.mont(e.modulus)).redPow(new E9(e.publicExponent)).fromRed().toArray())}M9.exports=cK});var q9=P((uie,B9)=>{g();var dK=Ss(),Xp=qf(),lK=Ma(),S9=$p(),C9=Wp(),Zp=sr(),pK=Jp(),vK=Zu(),Di=vt().Buffer;B9.exports=function(e,r,i){var n;e.padding?n=e.padding:i?n=1:n=4;var a=dK(e),o;if(n===4)o=bK(a,r);else if(n===1)o=gK(a,r,i);else if(n===3){if(o=new Zp(r),o.cmp(a.modulus)>=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return i?vK(o,a):pK(o,a)};function bK(t,e){var r=t.modulus.byteLength(),i=e.length,n=lK("sha1").update(Di.alloc(0)).digest(),a=n.length,o=2*a;if(i>r-o-2)throw new Error("message too long");var c=Di.alloc(r-i-o-2),m=r-a-1,M=Xp(a),B=C9(Di.concat([n,c,Di.alloc(1,1),e],m),S9(M,m)),R=C9(M,S9(B,a));return new Zp(Di.concat([Di.alloc(1),R,B],r))}function gK(t,e,r){var i=e.length,n=t.modulus.byteLength();if(i>n-11)throw new Error("message too long");var a;return r?a=Di.alloc(n-i-3,255):a=yK(n-i-3),new Zp(Di.concat([Di.from([0,r?1:2]),a,Di.alloc(1),e],n))}function yK(t){for(var e=Di.allocUnsafe(t),r=0,i=Xp(t*2),n=0,a;r{g();var mK=Ss(),R9=$p(),T9=Wp(),O9=sr(),xK=Zu(),wK=Ma(),AK=Jp(),Rs=vt().Buffer;D9.exports=function(e,r,i){var n;e.padding?n=e.padding:i?n=1:n=4;var a=mK(e),o=a.modulus.byteLength();if(r.length>o||new O9(r).cmp(a.modulus)>=0)throw new Error("decryption error");var c;i?c=AK(new O9(r),a):c=xK(r,a);var m=Rs.alloc(o-c.length);if(c=Rs.concat([m,c],o),n===4)return _K(a,c);if(n===1)return IK(a,c,i);if(n===3)return c;throw new Error("unknown padding")};function _K(t,e){var r=t.modulus.byteLength(),i=wK("sha1").update(Rs.alloc(0)).digest(),n=i.length;if(e[0]!==0)throw new Error("decryption error");var a=e.slice(1,n+1),o=e.slice(n+1),c=T9(a,R9(o,n)),m=T9(o,R9(c,r-n-1));if(EK(i,m.slice(0,n)))throw new Error("decryption error");for(var M=n;m[M]===0;)M++;if(m[M++]!==1)throw new Error("decryption error");return m.slice(M)}function IK(t,e,r){for(var i=e.slice(0,2),n=2,a=0;e[n++]!==0;)if(n>=e.length){a++;break}var o=e.slice(2,n-1);if((i.toString("hex")!=="0002"&&!r||i.toString("hex")!=="0001"&&r)&&a++,o.length<8&&a++,a)throw new Error("decryption error");return e.slice(n)}function EK(t,e){t=Rs.from(t),e=Rs.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));for(var n=-1;++n{g();ra.publicEncrypt=q9();ra.privateDecrypt=P9();ra.privateEncrypt=function(e,r){return ra.publicEncrypt(e,r,!0)};ra.publicDecrypt=function(e,r){return ra.privateDecrypt(e,r,!0)}});var G9=P(Ts=>{"use strict";g();function k9(){throw new Error(`secure random number generation not supported by this browser -use chrome, FireFox or Internet Explorer 11`)}var L9=vt(),F9=qf(),N9=L9.Buffer,Q9=L9.kMaxLength,ev=global.crypto||global.msCrypto,K9=Math.pow(2,32)-1;function j9(t,e){if(typeof t!="number"||t!==t)throw new TypeError("offset must be a number");if(t>K9||t<0)throw new TypeError("offset must be a uint32");if(t>Q9||t>e)throw new RangeError("offset out of range")}function H9(t,e,r){if(typeof t!="number"||t!==t)throw new TypeError("size must be a number");if(t>K9||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>Q9)throw new RangeError("buffer too small")}ev&&ev.getRandomValues||!process.browser?(Ts.randomFill=MK,Ts.randomFillSync=SK):(Ts.randomFill=k9,Ts.randomFillSync=k9);function MK(t,e,r,i){if(!N9.isBuffer(t)&&!(t instanceof global.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof e=="function")i=e,e=0,r=t.length;else if(typeof r=="function")i=r,r=t.length-e;else if(typeof i!="function")throw new TypeError('"cb" argument must be a function');return j9(e,t.length),H9(r,e,t.length),z9(t,e,r,i)}function z9(t,e,r,i){if(process.browser){var n=t.buffer,a=new Uint8Array(n,e,r);if(ev.getRandomValues(a),i){process.nextTick(function(){i(null,t)});return}return t}if(i){F9(r,function(c,m){if(c)return i(c);m.copy(t,e),i(null,t)});return}var o=F9(r);return o.copy(t,e),t}function SK(t,e,r){if(typeof e>"u"&&(e=0),!N9.isBuffer(t)&&!(t instanceof global.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return j9(e,t.length),r===void 0&&(r=t.length-e),H9(r,e,t.length),z9(t,e,r)}});var tv=P(yt=>{"use strict";g();yt.randomBytes=yt.rng=yt.pseudoRandomBytes=yt.prng=qf();yt.createHash=yt.Hash=Ma();yt.createHmac=yt.Hmac=m1();var CK=hx(),BK=Object.keys(CK),qK=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(BK);yt.getHashes=function(){return qK};var Y9=B1();yt.pbkdf2=Y9.pbkdf2;yt.pbkdf2Sync=Y9.pbkdf2Sync;var en=Tw();yt.Cipher=en.Cipher;yt.createCipher=en.createCipher;yt.Cipheriv=en.Cipheriv;yt.createCipheriv=en.createCipheriv;yt.Decipher=en.Decipher;yt.createDecipher=en.createDecipher;yt.Decipheriv=en.Decipheriv;yt.createDecipheriv=en.createDecipheriv;yt.getCiphers=en.getCiphers;yt.listCiphers=en.listCiphers;var Os=zw();yt.DiffieHellmanGroup=Os.DiffieHellmanGroup;yt.createDiffieHellmanGroup=Os.createDiffieHellmanGroup;yt.getDiffieHellman=Os.getDiffieHellman;yt.createDiffieHellman=Os.createDiffieHellman;yt.DiffieHellman=Os.DiffieHellman;var Ch=x9();yt.createSign=Ch.createSign;yt.Sign=Ch.Sign;yt.createVerify=Ch.createVerify;yt.Verify=Ch.Verify;yt.createECDH=A9();var Bh=U9();yt.publicEncrypt=Bh.publicEncrypt;yt.privateEncrypt=Bh.privateEncrypt;yt.publicDecrypt=Bh.publicDecrypt;yt.privateDecrypt=Bh.privateDecrypt;var V9=G9();yt.randomFill=V9.randomFill;yt.randomFillSync=V9.randomFillSync;yt.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join(` -`))};yt.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}});var $9=P((mie,qh)=>{g();(function(){"use strict";var t="input is invalid type",e="finalize already called",r=typeof window=="object",i=r?window:{};i.JS_SHA3_NO_WINDOW&&(r=!1);var n=!r&&typeof self=="object",a=!i.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;a?i=global:n&&(i=self);var o=!i.JS_SHA3_NO_COMMON_JS&&typeof qh=="object"&&qh.exports,c=typeof define=="function"&&define.amd,m=!i.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",M="0123456789abcdef".split(""),B=[31,7936,2031616,520093696],R=[4,1024,262144,67108864],F=[1,256,65536,16777216],N=[6,1536,393216,100663296],G=[0,8,16,24],Z=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],ie=[224,256,384,512],fe=[128,256],ce=["hex","buffer","arrayBuffer","array","digest"],ge={128:168,256:136};(i.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(S){return Object.prototype.toString.call(S)==="[object Array]"}),m&&(i.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(S){return typeof S=="object"&&S.buffer&&S.buffer.constructor===ArrayBuffer});for(var ve=function(S,L,Q){return function(z){return new u(S,L,S).update(z)[Q]()}},Ke=function(S,L,Q){return function(z,J){return new u(S,L,J).update(z)[Q]()}},be=function(S,L,Q){return function(z,J,he,W){return f["cshake"+S].update(z,J,he,W)[Q]()}},pe=function(S,L,Q){return function(z,J,he,W){return f["kmac"+S].update(z,J,he,W)[Q]()}},Ne=function(S,L,Q,z){for(var J=0;J>5,this.byteCount=this.blockCount<<2,this.outputBlocks=Q>>5,this.extraBytes=(Q&31)>>3;for(var z=0;z<50;++z)this.s[z]=0}u.prototype.update=function(S){if(this.finalized)throw new Error(e);var L,Q=typeof S;if(Q!=="string"){if(Q==="object"){if(S===null)throw new Error(t);if(m&&S.constructor===ArrayBuffer)S=new Uint8Array(S);else if(!Array.isArray(S)&&(!m||!ArrayBuffer.isView(S)))throw new Error(t)}else throw new Error(t);L=!0}for(var z=this.blocks,J=this.byteCount,he=S.length,W=this.blockCount,te=0,Qe=this.s,ne,ye;te>2]|=S[te]<>2]|=ye<>2]|=(192|ye>>6)<>2]|=(128|ye&63)<=57344?(z[ne>>2]|=(224|ye>>12)<>2]|=(128|ye>>6&63)<>2]|=(128|ye&63)<>2]|=(240|ye>>18)<>2]|=(128|ye>>12&63)<>2]|=(128|ye>>6&63)<>2]|=(128|ye&63)<=J){for(this.start=ne-J,this.block=z[W],ne=0;ne>8,Q=S&255;Q>0;)J.unshift(Q),S=S>>8,Q=S&255,++z;return L?J.push(z):J.unshift(z),this.update(J),J.length},u.prototype.encodeString=function(S){var L,Q=typeof S;if(Q!=="string"){if(Q==="object"){if(S===null)throw new Error(t);if(m&&S.constructor===ArrayBuffer)S=new Uint8Array(S);else if(!Array.isArray(S)&&(!m||!ArrayBuffer.isView(S)))throw new Error(t)}else throw new Error(t);L=!0}var z=0,J=S.length;if(L)z=J;else for(var he=0;he=57344?z+=3:(W=65536+((W&1023)<<10|S.charCodeAt(++he)&1023),z+=4)}return z+=this.encode(z*8),this.update(S),z},u.prototype.bytepad=function(S,L){for(var Q=this.encode(L),z=0;z>2]|=this.padding[L&3],this.lastByteIndex===this.byteCount)for(S[0]=S[Q],L=1;L>4&15]+M[te&15]+M[te>>12&15]+M[te>>8&15]+M[te>>20&15]+M[te>>16&15]+M[te>>28&15]+M[te>>24&15];he%S===0&&(j(L),J=0)}return z&&(te=L[J],W+=M[te>>4&15]+M[te&15],z>1&&(W+=M[te>>12&15]+M[te>>8&15]),z>2&&(W+=M[te>>20&15]+M[te>>16&15])),W},u.prototype.arrayBuffer=function(){this.finalize();var S=this.blockCount,L=this.s,Q=this.outputBlocks,z=this.extraBytes,J=0,he=0,W=this.outputBits>>3,te;z?te=new ArrayBuffer(Q+1<<2):te=new ArrayBuffer(W);for(var Qe=new Uint32Array(te);he>8&255,W[te+2]=Qe>>16&255,W[te+3]=Qe>>24&255;he%S===0&&j(L)}return z&&(te=he<<2,Qe=L[J],W[te]=Qe&255,z>1&&(W[te+1]=Qe>>8&255),z>2&&(W[te+2]=Qe>>16&255)),W};function I(S,L,Q){u.call(this,S,L,Q)}I.prototype=new u,I.prototype.finalize=function(){return this.encode(this.outputBits,!0),u.prototype.finalize.call(this)};var j=function(S){var L,Q,z,J,he,W,te,Qe,ne,ye,Rt,Pe,We,It,Ue,tt,St,Re,rt,Et,Oe,it,Tt,ke,nt,Ct,Te,Ze,wt,Be,et,_t,qe,ft,Ot,Fe,ut,lt,Se,Xe,Bt,De,at,Ut,_e,ot,C,T,O,w,D,H,Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge;for(z=0;z<48;z+=2)J=S[0]^S[10]^S[20]^S[30]^S[40],he=S[1]^S[11]^S[21]^S[31]^S[41],W=S[2]^S[12]^S[22]^S[32]^S[42],te=S[3]^S[13]^S[23]^S[33]^S[43],Qe=S[4]^S[14]^S[24]^S[34]^S[44],ne=S[5]^S[15]^S[25]^S[35]^S[45],ye=S[6]^S[16]^S[26]^S[36]^S[46],Rt=S[7]^S[17]^S[27]^S[37]^S[47],Pe=S[8]^S[18]^S[28]^S[38]^S[48],We=S[9]^S[19]^S[29]^S[39]^S[49],L=Pe^(W<<1|te>>>31),Q=We^(te<<1|W>>>31),S[0]^=L,S[1]^=Q,S[10]^=L,S[11]^=Q,S[20]^=L,S[21]^=Q,S[30]^=L,S[31]^=Q,S[40]^=L,S[41]^=Q,L=J^(Qe<<1|ne>>>31),Q=he^(ne<<1|Qe>>>31),S[2]^=L,S[3]^=Q,S[12]^=L,S[13]^=Q,S[22]^=L,S[23]^=Q,S[32]^=L,S[33]^=Q,S[42]^=L,S[43]^=Q,L=W^(ye<<1|Rt>>>31),Q=te^(Rt<<1|ye>>>31),S[4]^=L,S[5]^=Q,S[14]^=L,S[15]^=Q,S[24]^=L,S[25]^=Q,S[34]^=L,S[35]^=Q,S[44]^=L,S[45]^=Q,L=Qe^(Pe<<1|We>>>31),Q=ne^(We<<1|Pe>>>31),S[6]^=L,S[7]^=Q,S[16]^=L,S[17]^=Q,S[26]^=L,S[27]^=Q,S[36]^=L,S[37]^=Q,S[46]^=L,S[47]^=Q,L=ye^(J<<1|he>>>31),Q=Rt^(he<<1|J>>>31),S[8]^=L,S[9]^=Q,S[18]^=L,S[19]^=Q,S[28]^=L,S[29]^=Q,S[38]^=L,S[39]^=Q,S[48]^=L,S[49]^=Q,It=S[0],Ue=S[1],ot=S[11]<<4|S[10]>>>28,C=S[10]<<4|S[11]>>>28,Ze=S[20]<<3|S[21]>>>29,wt=S[21]<<3|S[20]>>>29,je=S[31]<<9|S[30]>>>23,ze=S[30]<<9|S[31]>>>23,De=S[40]<<18|S[41]>>>14,at=S[41]<<18|S[40]>>>14,ft=S[2]<<1|S[3]>>>31,Ot=S[3]<<1|S[2]>>>31,tt=S[13]<<12|S[12]>>>20,St=S[12]<<12|S[13]>>>20,T=S[22]<<10|S[23]>>>22,O=S[23]<<10|S[22]>>>22,Be=S[33]<<13|S[32]>>>19,et=S[32]<<13|S[33]>>>19,Ye=S[42]<<2|S[43]>>>30,Ge=S[43]<<2|S[42]>>>30,V=S[5]<<30|S[4]>>>2,ee=S[4]<<30|S[5]>>>2,Fe=S[14]<<6|S[15]>>>26,ut=S[15]<<6|S[14]>>>26,Re=S[25]<<11|S[24]>>>21,rt=S[24]<<11|S[25]>>>21,w=S[34]<<15|S[35]>>>17,D=S[35]<<15|S[34]>>>17,_t=S[45]<<29|S[44]>>>3,qe=S[44]<<29|S[45]>>>3,ke=S[6]<<28|S[7]>>>4,nt=S[7]<<28|S[6]>>>4,Ee=S[17]<<23|S[16]>>>9,ae=S[16]<<23|S[17]>>>9,lt=S[26]<<25|S[27]>>>7,Se=S[27]<<25|S[26]>>>7,Et=S[36]<<21|S[37]>>>11,Oe=S[37]<<21|S[36]>>>11,H=S[47]<<24|S[46]>>>8,Y=S[46]<<24|S[47]>>>8,Ut=S[8]<<27|S[9]>>>5,_e=S[9]<<27|S[8]>>>5,Ct=S[18]<<20|S[19]>>>12,Te=S[19]<<20|S[18]>>>12,xe=S[29]<<7|S[28]>>>25,we=S[28]<<7|S[29]>>>25,Xe=S[38]<<8|S[39]>>>24,Bt=S[39]<<8|S[38]>>>24,it=S[48]<<14|S[49]>>>18,Tt=S[49]<<14|S[48]>>>18,S[0]=It^~tt&Re,S[1]=Ue^~St&rt,S[10]=ke^~Ct&Ze,S[11]=nt^~Te&wt,S[20]=ft^~Fe<,S[21]=Ot^~ut&Se,S[30]=Ut^~ot&T,S[31]=_e^~C&O,S[40]=V^~Ee&xe,S[41]=ee^~ae&we,S[2]=tt^~Re&Et,S[3]=St^~rt&Oe,S[12]=Ct^~Ze&Be,S[13]=Te^~wt&et,S[22]=Fe^~lt&Xe,S[23]=ut^~Se&Bt,S[32]=ot^~T&w,S[33]=C^~O&D,S[42]=Ee^~xe&je,S[43]=ae^~we&ze,S[4]=Re^~Et&it,S[5]=rt^~Oe&Tt,S[14]=Ze^~Be&_t,S[15]=wt^~et&qe,S[24]=lt^~Xe&De,S[25]=Se^~Bt&at,S[34]=T^~w&H,S[35]=O^~D&Y,S[44]=xe^~je&Ye,S[45]=we^~ze&Ge,S[6]=Et^~it&It,S[7]=Oe^~Tt&Ue,S[16]=Be^~_t&ke,S[17]=et^~qe&nt,S[26]=Xe^~De&ft,S[27]=Bt^~at&Ot,S[36]=w^~H&Ut,S[37]=D^~Y&_e,S[46]=je^~Ye&V,S[47]=ze^~Ge&ee,S[8]=it^~It&tt,S[9]=Tt^~Ue&St,S[18]=_t^~ke&Ct,S[19]=qe^~nt&Te,S[28]=De^~ft&Fe,S[29]=at^~Ot&ut,S[38]=H^~Ut&ot,S[39]=Y^~_e&C,S[48]=Ye^~V&Ee,S[49]=Ge^~ee&ae,S[0]^=Z[z],S[1]^=Z[z+1]};if(o)qh.exports=f;else{for(v=0;v{g();qn.notEqual=TK;qn.notOk=OK;qn.equal=RK;qn.ok=qn;W9.exports=qn;function RK(t,e,r){qn(t==e,r)}function TK(t,e,r){qn(t!=e,r)}function OK(t,e){qn(!t,e)}function qn(t,e){if(!t)throw new Error(e||"AssertionError")}});var X9=P((_ie,J9)=>{g();J9.exports=iv;iv.supported=typeof WebAssembly<"u";function iv(t){if(!iv.supported)return null;var e=t&&t.imports,r=DK("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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"),i=null,n={buffer:r,memory:null,exports:null,realloc:a,onload:o};return o(function(){}),n;function a(m){n.exports.memory.grow(Math.ceil(Math.abs(m-n.memory.length)/65536)),n.memory=new Uint8Array(n.exports.memory.buffer)}function o(m){if(n.exports)return m();if(i){i.then(m.bind(null,null)).catch(m);return}try{if(t&&t.async)throw new Error("async");c({instance:new WebAssembly.Instance(new WebAssembly.Module(r),e)})}catch{i=WebAssembly.instantiate(r,e).then(c)}o(m)}function c(m){n.exports=m.instance.exports,n.memory=n.exports.memory&&n.exports.memory.buffer&&new Uint8Array(n.exports.memory.buffer)}}function DK(t){return typeof atob=="function"?new Uint8Array(atob(t).split("").map(PK)):new(fn()).Buffer(t,"base64")}function PK(t){return t.charCodeAt(0)}});var f_=P((Sie,rn)=>{g();var tn=rv(),Vt=X9()(),Rn=64,Rh=[];rn.exports=bi;var Z9=rn.exports.BYTES_MIN=16,e_=rn.exports.BYTES_MAX=64,Eie=rn.exports.BYTES=32,t_=rn.exports.KEYBYTES_MIN=16,r_=rn.exports.KEYBYTES_MAX=64,Mie=rn.exports.KEYBYTES=32,i_=rn.exports.SALTBYTES=16,n_=rn.exports.PERSONALBYTES=16;function bi(t,e,r,i,n){if(!(this instanceof bi))return new bi(t,e,r,i,n);if(!(Vt&&Vt.exports))throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),n!==!0&&(tn(t>=Z9,"digestLength must be at least "+Z9+", was given "+t),tn(t<=e_,"digestLength must be at most "+e_+", was given "+t),e!=null&&tn(e.length>=t_,"key must be at least "+t_+", was given "+e.length),e!=null&&tn(e.length<=r_,"key must be at least "+r_+", was given "+e.length),r!=null&&tn(r.length===i_,"salt must be exactly "+i_+", was given "+r.length),i!=null&&tn(i.length===n_,"personal must be exactly "+n_+", was given "+i.length)),Rh.length||(Rh.push(Rn),Rn+=216),this.digestLength=t,this.finalized=!1,this.pointer=Rh.pop(),Vt.memory.fill(0,0,64),Vt.memory[0]=this.digestLength,Vt.memory[1]=e?e.length:0,Vt.memory[2]=1,Vt.memory[3]=1,r&&Vt.memory.set(r,32),i&&Vt.memory.set(i,48),this.pointer+216>Vt.memory.length&&Vt.realloc(this.pointer+216),Vt.exports.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),Vt.memory.fill(0,Rn,Rn+e.length),Vt.memory[this.pointer+200]=128)}bi.prototype.update=function(t){return tn(this.finalized===!1,"Hash instance finalized"),tn(t,"input must be TypedArray or Buffer"),Rn+t.length>Vt.memory.length&&Vt.realloc(Rn+t.length),Vt.memory.set(t,Rn),Vt.exports.blake2b_update(this.pointer,Rn,Rn+t.length),this};bi.prototype.digest=function(t){if(tn(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,Rh.push(this.pointer),Vt.exports.blake2b_final(this.pointer),!t||t==="binary")return Vt.memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(t==="hex")return kK(Vt.memory,this.pointer+128,this.digestLength);tn(t.length>=this.digestLength,"input must be TypedArray or Buffer");for(var e=0;e{g();var uf=rv(),Ps=f_();function Th(t,e,r){var i=t[e]+t[r],n=t[e+1]+t[r+1];i>=4294967296&&n++,t[e]=i,t[e+1]=n}function a_(t,e,r,i){var n=t[e]+r;r<0&&(n+=4294967296);var a=t[e+1]+i;n>=4294967296&&a++,t[e]=n,t[e+1]=a}function l_(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function of(t,e,r,i,n,a){var o=Ds[n],c=Ds[n+1],m=Ds[a],M=Ds[a+1];Th(dt,t,e),a_(dt,t,o,c);var B=dt[i]^dt[t],R=dt[i+1]^dt[t+1];dt[i]=R,dt[i+1]=B,Th(dt,r,i),B=dt[e]^dt[r],R=dt[e+1]^dt[r+1],dt[e]=B>>>24^R<<8,dt[e+1]=R>>>24^B<<8,Th(dt,t,e),a_(dt,t,m,M),B=dt[i]^dt[t],R=dt[i+1]^dt[t+1],dt[i]=B>>>16^R<<16,dt[i+1]=R>>>16^B<<16,Th(dt,r,i),B=dt[e]^dt[r],R=dt[e+1]^dt[r+1],dt[e]=R>>>31^B<<1,dt[e+1]=B>>>31^R<<1}var p_=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),LK=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],Br=new Uint8Array(LK.map(function(t){return t*2})),dt=new Uint32Array(32),Ds=new Uint32Array(32);function v_(t,e){var r=0;for(r=0;r<16;r++)dt[r]=t.h[r],dt[r+16]=p_[r];for(dt[24]=dt[24]^t.t,dt[25]=dt[25]^t.t/4294967296,e&&(dt[28]=~dt[28],dt[29]=~dt[29]),r=0;r<32;r++)Ds[r]=l_(t.b,4*r);for(r=0;r<12;r++)of(0,8,16,24,Br[r*16+0],Br[r*16+1]),of(2,10,18,26,Br[r*16+2],Br[r*16+3]),of(4,12,20,28,Br[r*16+4],Br[r*16+5]),of(6,14,22,30,Br[r*16+6],Br[r*16+7]),of(0,10,20,30,Br[r*16+8],Br[r*16+9]),of(2,12,22,24,Br[r*16+10],Br[r*16+11]),of(4,14,16,26,Br[r*16+12],Br[r*16+13]),of(6,8,18,28,Br[r*16+14],Br[r*16+15]);for(r=0;r<16;r++)t.h[r]=t.h[r]^dt[r]^dt[r+16]}var sf=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Za(t,e,r,i){sf.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=t,sf[0]=t,e&&(sf[1]=e.length),sf[2]=1,sf[3]=1,r&&sf.set(r,32),i&&sf.set(i,48);for(var n=0;n<16;n++)this.h[n]=p_[n]^l_(sf,n*4);e&&(b_(this,e),this.c=128)}Za.prototype.update=function(t){return uf(t!=null,"input must be Uint8Array or Buffer"),b_(this,t),this};Za.prototype.digest=function(t){var e=!t||t==="binary"||t==="hex"?new Uint8Array(this.outlen):t;return uf(e.length>=this.outlen,"out must have at least outlen bytes of space"),NK(this,e),t==="hex"?QK(e):e};Za.prototype.final=Za.prototype.digest;Za.ready=function(t){Ps.ready(function(){t()})};function b_(t,e){for(var r=0;r>2]>>8*(r&3);return e}function QK(t){for(var e="",r=0;r=o_,"outlen must be at least "+o_+", was given "+e),uf(e<=s_,"outlen must be at most "+s_+", was given "+e),r!=null&&uf(r.length>=u_,"key must be at least "+u_+", was given "+r.length),r!=null&&uf(r.length<=h_,"key must be at most "+h_+", was given "+r.length),i!=null&&uf(i.length===c_,"salt must be exactly "+c_+", was given "+i.length),n!=null&&uf(n.length===d_,"personal must be exactly "+d_+", was given "+n.length)),new g_(e,r,i,n)};Qr.exports.ready=function(t){Ps.ready(function(){t()})};Qr.exports.WASM_SUPPORTED=Ps.SUPPORTED;Qr.exports.WASM_LOADED=!1;var o_=Qr.exports.BYTES_MIN=16,s_=Qr.exports.BYTES_MAX=64,Bie=Qr.exports.BYTES=32,u_=Qr.exports.KEYBYTES_MIN=16,h_=Qr.exports.KEYBYTES_MAX=64,qie=Qr.exports.KEYBYTES=32,c_=Qr.exports.SALTBYTES=16,d_=Qr.exports.PERSONALBYTES=16;Ps.ready(function(t){t||(Qr.exports.WASM_LOADED=!0,g_=Ps)})});var T_=P(Tn=>{"use strict";g();Object.defineProperty(Tn,"__esModule",{value:!0});var Oie=new Uint8Array(16),M_=new Uint8Array(32);M_[0]=9;function He(t){var e,r=new Float64Array(16);if(t)for(e=0;e>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r&255,t[e+4]=i>>24&255,t[e+5]=i>>16&255,t[e+6]=i>>8&255,t[e+7]=i&255}function YK(t,e,r,i,n){var a,o=0;for(a=0;a>>8)-1}function S_(t,e,r,i){return YK(t,e,r,i,32)}function hf(t,e){var r;for(r=0;r<16;r++)t[r]=e[r]|0}function nv(t){var e,r,i=1;for(e=0;e<16;e++)r=t[e]+i+65535,i=Math.floor(r/65536),t[e]=r-i*65536;t[0]+=i-1+37*(i-1)}function eo(t,e,r){for(var i,n=~(r-1),a=0;a<16;a++)i=n&(t[a]^e[a]),t[a]^=i,e[a]^=i}function ro(t,e){var r,i,n,a=He(),o=He();for(r=0;r<16;r++)o[r]=e[r];for(nv(o),nv(o),nv(o),i=0;i<2;i++){for(a[0]=o[0]-65517,r=1;r<15;r++)a[r]=o[r]-65535-(a[r-1]>>16&1),a[r-1]&=65535;a[15]=o[15]-32767-(a[14]>>16&1),n=a[15]>>16&1,a[14]&=65535,eo(o,a,1-n)}for(r=0;r<16;r++)t[2*r]=o[r]&255,t[2*r+1]=o[r]>>8}function A_(t,e){var r=new Uint8Array(32),i=new Uint8Array(32);return ro(r,t),ro(i,e),S_(r,0,i,0)}function C_(t){var e=new Uint8Array(32);return ro(e,t),e[0]&1}function uv(t,e){var r;for(r=0;r<16;r++)t[r]=e[2*r]+(e[2*r+1]<<8);t[15]&=32767}function Pi(t,e,r){for(var i=0;i<16;i++)t[i]=e[i]+r[i]}function ki(t,e,r){for(var i=0;i<16;i++)t[i]=e[i]-r[i]}function qt(t,e,r){var i,n,a=0,o=0,c=0,m=0,M=0,B=0,R=0,F=0,N=0,G=0,Z=0,ie=0,fe=0,ce=0,ge=0,ve=0,Ke=0,be=0,pe=0,Ne=0,k=0,d=0,b=0,E=0,p=0,f=0,s=0,v=0,l=0,h=0,A=0,q=r[0],_=r[1],u=r[2],I=r[3],j=r[4],S=r[5],L=r[6],Q=r[7],z=r[8],J=r[9],he=r[10],W=r[11],te=r[12],Qe=r[13],ne=r[14],ye=r[15];i=e[0],a+=i*q,o+=i*_,c+=i*u,m+=i*I,M+=i*j,B+=i*S,R+=i*L,F+=i*Q,N+=i*z,G+=i*J,Z+=i*he,ie+=i*W,fe+=i*te,ce+=i*Qe,ge+=i*ne,ve+=i*ye,i=e[1],o+=i*q,c+=i*_,m+=i*u,M+=i*I,B+=i*j,R+=i*S,F+=i*L,N+=i*Q,G+=i*z,Z+=i*J,ie+=i*he,fe+=i*W,ce+=i*te,ge+=i*Qe,ve+=i*ne,Ke+=i*ye,i=e[2],c+=i*q,m+=i*_,M+=i*u,B+=i*I,R+=i*j,F+=i*S,N+=i*L,G+=i*Q,Z+=i*z,ie+=i*J,fe+=i*he,ce+=i*W,ge+=i*te,ve+=i*Qe,Ke+=i*ne,be+=i*ye,i=e[3],m+=i*q,M+=i*_,B+=i*u,R+=i*I,F+=i*j,N+=i*S,G+=i*L,Z+=i*Q,ie+=i*z,fe+=i*J,ce+=i*he,ge+=i*W,ve+=i*te,Ke+=i*Qe,be+=i*ne,pe+=i*ye,i=e[4],M+=i*q,B+=i*_,R+=i*u,F+=i*I,N+=i*j,G+=i*S,Z+=i*L,ie+=i*Q,fe+=i*z,ce+=i*J,ge+=i*he,ve+=i*W,Ke+=i*te,be+=i*Qe,pe+=i*ne,Ne+=i*ye,i=e[5],B+=i*q,R+=i*_,F+=i*u,N+=i*I,G+=i*j,Z+=i*S,ie+=i*L,fe+=i*Q,ce+=i*z,ge+=i*J,ve+=i*he,Ke+=i*W,be+=i*te,pe+=i*Qe,Ne+=i*ne,k+=i*ye,i=e[6],R+=i*q,F+=i*_,N+=i*u,G+=i*I,Z+=i*j,ie+=i*S,fe+=i*L,ce+=i*Q,ge+=i*z,ve+=i*J,Ke+=i*he,be+=i*W,pe+=i*te,Ne+=i*Qe,k+=i*ne,d+=i*ye,i=e[7],F+=i*q,N+=i*_,G+=i*u,Z+=i*I,ie+=i*j,fe+=i*S,ce+=i*L,ge+=i*Q,ve+=i*z,Ke+=i*J,be+=i*he,pe+=i*W,Ne+=i*te,k+=i*Qe,d+=i*ne,b+=i*ye,i=e[8],N+=i*q,G+=i*_,Z+=i*u,ie+=i*I,fe+=i*j,ce+=i*S,ge+=i*L,ve+=i*Q,Ke+=i*z,be+=i*J,pe+=i*he,Ne+=i*W,k+=i*te,d+=i*Qe,b+=i*ne,E+=i*ye,i=e[9],G+=i*q,Z+=i*_,ie+=i*u,fe+=i*I,ce+=i*j,ge+=i*S,ve+=i*L,Ke+=i*Q,be+=i*z,pe+=i*J,Ne+=i*he,k+=i*W,d+=i*te,b+=i*Qe,E+=i*ne,p+=i*ye,i=e[10],Z+=i*q,ie+=i*_,fe+=i*u,ce+=i*I,ge+=i*j,ve+=i*S,Ke+=i*L,be+=i*Q,pe+=i*z,Ne+=i*J,k+=i*he,d+=i*W,b+=i*te,E+=i*Qe,p+=i*ne,f+=i*ye,i=e[11],ie+=i*q,fe+=i*_,ce+=i*u,ge+=i*I,ve+=i*j,Ke+=i*S,be+=i*L,pe+=i*Q,Ne+=i*z,k+=i*J,d+=i*he,b+=i*W,E+=i*te,p+=i*Qe,f+=i*ne,s+=i*ye,i=e[12],fe+=i*q,ce+=i*_,ge+=i*u,ve+=i*I,Ke+=i*j,be+=i*S,pe+=i*L,Ne+=i*Q,k+=i*z,d+=i*J,b+=i*he,E+=i*W,p+=i*te,f+=i*Qe,s+=i*ne,v+=i*ye,i=e[13],ce+=i*q,ge+=i*_,ve+=i*u,Ke+=i*I,be+=i*j,pe+=i*S,Ne+=i*L,k+=i*Q,d+=i*z,b+=i*J,E+=i*he,p+=i*W,f+=i*te,s+=i*Qe,v+=i*ne,l+=i*ye,i=e[14],ge+=i*q,ve+=i*_,Ke+=i*u,be+=i*I,pe+=i*j,Ne+=i*S,k+=i*L,d+=i*Q,b+=i*z,E+=i*J,p+=i*he,f+=i*W,s+=i*te,v+=i*Qe,l+=i*ne,h+=i*ye,i=e[15],ve+=i*q,Ke+=i*_,be+=i*u,pe+=i*I,Ne+=i*j,k+=i*S,d+=i*L,b+=i*Q,E+=i*z,p+=i*J,f+=i*he,s+=i*W,v+=i*te,l+=i*Qe,h+=i*ne,A+=i*ye,a+=38*Ke,o+=38*be,c+=38*pe,m+=38*Ne,M+=38*k,B+=38*d,R+=38*b,F+=38*E,N+=38*p,G+=38*f,Z+=38*s,ie+=38*v,fe+=38*l,ce+=38*h,ge+=38*A,n=1,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=m+n+65535,n=Math.floor(i/65536),m=i-n*65536,i=M+n+65535,n=Math.floor(i/65536),M=i-n*65536,i=B+n+65535,n=Math.floor(i/65536),B=i-n*65536,i=R+n+65535,n=Math.floor(i/65536),R=i-n*65536,i=F+n+65535,n=Math.floor(i/65536),F=i-n*65536,i=N+n+65535,n=Math.floor(i/65536),N=i-n*65536,i=G+n+65535,n=Math.floor(i/65536),G=i-n*65536,i=Z+n+65535,n=Math.floor(i/65536),Z=i-n*65536,i=ie+n+65535,n=Math.floor(i/65536),ie=i-n*65536,i=fe+n+65535,n=Math.floor(i/65536),fe=i-n*65536,i=ce+n+65535,n=Math.floor(i/65536),ce=i-n*65536,i=ge+n+65535,n=Math.floor(i/65536),ge=i-n*65536,i=ve+n+65535,n=Math.floor(i/65536),ve=i-n*65536,a+=n-1+37*(n-1),n=1,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=m+n+65535,n=Math.floor(i/65536),m=i-n*65536,i=M+n+65535,n=Math.floor(i/65536),M=i-n*65536,i=B+n+65535,n=Math.floor(i/65536),B=i-n*65536,i=R+n+65535,n=Math.floor(i/65536),R=i-n*65536,i=F+n+65535,n=Math.floor(i/65536),F=i-n*65536,i=N+n+65535,n=Math.floor(i/65536),N=i-n*65536,i=G+n+65535,n=Math.floor(i/65536),G=i-n*65536,i=Z+n+65535,n=Math.floor(i/65536),Z=i-n*65536,i=ie+n+65535,n=Math.floor(i/65536),ie=i-n*65536,i=fe+n+65535,n=Math.floor(i/65536),fe=i-n*65536,i=ce+n+65535,n=Math.floor(i/65536),ce=i-n*65536,i=ge+n+65535,n=Math.floor(i/65536),ge=i-n*65536,i=ve+n+65535,n=Math.floor(i/65536),ve=i-n*65536,a+=n-1+37*(n-1),t[0]=a,t[1]=o,t[2]=c,t[3]=m,t[4]=M,t[5]=B,t[6]=R,t[7]=F,t[8]=N,t[9]=G,t[10]=Z,t[11]=ie,t[12]=fe,t[13]=ce,t[14]=ge,t[15]=ve}function Ui(t,e){qt(t,e,e)}function hv(t,e){var r=He(),i;for(i=0;i<16;i++)r[i]=e[i];for(i=253;i>=0;i--)Ui(r,r),i!==2&&i!==4&&qt(r,r,e);for(i=0;i<16;i++)t[i]=r[i]}function VK(t,e){var r=He(),i;for(i=0;i<16;i++)r[i]=e[i];for(i=250;i>=0;i--)Ui(r,r),i!==1&&qt(r,r,e);for(i=0;i<16;i++)t[i]=r[i]}function B_(t,e,r){var i=new Uint8Array(32),n=new Float64Array(80),a,o,c=He(),m=He(),M=He(),B=He(),R=He(),F=He();for(o=0;o<31;o++)i[o]=e[o];for(i[31]=e[31]&127|64,i[0]&=248,uv(n,r),o=0;o<16;o++)m[o]=n[o],B[o]=c[o]=M[o]=0;for(c[0]=B[0]=1,o=254;o>=0;--o)a=i[o>>>3]>>>(o&7)&1,eo(c,m,a),eo(M,B,a),Pi(R,c,M),ki(c,c,M),Pi(M,m,B),ki(m,m,B),Ui(B,R),Ui(F,c),qt(c,M,c),qt(M,m,R),Pi(R,c,M),ki(c,c,M),Ui(m,c),ki(M,B,F),qt(c,M,jK),Pi(c,c,B),qt(M,M,c),qt(c,B,F),qt(B,m,n),Ui(m,R),eo(c,m,a),eo(M,B,a);for(o=0;o<16;o++)n[o+16]=c[o],n[o+32]=M[o],n[o+48]=m[o],n[o+64]=B[o];var N=n.subarray(32),G=n.subarray(16);return hv(N,N),qt(G,G,N),ro(t,G),0}function $K(t,e){return B_(t,e,M_)}var __=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function I_(t,e,r,i){for(var n=new Int32Array(16),a=new Int32Array(16),o,c,m,M,B,R,F,N,G,Z,ie,fe,ce,ge,ve,Ke,be,pe,Ne,k,d,b,E,p,f,s,v=t[0],l=t[1],h=t[2],A=t[3],q=t[4],_=t[5],u=t[6],I=t[7],j=e[0],S=e[1],L=e[2],Q=e[3],z=e[4],J=e[5],he=e[6],W=e[7],te=0;i>=128;){for(Ne=0;Ne<16;Ne++)k=8*Ne+te,n[Ne]=r[k+0]<<24|r[k+1]<<16|r[k+2]<<8|r[k+3],a[Ne]=r[k+4]<<24|r[k+5]<<16|r[k+6]<<8|r[k+7];for(Ne=0;Ne<80;Ne++)if(o=v,c=l,m=h,M=A,B=q,R=_,F=u,N=I,G=j,Z=S,ie=L,fe=Q,ce=z,ge=J,ve=he,Ke=W,d=I,b=W,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=(q>>>14|z<<32-14)^(q>>>18|z<<32-18)^(z>>>41-32|q<<32-(41-32)),b=(z>>>14|q<<32-14)^(z>>>18|q<<32-18)^(q>>>41-32|z<<32-(41-32)),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=q&_^~q&u,b=z&J^~z&he,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=__[Ne*2],b=__[Ne*2+1],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=n[Ne%16],b=a[Ne%16],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,be=f&65535|s<<16,pe=E&65535|p<<16,d=be,b=pe,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=(v>>>28|j<<32-28)^(j>>>34-32|v<<32-(34-32))^(j>>>39-32|v<<32-(39-32)),b=(j>>>28|v<<32-28)^(v>>>34-32|j<<32-(34-32))^(v>>>39-32|j<<32-(39-32)),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,d=v&l^v&h^l&h,b=j&S^j&L^S&L,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,N=f&65535|s<<16,Ke=E&65535|p<<16,d=M,b=fe,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=be,b=pe,E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,M=f&65535|s<<16,fe=E&65535|p<<16,l=o,h=c,A=m,q=M,_=B,u=R,I=F,v=N,S=G,L=Z,Q=ie,z=fe,J=ce,he=ge,W=ve,j=Ke,Ne%16===15)for(k=0;k<16;k++)d=n[k],b=a[k],E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=n[(k+9)%16],b=a[(k+9)%16],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,be=n[(k+1)%16],pe=a[(k+1)%16],d=(be>>>1|pe<<32-1)^(be>>>8|pe<<32-8)^be>>>7,b=(pe>>>1|be<<32-1)^(pe>>>8|be<<32-8)^(pe>>>7|be<<32-7),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,be=n[(k+14)%16],pe=a[(k+14)%16],d=(be>>>19|pe<<32-19)^(pe>>>61-32|be<<32-(61-32))^be>>>6,b=(pe>>>19|be<<32-19)^(be>>>61-32|pe<<32-(61-32))^(pe>>>6|be<<32-6),E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,n[k]=f&65535|s<<16,a[k]=E&65535|p<<16;d=v,b=j,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[0],b=e[0],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[0]=v=f&65535|s<<16,e[0]=j=E&65535|p<<16,d=l,b=S,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[1],b=e[1],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[1]=l=f&65535|s<<16,e[1]=S=E&65535|p<<16,d=h,b=L,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[2],b=e[2],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[2]=h=f&65535|s<<16,e[2]=L=E&65535|p<<16,d=A,b=Q,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[3],b=e[3],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[3]=A=f&65535|s<<16,e[3]=Q=E&65535|p<<16,d=q,b=z,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[4],b=e[4],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[4]=q=f&65535|s<<16,e[4]=z=E&65535|p<<16,d=_,b=J,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[5],b=e[5],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[5]=_=f&65535|s<<16,e[5]=J=E&65535|p<<16,d=u,b=he,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[6],b=e[6],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[6]=u=f&65535|s<<16,e[6]=he=E&65535|p<<16,d=I,b=W,E=b&65535,p=b>>>16,f=d&65535,s=d>>>16,d=t[7],b=e[7],E+=b&65535,p+=b>>>16,f+=d&65535,s+=d>>>16,p+=E>>>16,f+=p>>>16,s+=f>>>16,t[7]=I=f&65535|s<<16,e[7]=W=E&65535|p<<16,te+=128,i-=128}return i}function Us(t,e,r){var i=new Int32Array(8),n=new Int32Array(8),a=new Uint8Array(256),o,c=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,I_(i,n,e,r),r%=128,o=0;o=0;--n)i=r[n/8|0]>>(n&7)&1,E_(t,e,i),ov(e,t),ov(t,t),E_(t,e,i)}function Dh(t,e){var r=[He(),He(),He(),He()];hf(r[0],m_),hf(r[1],x_),hf(r[2],to),qt(r[3],m_,x_),q_(t,r,e)}var fv=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function cv(t,e){var r,i,n,a;for(i=63;i>=32;--i){for(r=0,n=i-32,a=i-12;n>8,e[n]-=r*256;e[n]+=r,e[i]=0}for(r=0,n=0;n<32;n++)e[n]+=r-(e[31]>>4)*fv[n],r=e[n]>>8,e[n]&=255;for(n=0;n<32;n++)e[n]-=r*fv[n];for(i=0;i<32;i++)e[i+1]+=e[i]>>8,t[i]=e[i]&255}function ks(t){var e=new Float64Array(64),r;for(r=0;r<64;r++)e[r]=t[r];for(r=0;r<64;r++)t[r]=0;cv(t,e)}function WK(t,e,r,i){var n=new Uint8Array(64),a=new Uint8Array(64),o,c,m=new Float64Array(64),M=[He(),He(),He(),He()];for(o=0;o>7&&ki(t[0],av,t[0]),qt(t[3],t[0],t[1]),0)}function ZK(t,e,r,i){var n,a,o=new Uint8Array(32),c=new Uint8Array(64),m=[He(),He(),He(),He()],M=[He(),He(),He(),He()];if(a=-1,r<64||XK(M,i))return-1;for(n=0;n=0}Tn.verify=fj;function aj(t){if(cf(t),t.length!==32)throw new Error("wrong seed length");for(var e=new Uint8Array(32),r=new Uint8Array(32),i=0;i<32;i++)e[i]=t[i];return $K(r,e),e[0]&=248,e[31]&=127,e[31]|=64,r[31]&=127,{public:r,private:e}}Tn.generateKeyPair=aj;Tn.default={}});var O_=P((Uie,Ph)=>{g();(function(t){"use strict";var e=function(C){var T,O=new Float64Array(16);if(C)for(T=0;T>24&255,C[T+1]=O>>16&255,C[T+2]=O>>8&255,C[T+3]=O&255,C[T+4]=w>>24&255,C[T+5]=w>>16&255,C[T+6]=w>>8&255,C[T+7]=w&255}function G(C,T,O,w,D){var H,Y=0;for(H=0;H>>8)-1}function Z(C,T,O,w){return G(C,T,O,w,16)}function ie(C,T,O,w){return G(C,T,O,w,32)}function fe(C,T,O,w){for(var D=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,H=O[0]&255|(O[1]&255)<<8|(O[2]&255)<<16|(O[3]&255)<<24,Y=O[4]&255|(O[5]&255)<<8|(O[6]&255)<<16|(O[7]&255)<<24,V=O[8]&255|(O[9]&255)<<8|(O[10]&255)<<16|(O[11]&255)<<24,ee=O[12]&255|(O[13]&255)<<8|(O[14]&255)<<16|(O[15]&255)<<24,Ee=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ae=T[0]&255|(T[1]&255)<<8|(T[2]&255)<<16|(T[3]&255)<<24,xe=T[4]&255|(T[5]&255)<<8|(T[6]&255)<<16|(T[7]&255)<<24,we=T[8]&255|(T[9]&255)<<8|(T[10]&255)<<16|(T[11]&255)<<24,je=T[12]&255|(T[13]&255)<<8|(T[14]&255)<<16|(T[15]&255)<<24,ze=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,Ye=O[16]&255|(O[17]&255)<<8|(O[18]&255)<<16|(O[19]&255)<<24,Ge=O[20]&255|(O[21]&255)<<8|(O[22]&255)<<16|(O[23]&255)<<24,Ve=O[24]&255|(O[25]&255)<<8|(O[26]&255)<<16|(O[27]&255)<<24,Je=O[28]&255|(O[29]&255)<<8|(O[30]&255)<<16|(O[31]&255)<<24,$e=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Ie=D,Le=H,Ae=Y,Me=V,Ce=ee,me=Ee,$=ae,X=xe,de=we,oe=je,se=ze,le=Ye,st=Ge,ht=Ve,pt=Je,ct=$e,K,mt=0;mt<20;mt+=2)K=Ie+st|0,Ce^=K<<7|K>>>32-7,K=Ce+Ie|0,de^=K<<9|K>>>32-9,K=de+Ce|0,st^=K<<13|K>>>32-13,K=st+de|0,Ie^=K<<18|K>>>32-18,K=me+Le|0,oe^=K<<7|K>>>32-7,K=oe+me|0,ht^=K<<9|K>>>32-9,K=ht+oe|0,Le^=K<<13|K>>>32-13,K=Le+ht|0,me^=K<<18|K>>>32-18,K=se+$|0,pt^=K<<7|K>>>32-7,K=pt+se|0,Ae^=K<<9|K>>>32-9,K=Ae+pt|0,$^=K<<13|K>>>32-13,K=$+Ae|0,se^=K<<18|K>>>32-18,K=ct+le|0,Me^=K<<7|K>>>32-7,K=Me+ct|0,X^=K<<9|K>>>32-9,K=X+Me|0,le^=K<<13|K>>>32-13,K=le+X|0,ct^=K<<18|K>>>32-18,K=Ie+Me|0,Le^=K<<7|K>>>32-7,K=Le+Ie|0,Ae^=K<<9|K>>>32-9,K=Ae+Le|0,Me^=K<<13|K>>>32-13,K=Me+Ae|0,Ie^=K<<18|K>>>32-18,K=me+Ce|0,$^=K<<7|K>>>32-7,K=$+me|0,X^=K<<9|K>>>32-9,K=X+$|0,Ce^=K<<13|K>>>32-13,K=Ce+X|0,me^=K<<18|K>>>32-18,K=se+oe|0,le^=K<<7|K>>>32-7,K=le+se|0,de^=K<<9|K>>>32-9,K=de+le|0,oe^=K<<13|K>>>32-13,K=oe+de|0,se^=K<<18|K>>>32-18,K=ct+pt|0,st^=K<<7|K>>>32-7,K=st+ct|0,ht^=K<<9|K>>>32-9,K=ht+st|0,pt^=K<<13|K>>>32-13,K=pt+ht|0,ct^=K<<18|K>>>32-18;Ie=Ie+D|0,Le=Le+H|0,Ae=Ae+Y|0,Me=Me+V|0,Ce=Ce+ee|0,me=me+Ee|0,$=$+ae|0,X=X+xe|0,de=de+we|0,oe=oe+je|0,se=se+ze|0,le=le+Ye|0,st=st+Ge|0,ht=ht+Ve|0,pt=pt+Je|0,ct=ct+$e|0,C[0]=Ie>>>0&255,C[1]=Ie>>>8&255,C[2]=Ie>>>16&255,C[3]=Ie>>>24&255,C[4]=Le>>>0&255,C[5]=Le>>>8&255,C[6]=Le>>>16&255,C[7]=Le>>>24&255,C[8]=Ae>>>0&255,C[9]=Ae>>>8&255,C[10]=Ae>>>16&255,C[11]=Ae>>>24&255,C[12]=Me>>>0&255,C[13]=Me>>>8&255,C[14]=Me>>>16&255,C[15]=Me>>>24&255,C[16]=Ce>>>0&255,C[17]=Ce>>>8&255,C[18]=Ce>>>16&255,C[19]=Ce>>>24&255,C[20]=me>>>0&255,C[21]=me>>>8&255,C[22]=me>>>16&255,C[23]=me>>>24&255,C[24]=$>>>0&255,C[25]=$>>>8&255,C[26]=$>>>16&255,C[27]=$>>>24&255,C[28]=X>>>0&255,C[29]=X>>>8&255,C[30]=X>>>16&255,C[31]=X>>>24&255,C[32]=de>>>0&255,C[33]=de>>>8&255,C[34]=de>>>16&255,C[35]=de>>>24&255,C[36]=oe>>>0&255,C[37]=oe>>>8&255,C[38]=oe>>>16&255,C[39]=oe>>>24&255,C[40]=se>>>0&255,C[41]=se>>>8&255,C[42]=se>>>16&255,C[43]=se>>>24&255,C[44]=le>>>0&255,C[45]=le>>>8&255,C[46]=le>>>16&255,C[47]=le>>>24&255,C[48]=st>>>0&255,C[49]=st>>>8&255,C[50]=st>>>16&255,C[51]=st>>>24&255,C[52]=ht>>>0&255,C[53]=ht>>>8&255,C[54]=ht>>>16&255,C[55]=ht>>>24&255,C[56]=pt>>>0&255,C[57]=pt>>>8&255,C[58]=pt>>>16&255,C[59]=pt>>>24&255,C[60]=ct>>>0&255,C[61]=ct>>>8&255,C[62]=ct>>>16&255,C[63]=ct>>>24&255}function ce(C,T,O,w){for(var D=w[0]&255|(w[1]&255)<<8|(w[2]&255)<<16|(w[3]&255)<<24,H=O[0]&255|(O[1]&255)<<8|(O[2]&255)<<16|(O[3]&255)<<24,Y=O[4]&255|(O[5]&255)<<8|(O[6]&255)<<16|(O[7]&255)<<24,V=O[8]&255|(O[9]&255)<<8|(O[10]&255)<<16|(O[11]&255)<<24,ee=O[12]&255|(O[13]&255)<<8|(O[14]&255)<<16|(O[15]&255)<<24,Ee=w[4]&255|(w[5]&255)<<8|(w[6]&255)<<16|(w[7]&255)<<24,ae=T[0]&255|(T[1]&255)<<8|(T[2]&255)<<16|(T[3]&255)<<24,xe=T[4]&255|(T[5]&255)<<8|(T[6]&255)<<16|(T[7]&255)<<24,we=T[8]&255|(T[9]&255)<<8|(T[10]&255)<<16|(T[11]&255)<<24,je=T[12]&255|(T[13]&255)<<8|(T[14]&255)<<16|(T[15]&255)<<24,ze=w[8]&255|(w[9]&255)<<8|(w[10]&255)<<16|(w[11]&255)<<24,Ye=O[16]&255|(O[17]&255)<<8|(O[18]&255)<<16|(O[19]&255)<<24,Ge=O[20]&255|(O[21]&255)<<8|(O[22]&255)<<16|(O[23]&255)<<24,Ve=O[24]&255|(O[25]&255)<<8|(O[26]&255)<<16|(O[27]&255)<<24,Je=O[28]&255|(O[29]&255)<<8|(O[30]&255)<<16|(O[31]&255)<<24,$e=w[12]&255|(w[13]&255)<<8|(w[14]&255)<<16|(w[15]&255)<<24,Ie=D,Le=H,Ae=Y,Me=V,Ce=ee,me=Ee,$=ae,X=xe,de=we,oe=je,se=ze,le=Ye,st=Ge,ht=Ve,pt=Je,ct=$e,K,mt=0;mt<20;mt+=2)K=Ie+st|0,Ce^=K<<7|K>>>32-7,K=Ce+Ie|0,de^=K<<9|K>>>32-9,K=de+Ce|0,st^=K<<13|K>>>32-13,K=st+de|0,Ie^=K<<18|K>>>32-18,K=me+Le|0,oe^=K<<7|K>>>32-7,K=oe+me|0,ht^=K<<9|K>>>32-9,K=ht+oe|0,Le^=K<<13|K>>>32-13,K=Le+ht|0,me^=K<<18|K>>>32-18,K=se+$|0,pt^=K<<7|K>>>32-7,K=pt+se|0,Ae^=K<<9|K>>>32-9,K=Ae+pt|0,$^=K<<13|K>>>32-13,K=$+Ae|0,se^=K<<18|K>>>32-18,K=ct+le|0,Me^=K<<7|K>>>32-7,K=Me+ct|0,X^=K<<9|K>>>32-9,K=X+Me|0,le^=K<<13|K>>>32-13,K=le+X|0,ct^=K<<18|K>>>32-18,K=Ie+Me|0,Le^=K<<7|K>>>32-7,K=Le+Ie|0,Ae^=K<<9|K>>>32-9,K=Ae+Le|0,Me^=K<<13|K>>>32-13,K=Me+Ae|0,Ie^=K<<18|K>>>32-18,K=me+Ce|0,$^=K<<7|K>>>32-7,K=$+me|0,X^=K<<9|K>>>32-9,K=X+$|0,Ce^=K<<13|K>>>32-13,K=Ce+X|0,me^=K<<18|K>>>32-18,K=se+oe|0,le^=K<<7|K>>>32-7,K=le+se|0,de^=K<<9|K>>>32-9,K=de+le|0,oe^=K<<13|K>>>32-13,K=oe+de|0,se^=K<<18|K>>>32-18,K=ct+pt|0,st^=K<<7|K>>>32-7,K=st+ct|0,ht^=K<<9|K>>>32-9,K=ht+st|0,pt^=K<<13|K>>>32-13,K=pt+ht|0,ct^=K<<18|K>>>32-18;C[0]=Ie>>>0&255,C[1]=Ie>>>8&255,C[2]=Ie>>>16&255,C[3]=Ie>>>24&255,C[4]=me>>>0&255,C[5]=me>>>8&255,C[6]=me>>>16&255,C[7]=me>>>24&255,C[8]=se>>>0&255,C[9]=se>>>8&255,C[10]=se>>>16&255,C[11]=se>>>24&255,C[12]=ct>>>0&255,C[13]=ct>>>8&255,C[14]=ct>>>16&255,C[15]=ct>>>24&255,C[16]=$>>>0&255,C[17]=$>>>8&255,C[18]=$>>>16&255,C[19]=$>>>24&255,C[20]=X>>>0&255,C[21]=X>>>8&255,C[22]=X>>>16&255,C[23]=X>>>24&255,C[24]=de>>>0&255,C[25]=de>>>8&255,C[26]=de>>>16&255,C[27]=de>>>24&255,C[28]=oe>>>0&255,C[29]=oe>>>8&255,C[30]=oe>>>16&255,C[31]=oe>>>24&255}function ge(C,T,O,w){fe(C,T,O,w)}function ve(C,T,O,w){ce(C,T,O,w)}var Ke=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function be(C,T,O,w,D,H,Y){var V=new Uint8Array(16),ee=new Uint8Array(64),Ee,ae;for(ae=0;ae<16;ae++)V[ae]=0;for(ae=0;ae<8;ae++)V[ae]=H[ae];for(;D>=64;){for(ge(ee,V,Y,Ke),ae=0;ae<64;ae++)C[T+ae]=O[w+ae]^ee[ae];for(Ee=1,ae=8;ae<16;ae++)Ee=Ee+(V[ae]&255)|0,V[ae]=Ee&255,Ee>>>=8;D-=64,T+=64,w+=64}if(D>0)for(ge(ee,V,Y,Ke),ae=0;ae=64;){for(ge(Y,H,D,Ke),ee=0;ee<64;ee++)C[T+ee]=Y[ee];for(V=1,ee=8;ee<16;ee++)V=V+(H[ee]&255)|0,H[ee]=V&255,V>>>=8;O-=64,T+=64}if(O>0)for(ge(Y,H,D,Ke),ee=0;ee>>13|O<<3)&8191,w=C[4]&255|(C[5]&255)<<8,this.r[2]=(O>>>10|w<<6)&7939,D=C[6]&255|(C[7]&255)<<8,this.r[3]=(w>>>7|D<<9)&8191,H=C[8]&255|(C[9]&255)<<8,this.r[4]=(D>>>4|H<<12)&255,this.r[5]=H>>>1&8190,Y=C[10]&255|(C[11]&255)<<8,this.r[6]=(H>>>14|Y<<2)&8191,V=C[12]&255|(C[13]&255)<<8,this.r[7]=(Y>>>11|V<<5)&8065,ee=C[14]&255|(C[15]&255)<<8,this.r[8]=(V>>>8|ee<<8)&8191,this.r[9]=ee>>>5&127,this.pad[0]=C[16]&255|(C[17]&255)<<8,this.pad[1]=C[18]&255|(C[19]&255)<<8,this.pad[2]=C[20]&255|(C[21]&255)<<8,this.pad[3]=C[22]&255|(C[23]&255)<<8,this.pad[4]=C[24]&255|(C[25]&255)<<8,this.pad[5]=C[26]&255|(C[27]&255)<<8,this.pad[6]=C[28]&255|(C[29]&255)<<8,this.pad[7]=C[30]&255|(C[31]&255)<<8};d.prototype.blocks=function(C,T,O){for(var w=this.fin?0:2048,D,H,Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge,Ve,Je,$e,Ie,Le,Ae,Me=this.h[0],Ce=this.h[1],me=this.h[2],$=this.h[3],X=this.h[4],de=this.h[5],oe=this.h[6],se=this.h[7],le=this.h[8],st=this.h[9],ht=this.r[0],pt=this.r[1],ct=this.r[2],K=this.r[3],mt=this.r[4],kt=this.r[5],Ft=this.r[6],bt=this.r[7],Dt=this.r[8],Pt=this.r[9];O>=16;)D=C[T+0]&255|(C[T+1]&255)<<8,Me+=D&8191,H=C[T+2]&255|(C[T+3]&255)<<8,Ce+=(D>>>13|H<<3)&8191,Y=C[T+4]&255|(C[T+5]&255)<<8,me+=(H>>>10|Y<<6)&8191,V=C[T+6]&255|(C[T+7]&255)<<8,$+=(Y>>>7|V<<9)&8191,ee=C[T+8]&255|(C[T+9]&255)<<8,X+=(V>>>4|ee<<12)&8191,de+=ee>>>1&8191,Ee=C[T+10]&255|(C[T+11]&255)<<8,oe+=(ee>>>14|Ee<<2)&8191,ae=C[T+12]&255|(C[T+13]&255)<<8,se+=(Ee>>>11|ae<<5)&8191,xe=C[T+14]&255|(C[T+15]&255)<<8,le+=(ae>>>8|xe<<8)&8191,st+=xe>>>5|w,we=0,je=we,je+=Me*ht,je+=Ce*(5*Pt),je+=me*(5*Dt),je+=$*(5*bt),je+=X*(5*Ft),we=je>>>13,je&=8191,je+=de*(5*kt),je+=oe*(5*mt),je+=se*(5*K),je+=le*(5*ct),je+=st*(5*pt),we+=je>>>13,je&=8191,ze=we,ze+=Me*pt,ze+=Ce*ht,ze+=me*(5*Pt),ze+=$*(5*Dt),ze+=X*(5*bt),we=ze>>>13,ze&=8191,ze+=de*(5*Ft),ze+=oe*(5*kt),ze+=se*(5*mt),ze+=le*(5*K),ze+=st*(5*ct),we+=ze>>>13,ze&=8191,Ye=we,Ye+=Me*ct,Ye+=Ce*pt,Ye+=me*ht,Ye+=$*(5*Pt),Ye+=X*(5*Dt),we=Ye>>>13,Ye&=8191,Ye+=de*(5*bt),Ye+=oe*(5*Ft),Ye+=se*(5*kt),Ye+=le*(5*mt),Ye+=st*(5*K),we+=Ye>>>13,Ye&=8191,Ge=we,Ge+=Me*K,Ge+=Ce*ct,Ge+=me*pt,Ge+=$*ht,Ge+=X*(5*Pt),we=Ge>>>13,Ge&=8191,Ge+=de*(5*Dt),Ge+=oe*(5*bt),Ge+=se*(5*Ft),Ge+=le*(5*kt),Ge+=st*(5*mt),we+=Ge>>>13,Ge&=8191,Ve=we,Ve+=Me*mt,Ve+=Ce*K,Ve+=me*ct,Ve+=$*pt,Ve+=X*ht,we=Ve>>>13,Ve&=8191,Ve+=de*(5*Pt),Ve+=oe*(5*Dt),Ve+=se*(5*bt),Ve+=le*(5*Ft),Ve+=st*(5*kt),we+=Ve>>>13,Ve&=8191,Je=we,Je+=Me*kt,Je+=Ce*mt,Je+=me*K,Je+=$*ct,Je+=X*pt,we=Je>>>13,Je&=8191,Je+=de*ht,Je+=oe*(5*Pt),Je+=se*(5*Dt),Je+=le*(5*bt),Je+=st*(5*Ft),we+=Je>>>13,Je&=8191,$e=we,$e+=Me*Ft,$e+=Ce*kt,$e+=me*mt,$e+=$*K,$e+=X*ct,we=$e>>>13,$e&=8191,$e+=de*pt,$e+=oe*ht,$e+=se*(5*Pt),$e+=le*(5*Dt),$e+=st*(5*bt),we+=$e>>>13,$e&=8191,Ie=we,Ie+=Me*bt,Ie+=Ce*Ft,Ie+=me*kt,Ie+=$*mt,Ie+=X*K,we=Ie>>>13,Ie&=8191,Ie+=de*ct,Ie+=oe*pt,Ie+=se*ht,Ie+=le*(5*Pt),Ie+=st*(5*Dt),we+=Ie>>>13,Ie&=8191,Le=we,Le+=Me*Dt,Le+=Ce*bt,Le+=me*Ft,Le+=$*kt,Le+=X*mt,we=Le>>>13,Le&=8191,Le+=de*K,Le+=oe*ct,Le+=se*pt,Le+=le*ht,Le+=st*(5*Pt),we+=Le>>>13,Le&=8191,Ae=we,Ae+=Me*Pt,Ae+=Ce*Dt,Ae+=me*bt,Ae+=$*Ft,Ae+=X*kt,we=Ae>>>13,Ae&=8191,Ae+=de*mt,Ae+=oe*K,Ae+=se*ct,Ae+=le*pt,Ae+=st*ht,we+=Ae>>>13,Ae&=8191,we=(we<<2)+we|0,we=we+je|0,je=we&8191,we=we>>>13,ze+=we,Me=je,Ce=ze,me=Ye,$=Ge,X=Ve,de=Je,oe=$e,se=Ie,le=Le,st=Ae,T+=16,O-=16;this.h[0]=Me,this.h[1]=Ce,this.h[2]=me,this.h[3]=$,this.h[4]=X,this.h[5]=de,this.h[6]=oe,this.h[7]=se,this.h[8]=le,this.h[9]=st},d.prototype.finish=function(C,T){var O=new Uint16Array(10),w,D,H,Y;if(this.leftover){for(Y=this.leftover,this.buffer[Y++]=1;Y<16;Y++)this.buffer[Y]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(w=this.h[1]>>>13,this.h[1]&=8191,Y=2;Y<10;Y++)this.h[Y]+=w,w=this.h[Y]>>>13,this.h[Y]&=8191;for(this.h[0]+=w*5,w=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=w,w=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=w,O[0]=this.h[0]+5,w=O[0]>>>13,O[0]&=8191,Y=1;Y<10;Y++)O[Y]=this.h[Y]+w,w=O[Y]>>>13,O[Y]&=8191;for(O[9]-=1<<13,D=(w^1)-1,Y=0;Y<10;Y++)O[Y]&=D;for(D=~D,Y=0;Y<10;Y++)this.h[Y]=this.h[Y]&D|O[Y];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,H=this.h[0]+this.pad[0],this.h[0]=H&65535,Y=1;Y<8;Y++)H=(this.h[Y]+this.pad[Y]|0)+(H>>>16)|0,this.h[Y]=H&65535;C[T+0]=this.h[0]>>>0&255,C[T+1]=this.h[0]>>>8&255,C[T+2]=this.h[1]>>>0&255,C[T+3]=this.h[1]>>>8&255,C[T+4]=this.h[2]>>>0&255,C[T+5]=this.h[2]>>>8&255,C[T+6]=this.h[3]>>>0&255,C[T+7]=this.h[3]>>>8&255,C[T+8]=this.h[4]>>>0&255,C[T+9]=this.h[4]>>>8&255,C[T+10]=this.h[5]>>>0&255,C[T+11]=this.h[5]>>>8&255,C[T+12]=this.h[6]>>>0&255,C[T+13]=this.h[6]>>>8&255,C[T+14]=this.h[7]>>>0&255,C[T+15]=this.h[7]>>>8&255},d.prototype.update=function(C,T,O){var w,D;if(this.leftover){for(D=16-this.leftover,D>O&&(D=O),w=0;w=16&&(D=O-O%16,this.blocks(C,T,D),T+=D,O-=D),O){for(w=0;w>16&1),H[O-1]&=65535;H[15]=Y[15]-32767-(H[14]>>16&1),D=H[15]>>16&1,H[14]&=65535,l(Y,H,1-D)}for(O=0;O<16;O++)C[2*O]=Y[O]&255,C[2*O+1]=Y[O]>>8}function A(C,T){var O=new Uint8Array(32),w=new Uint8Array(32);return h(O,C),h(w,T),ie(O,0,w,0)}function q(C){var T=new Uint8Array(32);return h(T,C),T[0]&1}function _(C,T){var O;for(O=0;O<16;O++)C[O]=T[2*O]+(T[2*O+1]<<8);C[15]&=32767}function u(C,T,O){for(var w=0;w<16;w++)C[w]=T[w]+O[w]}function I(C,T,O){for(var w=0;w<16;w++)C[w]=T[w]-O[w]}function j(C,T,O){var w,D,H=0,Y=0,V=0,ee=0,Ee=0,ae=0,xe=0,we=0,je=0,ze=0,Ye=0,Ge=0,Ve=0,Je=0,$e=0,Ie=0,Le=0,Ae=0,Me=0,Ce=0,me=0,$=0,X=0,de=0,oe=0,se=0,le=0,st=0,ht=0,pt=0,ct=0,K=O[0],mt=O[1],kt=O[2],Ft=O[3],bt=O[4],Dt=O[5],Pt=O[6],rr=O[7],Qt=O[8],Jt=O[9],Xt=O[10],Zt=O[11],fr=O[12],mr=O[13],xr=O[14],wr=O[15];w=T[0],H+=w*K,Y+=w*mt,V+=w*kt,ee+=w*Ft,Ee+=w*bt,ae+=w*Dt,xe+=w*Pt,we+=w*rr,je+=w*Qt,ze+=w*Jt,Ye+=w*Xt,Ge+=w*Zt,Ve+=w*fr,Je+=w*mr,$e+=w*xr,Ie+=w*wr,w=T[1],Y+=w*K,V+=w*mt,ee+=w*kt,Ee+=w*Ft,ae+=w*bt,xe+=w*Dt,we+=w*Pt,je+=w*rr,ze+=w*Qt,Ye+=w*Jt,Ge+=w*Xt,Ve+=w*Zt,Je+=w*fr,$e+=w*mr,Ie+=w*xr,Le+=w*wr,w=T[2],V+=w*K,ee+=w*mt,Ee+=w*kt,ae+=w*Ft,xe+=w*bt,we+=w*Dt,je+=w*Pt,ze+=w*rr,Ye+=w*Qt,Ge+=w*Jt,Ve+=w*Xt,Je+=w*Zt,$e+=w*fr,Ie+=w*mr,Le+=w*xr,Ae+=w*wr,w=T[3],ee+=w*K,Ee+=w*mt,ae+=w*kt,xe+=w*Ft,we+=w*bt,je+=w*Dt,ze+=w*Pt,Ye+=w*rr,Ge+=w*Qt,Ve+=w*Jt,Je+=w*Xt,$e+=w*Zt,Ie+=w*fr,Le+=w*mr,Ae+=w*xr,Me+=w*wr,w=T[4],Ee+=w*K,ae+=w*mt,xe+=w*kt,we+=w*Ft,je+=w*bt,ze+=w*Dt,Ye+=w*Pt,Ge+=w*rr,Ve+=w*Qt,Je+=w*Jt,$e+=w*Xt,Ie+=w*Zt,Le+=w*fr,Ae+=w*mr,Me+=w*xr,Ce+=w*wr,w=T[5],ae+=w*K,xe+=w*mt,we+=w*kt,je+=w*Ft,ze+=w*bt,Ye+=w*Dt,Ge+=w*Pt,Ve+=w*rr,Je+=w*Qt,$e+=w*Jt,Ie+=w*Xt,Le+=w*Zt,Ae+=w*fr,Me+=w*mr,Ce+=w*xr,me+=w*wr,w=T[6],xe+=w*K,we+=w*mt,je+=w*kt,ze+=w*Ft,Ye+=w*bt,Ge+=w*Dt,Ve+=w*Pt,Je+=w*rr,$e+=w*Qt,Ie+=w*Jt,Le+=w*Xt,Ae+=w*Zt,Me+=w*fr,Ce+=w*mr,me+=w*xr,$+=w*wr,w=T[7],we+=w*K,je+=w*mt,ze+=w*kt,Ye+=w*Ft,Ge+=w*bt,Ve+=w*Dt,Je+=w*Pt,$e+=w*rr,Ie+=w*Qt,Le+=w*Jt,Ae+=w*Xt,Me+=w*Zt,Ce+=w*fr,me+=w*mr,$+=w*xr,X+=w*wr,w=T[8],je+=w*K,ze+=w*mt,Ye+=w*kt,Ge+=w*Ft,Ve+=w*bt,Je+=w*Dt,$e+=w*Pt,Ie+=w*rr,Le+=w*Qt,Ae+=w*Jt,Me+=w*Xt,Ce+=w*Zt,me+=w*fr,$+=w*mr,X+=w*xr,de+=w*wr,w=T[9],ze+=w*K,Ye+=w*mt,Ge+=w*kt,Ve+=w*Ft,Je+=w*bt,$e+=w*Dt,Ie+=w*Pt,Le+=w*rr,Ae+=w*Qt,Me+=w*Jt,Ce+=w*Xt,me+=w*Zt,$+=w*fr,X+=w*mr,de+=w*xr,oe+=w*wr,w=T[10],Ye+=w*K,Ge+=w*mt,Ve+=w*kt,Je+=w*Ft,$e+=w*bt,Ie+=w*Dt,Le+=w*Pt,Ae+=w*rr,Me+=w*Qt,Ce+=w*Jt,me+=w*Xt,$+=w*Zt,X+=w*fr,de+=w*mr,oe+=w*xr,se+=w*wr,w=T[11],Ge+=w*K,Ve+=w*mt,Je+=w*kt,$e+=w*Ft,Ie+=w*bt,Le+=w*Dt,Ae+=w*Pt,Me+=w*rr,Ce+=w*Qt,me+=w*Jt,$+=w*Xt,X+=w*Zt,de+=w*fr,oe+=w*mr,se+=w*xr,le+=w*wr,w=T[12],Ve+=w*K,Je+=w*mt,$e+=w*kt,Ie+=w*Ft,Le+=w*bt,Ae+=w*Dt,Me+=w*Pt,Ce+=w*rr,me+=w*Qt,$+=w*Jt,X+=w*Xt,de+=w*Zt,oe+=w*fr,se+=w*mr,le+=w*xr,st+=w*wr,w=T[13],Je+=w*K,$e+=w*mt,Ie+=w*kt,Le+=w*Ft,Ae+=w*bt,Me+=w*Dt,Ce+=w*Pt,me+=w*rr,$+=w*Qt,X+=w*Jt,de+=w*Xt,oe+=w*Zt,se+=w*fr,le+=w*mr,st+=w*xr,ht+=w*wr,w=T[14],$e+=w*K,Ie+=w*mt,Le+=w*kt,Ae+=w*Ft,Me+=w*bt,Ce+=w*Dt,me+=w*Pt,$+=w*rr,X+=w*Qt,de+=w*Jt,oe+=w*Xt,se+=w*Zt,le+=w*fr,st+=w*mr,ht+=w*xr,pt+=w*wr,w=T[15],Ie+=w*K,Le+=w*mt,Ae+=w*kt,Me+=w*Ft,Ce+=w*bt,me+=w*Dt,$+=w*Pt,X+=w*rr,de+=w*Qt,oe+=w*Jt,se+=w*Xt,le+=w*Zt,st+=w*fr,ht+=w*mr,pt+=w*xr,ct+=w*wr,H+=38*Le,Y+=38*Ae,V+=38*Me,ee+=38*Ce,Ee+=38*me,ae+=38*$,xe+=38*X,we+=38*de,je+=38*oe,ze+=38*se,Ye+=38*le,Ge+=38*st,Ve+=38*ht,Je+=38*pt,$e+=38*ct,D=1,w=H+D+65535,D=Math.floor(w/65536),H=w-D*65536,w=Y+D+65535,D=Math.floor(w/65536),Y=w-D*65536,w=V+D+65535,D=Math.floor(w/65536),V=w-D*65536,w=ee+D+65535,D=Math.floor(w/65536),ee=w-D*65536,w=Ee+D+65535,D=Math.floor(w/65536),Ee=w-D*65536,w=ae+D+65535,D=Math.floor(w/65536),ae=w-D*65536,w=xe+D+65535,D=Math.floor(w/65536),xe=w-D*65536,w=we+D+65535,D=Math.floor(w/65536),we=w-D*65536,w=je+D+65535,D=Math.floor(w/65536),je=w-D*65536,w=ze+D+65535,D=Math.floor(w/65536),ze=w-D*65536,w=Ye+D+65535,D=Math.floor(w/65536),Ye=w-D*65536,w=Ge+D+65535,D=Math.floor(w/65536),Ge=w-D*65536,w=Ve+D+65535,D=Math.floor(w/65536),Ve=w-D*65536,w=Je+D+65535,D=Math.floor(w/65536),Je=w-D*65536,w=$e+D+65535,D=Math.floor(w/65536),$e=w-D*65536,w=Ie+D+65535,D=Math.floor(w/65536),Ie=w-D*65536,H+=D-1+37*(D-1),D=1,w=H+D+65535,D=Math.floor(w/65536),H=w-D*65536,w=Y+D+65535,D=Math.floor(w/65536),Y=w-D*65536,w=V+D+65535,D=Math.floor(w/65536),V=w-D*65536,w=ee+D+65535,D=Math.floor(w/65536),ee=w-D*65536,w=Ee+D+65535,D=Math.floor(w/65536),Ee=w-D*65536,w=ae+D+65535,D=Math.floor(w/65536),ae=w-D*65536,w=xe+D+65535,D=Math.floor(w/65536),xe=w-D*65536,w=we+D+65535,D=Math.floor(w/65536),we=w-D*65536,w=je+D+65535,D=Math.floor(w/65536),je=w-D*65536,w=ze+D+65535,D=Math.floor(w/65536),ze=w-D*65536,w=Ye+D+65535,D=Math.floor(w/65536),Ye=w-D*65536,w=Ge+D+65535,D=Math.floor(w/65536),Ge=w-D*65536,w=Ve+D+65535,D=Math.floor(w/65536),Ve=w-D*65536,w=Je+D+65535,D=Math.floor(w/65536),Je=w-D*65536,w=$e+D+65535,D=Math.floor(w/65536),$e=w-D*65536,w=Ie+D+65535,D=Math.floor(w/65536),Ie=w-D*65536,H+=D-1+37*(D-1),C[0]=H,C[1]=Y,C[2]=V,C[3]=ee,C[4]=Ee,C[5]=ae,C[6]=xe,C[7]=we,C[8]=je,C[9]=ze,C[10]=Ye,C[11]=Ge,C[12]=Ve,C[13]=Je,C[14]=$e,C[15]=Ie}function S(C,T){j(C,T,T)}function L(C,T){var O=e(),w;for(w=0;w<16;w++)O[w]=T[w];for(w=253;w>=0;w--)S(O,O),w!==2&&w!==4&&j(O,O,T);for(w=0;w<16;w++)C[w]=O[w]}function Q(C,T){var O=e(),w;for(w=0;w<16;w++)O[w]=T[w];for(w=250;w>=0;w--)S(O,O),w!==1&&j(O,O,T);for(w=0;w<16;w++)C[w]=O[w]}function z(C,T,O){var w=new Uint8Array(32),D=new Float64Array(80),H,Y,V=e(),ee=e(),Ee=e(),ae=e(),xe=e(),we=e();for(Y=0;Y<31;Y++)w[Y]=T[Y];for(w[31]=T[31]&127|64,w[0]&=248,_(D,O),Y=0;Y<16;Y++)ee[Y]=D[Y],ae[Y]=V[Y]=Ee[Y]=0;for(V[0]=ae[0]=1,Y=254;Y>=0;--Y)H=w[Y>>>3]>>>(Y&7)&1,l(V,ee,H),l(Ee,ae,H),u(xe,V,Ee),I(V,V,Ee),u(Ee,ee,ae),I(ee,ee,ae),S(ae,xe),S(we,V),j(V,Ee,V),j(Ee,ee,xe),u(xe,V,Ee),I(V,V,Ee),S(ee,V),I(Ee,ae,we),j(V,Ee,c),u(V,V,ae),j(Ee,Ee,V),j(V,ae,we),j(ae,ee,D),S(ee,xe),l(V,ee,H),l(Ee,ae,H);for(Y=0;Y<16;Y++)D[Y+16]=V[Y],D[Y+32]=Ee[Y],D[Y+48]=ee[Y],D[Y+64]=ae[Y];var je=D.subarray(32),ze=D.subarray(16);return L(je,je),j(ze,ze,je),h(C,ze),0}function J(C,T){return z(C,T,n)}function he(C,T){return r(T,32),J(C,T)}function W(C,T,O){var w=new Uint8Array(32);return z(w,O,T),ve(C,i,w,Ke)}var te=p,Qe=f;function ne(C,T,O,w,D,H){var Y=new Uint8Array(32);return W(Y,D,H),te(C,T,O,w,Y)}function ye(C,T,O,w,D,H){var Y=new Uint8Array(32);return W(Y,D,H),Qe(C,T,O,w,Y)}var Rt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Pe(C,T,O,w){for(var D=new Int32Array(16),H=new Int32Array(16),Y,V,ee,Ee,ae,xe,we,je,ze,Ye,Ge,Ve,Je,$e,Ie,Le,Ae,Me,Ce,me,$,X,de,oe,se,le,st=C[0],ht=C[1],pt=C[2],ct=C[3],K=C[4],mt=C[5],kt=C[6],Ft=C[7],bt=T[0],Dt=T[1],Pt=T[2],rr=T[3],Qt=T[4],Jt=T[5],Xt=T[6],Zt=T[7],fr=0;w>=128;){for(Ce=0;Ce<16;Ce++)me=8*Ce+fr,D[Ce]=O[me+0]<<24|O[me+1]<<16|O[me+2]<<8|O[me+3],H[Ce]=O[me+4]<<24|O[me+5]<<16|O[me+6]<<8|O[me+7];for(Ce=0;Ce<80;Ce++)if(Y=st,V=ht,ee=pt,Ee=ct,ae=K,xe=mt,we=kt,je=Ft,ze=bt,Ye=Dt,Ge=Pt,Ve=rr,Je=Qt,$e=Jt,Ie=Xt,Le=Zt,$=Ft,X=Zt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=(K>>>14|Qt<<32-14)^(K>>>18|Qt<<32-18)^(Qt>>>41-32|K<<32-(41-32)),X=(Qt>>>14|K<<32-14)^(Qt>>>18|K<<32-18)^(K>>>41-32|Qt<<32-(41-32)),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=K&mt^~K&kt,X=Qt&Jt^~Qt&Xt,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=Rt[Ce*2],X=Rt[Ce*2+1],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=D[Ce%16],X=H[Ce%16],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,Ae=se&65535|le<<16,Me=de&65535|oe<<16,$=Ae,X=Me,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=(st>>>28|bt<<32-28)^(bt>>>34-32|st<<32-(34-32))^(bt>>>39-32|st<<32-(39-32)),X=(bt>>>28|st<<32-28)^(st>>>34-32|bt<<32-(34-32))^(st>>>39-32|bt<<32-(39-32)),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,$=st&ht^st&pt^ht&pt,X=bt&Dt^bt&Pt^Dt&Pt,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,je=se&65535|le<<16,Le=de&65535|oe<<16,$=Ee,X=Ve,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=Ae,X=Me,de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,Ee=se&65535|le<<16,Ve=de&65535|oe<<16,ht=Y,pt=V,ct=ee,K=Ee,mt=ae,kt=xe,Ft=we,st=je,Dt=ze,Pt=Ye,rr=Ge,Qt=Ve,Jt=Je,Xt=$e,Zt=Ie,bt=Le,Ce%16===15)for(me=0;me<16;me++)$=D[me],X=H[me],de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=D[(me+9)%16],X=H[(me+9)%16],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,Ae=D[(me+1)%16],Me=H[(me+1)%16],$=(Ae>>>1|Me<<32-1)^(Ae>>>8|Me<<32-8)^Ae>>>7,X=(Me>>>1|Ae<<32-1)^(Me>>>8|Ae<<32-8)^(Me>>>7|Ae<<32-7),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,Ae=D[(me+14)%16],Me=H[(me+14)%16],$=(Ae>>>19|Me<<32-19)^(Me>>>61-32|Ae<<32-(61-32))^Ae>>>6,X=(Me>>>19|Ae<<32-19)^(Ae>>>61-32|Me<<32-(61-32))^(Me>>>6|Ae<<32-6),de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,D[me]=se&65535|le<<16,H[me]=de&65535|oe<<16;$=st,X=bt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[0],X=T[0],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[0]=st=se&65535|le<<16,T[0]=bt=de&65535|oe<<16,$=ht,X=Dt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[1],X=T[1],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[1]=ht=se&65535|le<<16,T[1]=Dt=de&65535|oe<<16,$=pt,X=Pt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[2],X=T[2],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[2]=pt=se&65535|le<<16,T[2]=Pt=de&65535|oe<<16,$=ct,X=rr,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[3],X=T[3],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[3]=ct=se&65535|le<<16,T[3]=rr=de&65535|oe<<16,$=K,X=Qt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[4],X=T[4],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[4]=K=se&65535|le<<16,T[4]=Qt=de&65535|oe<<16,$=mt,X=Jt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[5],X=T[5],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[5]=mt=se&65535|le<<16,T[5]=Jt=de&65535|oe<<16,$=kt,X=Xt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[6],X=T[6],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[6]=kt=se&65535|le<<16,T[6]=Xt=de&65535|oe<<16,$=Ft,X=Zt,de=X&65535,oe=X>>>16,se=$&65535,le=$>>>16,$=C[7],X=T[7],de+=X&65535,oe+=X>>>16,se+=$&65535,le+=$>>>16,oe+=de>>>16,se+=oe>>>16,le+=se>>>16,C[7]=Ft=se&65535|le<<16,T[7]=Zt=de&65535|oe<<16,fr+=128,w-=128}return w}function We(C,T,O){var w=new Int32Array(8),D=new Int32Array(8),H=new Uint8Array(256),Y,V=O;for(w[0]=1779033703,w[1]=3144134277,w[2]=1013904242,w[3]=2773480762,w[4]=1359893119,w[5]=2600822924,w[6]=528734635,w[7]=1541459225,D[0]=4089235720,D[1]=2227873595,D[2]=4271175723,D[3]=1595750129,D[4]=2917565137,D[5]=725511199,D[6]=4215389547,D[7]=327033209,Pe(w,D,T,O),O%=128,Y=0;Y=0;--D)w=O[D/8|0]>>(D&7)&1,Ue(C,T,w),It(T,C),It(C,C),Ue(C,T,w)}function Re(C,T){var O=[e(),e(),e(),e()];s(O[0],B),s(O[1],R),s(O[2],o),j(O[3],B,R),St(C,O,T)}function rt(C,T,O){var w=new Uint8Array(64),D=[e(),e(),e(),e()],H;for(O||r(T,32),We(w,T,32),w[0]&=248,w[31]&=127,w[31]|=64,Re(D,w),tt(C,D),H=0;H<32;H++)T[H+32]=C[H];return 0}var Et=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Oe(C,T){var O,w,D,H;for(w=63;w>=32;--w){for(O=0,D=w-32,H=w-12;D>4)*Et[D],O=T[D]>>8,T[D]&=255;for(D=0;D<32;D++)T[D]-=O*Et[D];for(w=0;w<32;w++)T[w+1]+=T[w]>>8,C[w]=T[w]&255}function it(C){var T=new Float64Array(64),O;for(O=0;O<64;O++)T[O]=C[O];for(O=0;O<64;O++)C[O]=0;Oe(C,T)}function Tt(C,T,O,w){var D=new Uint8Array(64),H=new Uint8Array(64),Y=new Uint8Array(64),V,ee,Ee=new Float64Array(64),ae=[e(),e(),e(),e()];We(D,w,32),D[0]&=248,D[31]&=127,D[31]|=64;var xe=O+64;for(V=0;V>7&&I(C[0],a,C[0]),j(C[3],C[0],C[1]),0)}function nt(C,T,O,w){var D,H=new Uint8Array(32),Y=new Uint8Array(64),V=[e(),e(),e(),e()],ee=[e(),e(),e(),e()];if(O<64||ke(ee,w))return-1;for(D=0;D=0},t.sign.keyPair=function(){var C=new Uint8Array(Se),T=new Uint8Array(Xe);return rt(C,T),{publicKey:C,secretKey:T}},t.sign.keyPair.fromSecretKey=function(C){if(_e(C),C.length!==Xe)throw new Error("bad secret key size");for(var T=new Uint8Array(Se),O=0;O{g();(function(t,e){"use strict";typeof Uh<"u"&&Uh.exports?Uh.exports=e(O_()):t.ed2curve=e(t.nacl)})(D_,function(t){"use strict";if(!t)throw new Error("tweetnacl not loaded");var e=function(k){var d,b=new Float64Array(16);if(k)for(d=0;d=0;E--)F(b,b),E!==2&&E!==4&&R(b,b,d);for(E=0;E<16;E++)k[E]=b[E]}function G(k,d){var b,E,p,f=e(),s=e();for(b=0;b<16;b++)s[b]=d[b];for(o(s),o(s),o(s),E=0;E<2;E++){for(f[0]=s[0]-65517,b=1;b<15;b++)f[b]=s[b]-65535-(f[b-1]>>16&1),f[b-1]&=65535;f[15]=s[15]-32767-(f[14]>>16&1),p=f[15]>>16&1,f[14]&=65535,c(s,f,1-p)}for(b=0;b<16;b++)k[2*b]=s[b]&255,k[2*b+1]=s[b]>>8}function Z(k){var d=new Uint8Array(32);return G(d,k),d[0]&1}function ie(k,d,b,E,p){var f,s=0;for(f=0;f>>8)-1}function fe(k,d,b,E){return ie(k,d,b,E,32)}function ce(k,d){var b=new Uint8Array(32),E=new Uint8Array(32);return G(b,k),G(E,d),fe(b,0,E,0)}function ge(k,d){var b=e(),E;for(E=0;E<16;E++)b[E]=d[E];for(E=250;E>=0;E--)F(b,b),E!==1&&R(b,b,d);for(E=0;E<16;E++)k[E]=b[E]}function ve(k,d){var b;for(b=0;b<16;b++)k[b]=d[b]|0}function Ke(k,d){var b=e(),E=e(),p=e(),f=e(),s=e(),v=e(),l=e();return ve(k[2],i),m(k[1],d),F(p,k[1]),R(f,p,n),B(p,p,k[2]),M(f,k[2],f),F(s,f),F(v,s),R(l,v,s),R(b,l,p),R(b,b,f),ge(b,b),R(b,b,p),R(b,b,f),R(b,b,f),R(k[0],b,f),F(E,k[0]),R(E,E,f),ce(E,p)&&R(k[0],k[0],a),F(E,k[0]),R(E,E,f),ce(E,p)?-1:(Z(k[0])===d[31]>>7&&B(k[0],r,k[0]),R(k[3],k[0],k[1]),0)}function be(k){var d=new Uint8Array(32),b=[e(),e(),e(),e()],E=e(),p=e();if(Ke(b,k))return null;var f=b[1];return M(E,i,f),B(p,i,f),N(p,p),R(E,E,p),G(d,E),d}function pe(k){var d=new Uint8Array(64),b=new Uint8Array(32),E;for(t.lowlevel.crypto_hash(d,k,32),d[0]&=248,d[31]&=127,d[31]|=64,E=0;E<32;E++)b[E]=d[E];for(E=0;E<64;E++)d[E]=0;return b}function Ne(k){var d=be(k.publicKey);return d?{publicKey:d,secretKey:pe(k.secretKey)}:null}return{convertPublicKey:be,convertSecretKey:pe,convertKeyPair:Ne}})});var K_=P(yv=>{"use strict";g();Object.defineProperty(yv,"__esModule",{value:!0});function pj(t){var e=4,r=t.length,i=r%e;if(!i)return t;var n=r,a=e-i,o=r+a,c=U.alloc(o);for(c.write(t);a--;)c.write("=",n++);return c.toString()}yv.default=pj});var H_=P(wv=>{"use strict";g();Object.defineProperty(wv,"__esModule",{value:!0});var vj=K_();function j_(t,e){return e===void 0&&(e="utf8"),U.isBuffer(t)?mv(t.toString("base64")):mv(U.from(t,e).toString("base64"))}function bj(t,e){return e===void 0&&(e="utf8"),U.from(xv(t),"base64").toString(e)}function xv(t){return t=t.toString(),vj.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function mv(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function gj(t){return U.from(xv(t),"base64")}var ao=j_;ao.encode=j_;ao.decode=bj;ao.toBase64=xv;ao.fromBase64=mv;ao.toBuffer=gj;wv.default=ao});var z_=P((Gie,Yh)=>{g();Yh.exports=H_().default;Yh.exports.default=Yh.exports});g();g();var bn=$r(oc(),1),xa=$r(Rl(),1);var Z4={};Sv(Z4,{concatUint8Arrays:()=>Kt,decodeInt32:()=>Tl,encodeInt32:()=>ji,encodeInt64:()=>Z0,fromBigInt:()=>YO,hexToUint8Array:()=>Nt,isHex:()=>Mt,originPrivateKey:()=>zO,toBigInt:()=>GO,toByteArray:()=>Hn,uint8ArrayToHex:()=>jt});g();var X4=[];for(let t=0;t<=255;++t){let e=t.toString(16).padStart(2,"0");X4.push(e)}var zO="01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009";function Mt(t){return/^([0-9A-Fa-f])*$/.test(t)}function Nt(t){return new Uint8Array(t.match(/.{1,2}/g).map(e=>parseInt(e,16)))}function jt(t){let e=new Uint8Array(t),r=new Array(e.length);for(let i=0;ii+n.byteLength,0),{buffer:r}=t.reduce(({buffer:i,pos:n},a)=>(i.set(new Uint8Array(a),n),{buffer:i,pos:n+a.byteLength}),{buffer:new Uint8Array(e),pos:0});return r}function ji(t){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,t,!0),new Uint8Array(e).reverse()}function Z0(t){let e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,BigInt(t),!0),new Uint8Array(e).reverse()}function Tl(t){let e=0;for(let r=0;r=256;)t=t>>>8,e.unshift(t&255);return e}async function e5(t){let e=new URL("/api",t);return(0,bn.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - nearestEndpoints { - ip, - port - } - }`})}).then(zn).then(r=>r.errors||r.data.nearestEndpoints==null?[]:r.data.nearestEndpoints)}async function t5(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - lastTransaction(address: "${t}") { - chainLength - } - }`})}).then(zn).then(i=>i.errors||i.data.lastTransaction==null?0:i.data.lastTransaction.chainLength)}async function r5(t){let e=new URL("/api",t);return(0,bn.default)(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - sharedSecrets { - storageNoncePublicKey - } - }`})}).then(zn).then(r=>r.errors||r.data.sharedSecrets==null?"":r.data.sharedSecrets.storageNoncePublicKey)}async function i5(t,e){let r=new URL("/api/transaction_fee",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:t.toJSON()}).then(zn)}async function n5(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'address' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - transaction(address: "${t}") { - data { - ownerships { - secret, - authorizedPublicKeys { - encryptedSecretKey, - publicKey - } - } - } - } - }`})}).then(zn).then(i=>i.errors||i.data==null?[]:i.data.transaction.data.ownerships)}async function f5(t,e){if(typeof t!="string"&&!(address instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'address' must be in hexadecimal form if it's string";t instanceof Uint8Array&&(t=jt(t));let r=new URL("/api",e);return(0,bn.default)(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:`query { - token(address: "${t}") { - genesis, name, symbol, supply, type - properties, collection, id, decimals - } - }`})}).then(zn).then(i=>i.errors||i.data==null?[]:i.data.token)}async function a5(t,e,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'originPublicKey' must be a string or Uint8Array";if(typeof t=="string"&&!Mt(t))throw"'originPublicKey' must be in hexadecimal form if it's string";if(t instanceof Uint8Array&&(t=jt(t)),typeof e!="string")throw"'certificate' must be a string";let i=new URL("/api/origin_key",r);return(0,bn.default)(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({origin_public_key:t,certificate:e})}).then(zn)}async function o5(t,e=void 0){let r;e===void 0?r=`query { - oracleData { - timestamp, - services { - uco { - eur, - usd - } - } - } - }`:r=`query { - oracleData(timestamp: ${e}) { - services { - uco { - eur, - usd - } - } - } - }`;let i=new URL("/api",t);return(0,bn.default)(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:r})}).then(zn).then(n=>n.data.oracleData==null?{}:n.data.oracleData)}async function s5(t,e){let{host:r,protocol:i}=new URL(t),n=i=="https:"?"wss":"ws",a=(0,xa.absintheCreate)(`${n}://${r}/socket`),c=(0,xa.absintheSend)(a,` - subscription { - oracleUpdate { - timestamp, - services { - uco { - eur, - usd - } - } - } - } - `);return(0,xa.absintheObserve)(a,c,m=>{e(m.data.oracelUpdate)})}async function zn(t){return new Promise(function(e,r){t.status>=200&&t.status<=299?t.json().then(e):r(t.statusText)})}var Q_={};Sv(Q_,{IDToCurve:()=>gv,IDToHashAlgo:()=>bv,aesDecrypt:()=>Gh,aesEncrypt:()=>zh,curveToID:()=>no,deriveAddress:()=>ia,deriveKeyPair:()=>na,ecDecrypt:()=>Hh,ecEncrypt:()=>jh,generateDeterministicKeyPair:()=>Kh,getHashDigest:()=>N_,hash:()=>Qh,hashAlgoToID:()=>Nh,randomSecretKey:()=>Lh,sign:()=>fo,verify:()=>dj});g();var $t=$r(tv(),1),U_=$r(Ms(),1),k_=$r($9(),1),F_=$r(y_(),1),Fs=$r(T_(),1),dv=$r(P_(),1);var{ec:L_,eddsa:oj}=U_.default,lv=new oj("ed25519"),pv=new L_("p256"),vv=new L_("secp256k1"),{sha3_512:sj,sha3_256:uj}=k_.default,hj=1;function Lh(){return new Uint8Array((0,$t.randomBytes)(32))}function Nh(t){switch(t){case"sha256":return 0;case"sha512":return 1;case"sha3-256":return 2;case"sha3-512":return 3;case"blake2b":return 4;default:throw"Hash algorithm not supported"}}function bv(t){switch(t){case 0:return"sha256";case 1:return"sha512";case 2:return"sha3-256";case 3:return"sha3-512";case 4:return"blake2b";default:throw"Hash algorithm ID not supported"}}function no(t){switch(t){case"ed25519":return 0;case"P256":return 1;case"secp256k1":return 2;default:throw"Curve not supported"}}function gv(t){switch(t){case 0:return"ed25519";case 1:return"P256";case 2:return"secp256k1";default:throw"Curve ID not supported"}}function ia(t,e,r="ed25519",i="sha256"){let{publicKey:n}=na(t,e,r),a=no(r),o=Qh(n,i);return Kt([Uint8Array.from([a]),Uint8Array.from(o)])}function Qh(t,e="sha256"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'content' must be a string or Uint8Array";typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t));let r=Nh(e),i=N_(t,e);return Kt([Uint8Array.from([r]),Uint8Array.from(i)])}function N_(t,e){switch(e){case"sha256":{let r=(0,$t.createHash)(e);return r.update(t),r.digest()}case"sha512":{let r=(0,$t.createHash)(e);return r.update(t),r.digest()}case"sha3-256":{let r=uj.create();return r.update(t),r.digest()}case"sha3-512":{let r=sj.create();return r.update(t),r.digest()}case"blake2b":{let r=new Uint8Array(64),i=(0,F_.default)(64);return i.update(t),i.digest(r),r}default:throw"Hash algorithm not supported"}}function na(t,e,r="ed25519"){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'seed must be a string";if(typeof e!="number"||e<0)throw"'index' must be a positive number";let i=lj(t,e);return Kh(i,r,hj)}function Kh(t,e,r){let i=no(e),{publicKey:n,privateKey:a}=cj(t,e);return{privateKey:Kt([Uint8Array.from([i]),Uint8Array.from([r]),a]),publicKey:Kt([Uint8Array.from([i]),Uint8Array.from([r]),n])}}function cj(t,e){switch(e){case"ed25519":{let r=lv.keyFromSecret(t),i=new Uint8Array(r.pubBytes());return{privateKey:t,publicKey:i}}case"P256":{let r=pv.keyFromPrivate(t),i=Nt(r.getPublic().encode("hex"));return{privateKey:t,publicKey:i}}case"secp256k1":{let r=vv.keyFromPrivate(t),i=Nt(r.getPublic().encode("hex"));return{privateKey:t,publicKey:i}}default:throw"Curve not supported"}}function fo(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or an Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'privateKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let n=lv.keyFromSecret(i);return Uint8Array.from(n.sign(t).toBytes())}case 1:{let n=(0,$t.createHash)("sha256").update(t).digest(),a=pv.keyFromPrivate(i);return Uint8Array.from(a.sign(n).toDER())}case 2:{let n=(0,$t.createHash)("sha256").update(t).digest(),a=vv.keyFromPrivate(i);return Uint8Array.from(a.sign(n).toDER())}default:throw"Curve not supported"}}function dj(t,e,r){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'signature' must be a string of Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'signature' must be an hexadecimal string";if(typeof e=="string"&&(Mt(e)?e=Nt(e):e=new TextEncoder().encode(e)),typeof r=="string")if(Mt(r))r=Nt(r);else throw"'publicKey' must be an hexadecimal string";let i=r.slice(0,1),n=r.slice(2,r.length);switch(i[0]){case 0:return lv.keyFromPublic(Array.from(n)).verify(e,Array.from(t));case 1:{let a=(0,$t.createHash)("sha256").update(e).digest();return pv.keyFromPublic(n).verify(a,t)}case 2:{let a=(0,$t.createHash)("sha256").update(e).digest();return vv.keyFromPublic(n).verify(a,t)}default:throw"Curve not supported"}}function jh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'publicKey' must be a string or Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'publicKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let{public:n,private:a}=Fs.generateKeyPair((0,$t.randomBytes)(32)),o=dv.default.convertPublicKey(i),c=Fs.sharedKey(a,o),{aesKey:m,iv:M}=io(c),{tag:B,encrypted:R}=kh(t,m,M);return Kt([Uint8Array.from(n),B,R])}case 1:{let n=(0,$t.createECDH)("prime256v1");n.generateKeys();let a=n.computeSecret(i),{aesKey:o,iv:c}=io(a),{tag:m,encrypted:M}=kh(t,o,c);return Kt([Uint8Array.from(n.getPublicKey()),m,M])}case 2:{let n=(0,$t.createECDH)("secp256k1");n.generateKeys();let a=n.computeSecret(i),{aesKey:o,iv:c}=io(a),{tag:m,encrypted:M}=kh(t,o,c);return Kt([Uint8Array.from(n.getPublicKey()),m,M])}default:throw"Curve not supported"}}function Hh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'ciphertext' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'ciphertext' must be an hexadecimal string";if(typeof e=="string")if(Mt(e))e=Nt(e);else throw"'privateKey' must be an hexadecimal string";let r=e.slice(0,1),i=e.slice(2,e.length);switch(r[0]){case 0:{let n=t.slice(0,32),a=t.slice(32,32+16),o=t.slice(32+16,t.length),c=dv.default.convertSecretKey(i),m=Fs.sharedKey(c,n),{aesKey:M,iv:B}=io(m);return Fh(o,M,B,a)}case 1:{let n=t.slice(0,65),a=t.slice(65,65+16),o=t.slice(65+16,t.length),c=(0,$t.createECDH)("prime256v1");c.setPrivateKey(i);let m=c.computeSecret(n),{aesKey:M,iv:B}=io(m);return Fh(o,M,B,a)}case 2:{let n=t.slice(0,65),a=t.slice(65,65+16),o=t.slice(65+16,t.length),c=(0,$t.createECDH)("secp256k1");c.setPrivateKey(i);let m=c.computeSecret(n),{aesKey:M,iv:B}=io(m);return Fh(o,M,B,a)}default:throw"Curve not supported"}}function zh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'data' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string"&&(Mt(t)?t=Nt(t):t=new TextEncoder().encode(t)),typeof e=="string")if(Mt(e))e=Nt(e);else throw"'key' must be an hexadecimal string";let r=(0,$t.randomBytes)(12),{tag:i,encrypted:n}=kh(t,e,r);return Kt([new Uint8Array(r),i,n])}function Gh(t,e){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'cipherText' must be a string or Uint8Array";if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'key' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'cipherText' must be an hexadecimal string";if(typeof e=="string")if(Mt(e))e=Nt(e);else throw"'key' must be an be hexadecimal string";let r=t.slice(0,12),i=t.slice(12,12+16),n=t.slice(28,t.length);return Fh(n,e,r,i)}function lj(t,e){Mt(t)&&(t=Nt(t));let r=(0,$t.createHash)("sha512").update(t).digest(),i=r.subarray(0,32),n=r.subarray(32,64),a=ji(e),o=Kt([i,a]);return(0,$t.createHmac)("sha512",n).update(o).digest().subarray(0,32)}function io(t){if(typeof t!="string"&&!(t instanceof Uint8Array))throw"'sharedKey' must be a string or Uint8Array";if(typeof t=="string")if(Mt(t))t=Nt(t);else throw"'sharedKey' must be an hexadecimal string";let e=(0,$t.createHash)("sha256").update(t).digest(),r=(0,$t.createHmac)("sha256",e).update("0").digest().subarray(0,32),i=(0,$t.createHmac)("sha256",r).update("1").digest().subarray(0,32);return{iv:r,aesKey:i}}function kh(t,e,r){let i=(0,$t.createCipheriv)("aes-256-gcm",e,r),n=i.update(t);return n=Kt([n,i.final()]),{tag:new Uint8Array(i.getAuthTag()),encrypted:n}}function Fh(t,e,r,i){let n=(0,$t.createDecipheriv)("aes-256-gcm",e,r);n.setAuthTag(i);let a=[n.update(t)];return a.push(n.final()),Kt(a)}g();g();var $h=$r(tv(),1),so=$r(z_(),1),yj=0,df=class{constructor(e,r=1){e instanceof Uint8Array||(e=new TextEncoder().encode(e)),this.version=r,this.seed=e,this.services={}}addService(e,r,i="ed25519",n="sha256"){return this.services[e]={derivationPath:r,curve:i,hashAlgo:n},this}encode(){let e=[];for(let r in this.services){let{derivationPath:i,curve:n,hashAlgo:a}=this.services[r];e.push(Kt([Uint8Array.from([r.length]),new TextEncoder().encode(r),Uint8Array.from([i.length]),new TextEncoder().encode(i),Uint8Array.from([no(n)]),Uint8Array.from([Nh(a)])]))}return Kt([ji(this.version),Uint8Array.from([this.seed.length]),this.seed,Uint8Array.from([Object.keys(this.services).length]),Kt(e)])}deriveKeypair(e,r=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:i,curve:n}=this.services[e];return Av(this.seed,i,r,n)}deriveAddress(e,r=0){if(!this.services[e])throw"Service doesn't exist in the keychain";let{derivationPath:i,curve:n,hashAlgo:a}=this.services[e],{publicKey:o}=Av(this.seed,i,r,n),c=no(n),m=Qh(o,a);return Kt([Uint8Array.from([c]),Uint8Array.from(m)])}buildTransaction(e,r,i){let n=this.deriveKeypair(r,i),a=this.deriveAddress(r,i+1);e.setAddress(a);let o=e.previousSignaturePayload(),c=fo(o,n.privateKey);return e.setPreviousSignatureAndPreviousPublicKey(c,n.publicKey),e}static decode(e){var o=0,{bytes:r,pos:o}=Vh(e,o,4),{byte:i,pos:o}=oo(e,o,1),{bytes:n,pos:o}=Vh(e,o,i),{byte:a,pos:o}=oo(e,o,1);let c=new df(n,Tl(r));for(let G=0;GM.replace("'","")).at(1);if(m=="650"){let{publicKey:M}=Av(this.seed,o,0,c);i.push({id:`did:archethic:${r}#${a}`,type:"JsonWebKey2020",publicKeyJwk:xj(M,a),controller:`did:archethic:${r}`}),n.push(`did:archethic:${r}#${a}`)}else throw"Purpose '"+m+"' is not yet supported"}return{"@context":["https://www.w3.org/ns/did/v1"],id:`did:archethic:${r}`,authentication:n,verificationMethod:i}}};function oo(t,e,r){return{byte:t.slice(e,e+r)[0],pos:e+r}}function Vh(t,e,r){return{bytes:t.slice(e,e+r),pos:e+r}}function Av(t,e,r,i="ed25519"){let n=(0,$h.createHash)("sha256").update(mj(e,r)).digest(),a=(0,$h.createHmac)("sha512",t).update(n).digest().subarray(0,32);return Kh(a,i,yj)}function mj(t,e){return t.split("/").slice(0,-1).concat(`${e}'`).join("/")}function xj(t,e){let r=t[0],i=t.slice(2,t.length);switch(r){case 0:return{kty:"OKP",crv:"Ed25519",x:(0,so.default)(i),kid:e};case 1:return x=i.subarray(16),y=i.subarray(-16),{kty:"EC",crv:"P-256",x:(0,so.default)(x),y:(0,so.default)(y),kid:e};case 2:return x=i.subarray(16),y=i.subarray(-16),{kty:"EC",crv:"secp256k1",x:(0,so.default)(x),y:(0,so.default)(y),kid:e}}}var Ls=class{constructor(e){this.core=e}newKeychainTransaction(e,r){let i=new df(e);i.addService("uco","m/650'/0/0");let n=Lh(),a=r.map(o=>({publicKey:o,encryptedSecretKey:jh(n,o)}));return new this.core.transaction.builder(this.core).setType("keychain").setContent(JSON.stringify(i.toDID())).addOwnership(zh(i.encode(),n),a).build(e,0)}newAccessTransaction(e,r){let i=Lh(),{publicKey:n}=na(e,0),a=jh(i,n),o=[{publicKey:n,encryptedSecretKey:a}];return new this.core.transaction.builder(this.core).setType("keychain_access").addOwnership(zh(r,i),o).build(e,0)}async getKeychain(e){let{publicKey:r,privateKey:i}=na(e,0),n=ia(e,1),a=await this.core.transaction.getTransactionOwnerships(n);if(a.length==0)throw"Keychain doesn't exist";let{secret:o,authorizedPublicKeys:c}=a[0],{encryptedSecretKey:m}=c.find(fe=>fe.publicKey.toLocaleUpperCase()==jt(r).toLocaleUpperCase()),M=Hh(m,i),B=Gh(o,M),R=await this.core.transaction.getTransactionOwnerships(B),{secret:F,authorizedPublicKeys:N}=R[0],{encryptedSecretKey:G}=N.find(({publicKey:fe})=>fe.toUpperCase()==jt(r).toUpperCase()),Z=Hh(G,i),ie=Gh(F,Z);return df.decode(ie)}};g();var Ns=class{constructor(e){this.core=e}async getStorageNoncePublicKey(){return this.core.requestNode(e=>r5(e))}async addOriginKey(e,r){return this.core.requestNode(i=>a5(e,r,i))}async getOracleData(e=void 0){return this.core.requestNode(r=>o5(r,e))}async subscribeToOracleUpdates(e,r){return this.core.requestNode(i=>s5(i,e,r))}async getToken(e){return this.core.requestNode(r=>f5(e,r))}};g();g();var G_=1,Y_={keychain_access:254,keychain:255,transfer:253,hosting:252,token:251,code_proposal:7,code_approval:8},Qs=class{constructor(e){this.version=G_,this.type="transfer",this.data={content:new Uint8Array,code:new Uint8Array,ownerships:[],ledger:{uco:{transfers:[]},token:{transfers:[]}},recipients:[]}}setType(e){if(!Object.keys(Y_).includes(e))throw"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'";return this.type=e,this}setCode(e){if(typeof e!="string")throw"'code' must be a string";return this.data.code=new TextEncoder().encode(e),this}setContent(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'content' must be a string or Uint8Array";return typeof e=="string"&&(e=new TextEncoder().encode(e)),this.data.content=e,this}addOwnership(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'secret' must be a string or Uint8Array";if(typeof e=="string"&&(Mt(e)?e=Nt(e):e=new TextEncoder().encode(e)),typeof r!="object"&&!(r instanceof Array))throw"'authorizedKeys must be an array";let i=[];return r.reduce((n,{publicKey:a,encryptedSecretKey:o})=>{if(typeof a!="string"&&!(a instanceof Uint8Array))throw"Authorized public key must be a string or Uint8Array";if(typeof a=="string"){if(!Mt(a))throw"Authorized public key must be an hexadecimal";a=Nt(a)}if(typeof o!="string"&&!(o instanceof Uint8Array))throw"Encrypted secret key must be a string or Uint8Array";if(typeof o=="string"){if(!Mt(o))throw"Encrypted secret key must be an hexadecimal";o=Nt(o)}return n[a]||(i.push({publicKey:a,encryptedSecretKey:o}),n[a]=o),n},{}),this.data.ownerships.push({secret:e,authorizedKeys:i}),this}addUCOTransfer(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}if(isNaN(r)||r<=0)throw"UCO transfer amount must be a positive number";return this.data.ledger.uco.transfers.push({to:e,amount:r}),this}addTokenTransfer(e,r,i,n=0){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof i!="string"&&!(i instanceof Uint8Array))throw"'tokenAddress' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}if(isNaN(r)||r<=0)throw"Token transfer amount must be a positive number";if(typeof i=="string"){if(!Mt(i))throw"'tokenAddress' must be in hexadecimal form if it's string";i=Nt(i)}if(isNaN(n)||n<0)throw"'tokenId' must be a valid integer >= 0";return this.data.ledger.token.transfers.push({to:e,amount:r,token:i,tokenId:n}),this}addRecipient(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'to' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'to' must be in hexadecimal form if it's string";e=Nt(e)}return this.data.recipients.push(e),this}setPreviousSignatureAndPreviousPublicKey(e,r){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'prevSign' must be a string or Uint8Array";if(typeof r!="string"&&!(r instanceof Uint8Array))throw"'prevPubKey' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'previous Signature' must be in hexadecimal form if it's string";e=Nt(e)}if(typeof r=="string"){if(!Mt(r))throw"'previous Public Key' must be in hexadecimal form if it's string";r=Nt(r)}return this.previousPublicKey=r,this.previousSignature=e,this}setAddress(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'addr' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'addr' must be in hexadecimal form if it's string";e=Nt(e)}return this.address=e,this}build(e,r,i,n){let a=na(e,r,i),o=ia(e,r+1,i,n);this.address=o,this.previousPublicKey=a.publicKey;let c=this.previousSignaturePayload();return this.previousSignature=fo(c,a.privateKey),this}originSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'privateKey' must be a string or Uint8Array";if(typeof e=="string"&&!Mt(e))throw"'privateKey' must be in hexadecimal form if it's string";return this.originSignature=fo(this.originSignaturePayload(),e),this}setOriginSign(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw"'signature' must be a string or Uint8Array";if(typeof e=="string"){if(!Mt(e))throw"'Signature' must be in hexadecimal form if it's string";e=Nt(e)}return this.originSignature=e,this}toJSON(){return JSON.stringify({version:this.version,address:jt(this.address),type:this.type,data:{content:jt(this.data.content),code:new TextDecoder().decode(this.data.code),ownerships:this.data.ownerships.map(({secret:e,authorizedKeys:r})=>({secret:jt(e),authorizedKeys:r.map(({publicKey:i,encryptedSecretKey:n})=>({publicKey:jt(i),encryptedSecretKey:jt(n)}))})),ledger:{uco:{transfers:this.data.ledger.uco.transfers.map(e=>({to:jt(e.to),amount:e.amount}))},token:{transfers:this.data.ledger.token.transfers.map(e=>({to:jt(e.to),amount:e.amount,tokenAddress:jt(e.token),tokenId:e.tokenId}))}},recipients:this.data.recipients.map(jt)},previousPublicKey:jt(this.previousPublicKey),previousSignature:jt(this.previousSignature),originSignature:this.originSignature&&jt(this.originSignature)})}previousSignaturePayload(){let e=ji(this.data.code.length),r=this.data.content.length;this.data.content instanceof ArrayBuffer&&(r=this.data.content.byteLength);let i=ji(r),n=this.data.ownerships.map(({secret:R,authorizedKeys:F})=>{let N=Uint8Array.from(Hn(F.length)),G=[Uint8Array.from([N.length]),N];return F.sort((Z,ie)=>jt(Z.publicKey).localeCompare(jt(ie.publicKey))),F.forEach(({publicKey:Z,encryptedSecretKey:ie})=>{G.push(Z),G.push(ie)}),Kt([ji(R.byteLength),R,Kt(G)])}),a=this.data.ledger.uco.transfers.map(function(R){return Kt([R.to,Z0(R.amount)])}),o=this.data.ledger.token.transfers.map(function(R){let F=Uint8Array.from(Hn(R.tokenId));return Kt([R.token,R.to,Z0(R.amount),Uint8Array.from([F.length]),F])}),c=Uint8Array.from(Hn(this.data.ownerships.length)),m=Uint8Array.from(Hn(this.data.ledger.uco.transfers.length)),M=Uint8Array.from(Hn(this.data.ledger.token.transfers.length)),B=Uint8Array.from(Hn(this.data.recipients.length));return Kt([ji(G_),this.address,Uint8Array.from([Y_[this.type]]),e,this.data.code,i,this.data.content,Uint8Array.from([c.length]),c,Kt(n),Uint8Array.from([m.length]),m,Kt(a),Uint8Array.from([M.length]),M,Kt(o),Uint8Array.from([B.length]),B,Kt(this.data.recipients)])}originSignaturePayload(){let e=this.previousSignaturePayload();return Kt([e,this.previousPublicKey,Uint8Array.from([this.previousSignature.length]),this.previousSignature])}};g();var V_=$r(oc(),1);var Wt=$r(Rl(),1),_v="SENDER",Ks=class{constructor(){return this.onSent=[],this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.confirmationNotifier=void 0,this.errorNotifier=void 0,this.absintheSocket=void 0,this.timeout=void 0,this.nbConfirmationReceived=0,this}on(e,r){if(typeof e!="string")throw"'event' must be a string";if(typeof r!="function")throw"'func' must be a function";switch(e){case"sent":this.onSent.push(r);break;case"confirmation":this.onConfirmation.push(r);break;case"requiredConfirmation":this.onRequiredConfirmation.push(r);break;case"fullConfirmation":this.onFullConfirmation.push(r);break;case"error":this.onError.push(r);break;case"timeout":this.onTimeout.push(r);break;default:throw"Event "+e+" is not supported"}return this}async send(e,r,i=100,n=60){if(typeof e!="object")throw"'tx' must be an instance of TransactionBuilder";if(typeof r!="string")throw"'endpoint' must be a string";if(typeof i!="number"||i<0&&i>100)throw"'confirmationThreshold' must be an integer between 0 and 100";if(typeof n!="number"||n<=0)throw"'timeout' must be an integer greater than 0";let a=jt(e.address),{host:o,protocol:c}=new URL(r),m=c=="https:"?"wss":"ws";this.absintheSocket=(0,Wt.absintheCreate)(`${m}://${o}/socket`);try{this.confirmationNotifier=await wj(a,this.absintheSocket,(M,B)=>_j.call(this,i,M,B)),this.errorNotifier=await Aj(a,this.absintheSocket,Ij.bind(this))}catch(M){return this.onError.forEach(B=>B(_v,M.message,this)),this}return(0,V_.default)(r+"/api/transaction",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:e.toJSON()}).then(M=>Ej.call(this,n,M)).catch(M=>this.onError.forEach(B=>B(_v,M,this))),this}unsubscribe(e=void 0){if(e)switch(e){case"sent":this.onSent=[];break;case"confirmation":this.onConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"requiredConfirmation":this.onRequiredConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"fullConfirmation":this.onFullConfirmation=[],(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier);break;case"error":this.onError=[],(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier);break;case"timeout":this.onTimeout=[];break;default:throw"Event "+e+" is not supported"}else(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation=[],this.onFullConfirmation=[],this.onRequiredConfirmation=[],this.onError=[],this.onTimeout=[],this.onSent=[]}};async function wj(t,e,r){let i=` - subscription { - transactionConfirmed(address: "${t}") { - nbConfirmations, - maxConfirmations - } - } - `,n=(0,Wt.absintheSend)(e,i);return(0,Wt.absintheObserve)(e,n,a=>{if(a.data.transactionConfirmed){let{nbConfirmations:o,maxConfirmations:c}=a.data.transactionConfirmed;r(o,c)}})}async function Aj(t,e,r){let i=` - subscription { - transactionError(address: "${t}") { - context, - reason - } - } - `,n=(0,Wt.absintheSend)(e,i);return(0,Wt.absintheObserve)(e,n,a=>{if(a.data.transactionError){let{context:o,reason:c}=a.data.transactionError;r(o,c)}})}function _j(t,e,r){this.nbConfirmationReceived=e,e==1&&(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onConfirmation.forEach(i=>i(e,r,this)),r*(t/100)<=e&&this.onRequiredConfirmation.length>0&&(this.onRequiredConfirmation.forEach(i=>i(e,this)),this.onRequiredConfirmation=[],clearTimeout(this.timeout)),e==r&&(clearTimeout(this.timeout),(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),this.onFullConfirmation.forEach(i=>i(r,this)))}function Ij(t,e){clearTimeout(this.timeout),(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onError.forEach(r=>r(t,e,this))}function Ej(t,e){e.status>=200&&e.status<=299?(this.onSent.forEach(r=>r(this)),this.timeout=setTimeout(()=>{(0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),this.onTimeout.forEach(r=>r(this.nbConfirmationReceived,this))},t*1e3)):((0,Wt.absintheCancel)(this.absintheSocket,this.confirmationNotifier),(0,Wt.absintheCancel)(this.absintheSocket,this.errorNotifier),e.json().then(r=>this.onError.forEach(i=>i(_v,r.status,this))))}var js=class{constructor(e){this.core=e,this.builder=Iv}new(){return new this.builder(this.core)}getTransactionIndex(e){return this.core.requestNode(r=>t5(e,r))}getTransactionFee(e){return this.core.requestNode(r=>i5(e,r))}getTransactionOwnerships(e){return this.core.requestNode(r=>n5(e,r))}},Iv=class extends Qs{constructor(e){super(),this.core=e,this.sender=new Ks}send(e,r){this.core.requestNode(i=>this.sender.send(this,i,e,r))}on(e,r){return this.sender.on(e,r),this}unsubscribe(e){return this.sender.unsubscribe(e),this}};var Ev=class{constructor(e){this.endpoint=new URL(e),this.transaction=new js(this),this.account=new Ls(this),this.network=new Ns(this)}async connect(){let e=await e5(this.endpoint);return this.nearestEndpoints=e.map(({ip:r,port:i})=>`http://${r}:${i}`),this}async requestNode(e){let r=this.nearestEndpoints[0];try{return await e(r)}catch(i){if(console.error(i),this.nearestEndpoints.shift(),this.nearestEndpoints.length==0)throw"Cannot reach Archethic node";return this.requestNode(e)}}};export{Q_ as Crypto,Z4 as Utils,Ev as default}; -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ -/** - * [js-sha3]{@link https://github.com/emn178/js-sha3} - * - * @version 0.8.0 - * @author Chen, Yi-Cyuan [emn178@gmail.com] - * @copyright Chen, Yi-Cyuan 2015-2018 - * @license MIT - */ -//# sourceMappingURL=archethic.mjs.map diff --git a/dist/archethic.mjs.map b/dist/archethic.mjs.map deleted file mode 100644 index 1101cbd..0000000 --- a/dist/archethic.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../node_modules/base64-js/index.js", "../node_modules/ieee754/index.js", "../node_modules/buffer/index.js", "../esbuild.inject.js", "../node_modules/cross-fetch/dist/browser-ponyfill.js", "../node_modules/phoenix/assets/js/phoenix/index.js", "../node_modules/phoenix/assets/js/phoenix/utils.js", "../node_modules/phoenix/assets/js/phoenix/constants.js", "../node_modules/phoenix/assets/js/phoenix/push.js", "../node_modules/phoenix/assets/js/phoenix/timer.js", "../node_modules/phoenix/assets/js/phoenix/channel.js", "../node_modules/phoenix/assets/js/phoenix/ajax.js", "../node_modules/phoenix/assets/js/phoenix/longpoll.js", "../node_modules/phoenix/assets/js/phoenix/presence.js", "../node_modules/phoenix/assets/js/phoenix/serializer.js", "../node_modules/phoenix/assets/js/phoenix/socket.js", "../node_modules/isomorphic-ws/browser.js", "../node_modules/core-js/modules/_global.js", "../node_modules/core-js/modules/_core.js", "../node_modules/core-js/modules/_is-object.js", "../node_modules/core-js/modules/_an-object.js", "../node_modules/core-js/modules/_fails.js", "../node_modules/core-js/modules/_descriptors.js", "../node_modules/core-js/modules/_dom-create.js", "../node_modules/core-js/modules/_ie8-dom-define.js", "../node_modules/core-js/modules/_to-primitive.js", "../node_modules/core-js/modules/_object-dp.js", "../node_modules/core-js/modules/_property-desc.js", "../node_modules/core-js/modules/_hide.js", "../node_modules/core-js/modules/_has.js", "../node_modules/core-js/modules/_uid.js", "../node_modules/core-js/modules/_redefine.js", "../node_modules/core-js/modules/_a-function.js", "../node_modules/core-js/modules/_ctx.js", "../node_modules/core-js/modules/_export.js", "../node_modules/core-js/modules/_cof.js", "../node_modules/core-js/modules/_iobject.js", "../node_modules/core-js/modules/_defined.js", "../node_modules/core-js/modules/_to-object.js", "../node_modules/core-js/modules/_to-integer.js", "../node_modules/core-js/modules/_to-length.js", "../node_modules/core-js/modules/_is-array.js", "../node_modules/core-js/modules/_library.js", "../node_modules/core-js/modules/_shared.js", "../node_modules/core-js/modules/_wks.js", "../node_modules/core-js/modules/_array-species-constructor.js", "../node_modules/core-js/modules/_array-species-create.js", "../node_modules/core-js/modules/_array-methods.js", "../node_modules/core-js/modules/_add-to-unscopables.js", "../node_modules/core-js/modules/es6.array.find-index.js", "../node_modules/core-js/modules/es6.array.find.js", "../node_modules/core-js/modules/es6.function.name.js", "../node_modules/babel-runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-composite/node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_to-integer.js", "../node_modules/core-js/library/modules/_defined.js", "../node_modules/core-js/library/modules/_string-at.js", "../node_modules/core-js/library/modules/_library.js", "../node_modules/core-js/library/modules/_global.js", "../node_modules/core-js/library/modules/_core.js", "../node_modules/core-js/library/modules/_a-function.js", "../node_modules/core-js/library/modules/_ctx.js", "../node_modules/core-js/library/modules/_is-object.js", "../node_modules/core-js/library/modules/_an-object.js", "../node_modules/core-js/library/modules/_fails.js", "../node_modules/core-js/library/modules/_descriptors.js", "../node_modules/core-js/library/modules/_dom-create.js", "../node_modules/core-js/library/modules/_ie8-dom-define.js", "../node_modules/core-js/library/modules/_to-primitive.js", "../node_modules/core-js/library/modules/_object-dp.js", "../node_modules/core-js/library/modules/_property-desc.js", "../node_modules/core-js/library/modules/_hide.js", "../node_modules/core-js/library/modules/_has.js", "../node_modules/core-js/library/modules/_export.js", "../node_modules/core-js/library/modules/_redefine.js", "../node_modules/core-js/library/modules/_iterators.js", "../node_modules/core-js/library/modules/_cof.js", "../node_modules/core-js/library/modules/_iobject.js", "../node_modules/core-js/library/modules/_to-iobject.js", "../node_modules/core-js/library/modules/_to-length.js", "../node_modules/core-js/library/modules/_to-absolute-index.js", "../node_modules/core-js/library/modules/_array-includes.js", "../node_modules/core-js/library/modules/_shared.js", "../node_modules/core-js/library/modules/_uid.js", "../node_modules/core-js/library/modules/_shared-key.js", "../node_modules/core-js/library/modules/_object-keys-internal.js", "../node_modules/core-js/library/modules/_enum-bug-keys.js", "../node_modules/core-js/library/modules/_object-keys.js", "../node_modules/core-js/library/modules/_object-dps.js", "../node_modules/core-js/library/modules/_html.js", "../node_modules/core-js/library/modules/_object-create.js", "../node_modules/core-js/library/modules/_wks.js", "../node_modules/core-js/library/modules/_set-to-string-tag.js", "../node_modules/core-js/library/modules/_iter-create.js", "../node_modules/core-js/library/modules/_to-object.js", "../node_modules/core-js/library/modules/_object-gpo.js", "../node_modules/core-js/library/modules/_iter-define.js", "../node_modules/core-js/library/modules/es6.string.iterator.js", "../node_modules/core-js/library/modules/_add-to-unscopables.js", "../node_modules/core-js/library/modules/_iter-step.js", "../node_modules/core-js/library/modules/es6.array.iterator.js", "../node_modules/core-js/library/modules/web.dom.iterable.js", "../node_modules/core-js/library/modules/_wks-ext.js", "../node_modules/core-js/library/fn/symbol/iterator.js", "../node_modules/babel-runtime/core-js/symbol/iterator.js", "../node_modules/core-js/library/modules/_meta.js", "../node_modules/core-js/library/modules/_wks-define.js", "../node_modules/core-js/library/modules/_object-gops.js", "../node_modules/core-js/library/modules/_object-pie.js", "../node_modules/core-js/library/modules/_enum-keys.js", "../node_modules/core-js/library/modules/_is-array.js", "../node_modules/core-js/library/modules/_object-gopn.js", "../node_modules/core-js/library/modules/_object-gopn-ext.js", "../node_modules/core-js/library/modules/_object-gopd.js", "../node_modules/core-js/library/modules/es6.symbol.js", "../node_modules/core-js/library/modules/es6.object.to-string.js", "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../node_modules/core-js/library/modules/es7.symbol.observable.js", "../node_modules/core-js/library/fn/symbol/index.js", "../node_modules/babel-runtime/core-js/symbol.js", "../node_modules/babel-runtime/helpers/typeof.js", "../node_modules/core-js/library/modules/_iter-call.js", "../node_modules/core-js/library/modules/_is-array-iter.js", "../node_modules/core-js/library/modules/_create-property.js", "../node_modules/core-js/library/modules/_classof.js", "../node_modules/core-js/library/modules/core.get-iterator-method.js", "../node_modules/core-js/library/modules/_iter-detect.js", "../node_modules/core-js/library/modules/es6.array.from.js", "../node_modules/core-js/library/fn/array/from.js", "../node_modules/babel-runtime/core-js/array/from.js", "../node_modules/babel-runtime/helpers/toConsumableArray.js", "../node_modules/flow-static-land/lib/Fun.js", "../node_modules/core-js/library/modules/_object-assign.js", "../node_modules/core-js/library/modules/es6.object.assign.js", "../node_modules/core-js/library/fn/object/assign.js", "../node_modules/babel-runtime/core-js/object/assign.js", "../node_modules/babel-runtime/helpers/extends.js", "../node_modules/core-js/library/modules/_object-sap.js", "../node_modules/core-js/library/modules/es6.object.keys.js", "../node_modules/core-js/library/fn/object/keys.js", "../node_modules/babel-runtime/core-js/object/keys.js", "../node_modules/core-js/library/modules/_is-integer.js", "../node_modules/core-js/library/modules/es6.number.is-integer.js", "../node_modules/core-js/library/fn/number/is-integer.js", "../node_modules/babel-runtime/core-js/number/is-integer.js", "../node_modules/babel-runtime/helpers/objectWithoutProperties.js", "../node_modules/@jumpn/utils-array/compat/cjs/index.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/core-js/library/modules/es6.object.define-property.js", "../node_modules/core-js/library/fn/object/define-property.js", "../node_modules/babel-runtime/core-js/object/define-property.js", "../node_modules/babel-runtime/helpers/defineProperty.js", "../node_modules/core-js/library/modules/core.is-iterable.js", "../node_modules/core-js/library/fn/is-iterable.js", "../node_modules/babel-runtime/core-js/is-iterable.js", "../node_modules/core-js/library/modules/core.get-iterator.js", "../node_modules/core-js/library/fn/get-iterator.js", "../node_modules/babel-runtime/core-js/get-iterator.js", "../node_modules/babel-runtime/helpers/slicedToArray.js", "../node_modules/core-js/library/modules/_object-to-array.js", "../node_modules/core-js/library/modules/es7.object.entries.js", "../node_modules/core-js/library/fn/object/entries.js", "../node_modules/babel-runtime/core-js/object/entries.js", "../node_modules/@jumpn/utils-composite/src/get.js", "../node_modules/@jumpn/utils-composite/src/is.js", "../node_modules/@jumpn/utils-composite/src/getIn.js", "../node_modules/@jumpn/utils-composite/src/getKeys.js", "../node_modules/@jumpn/utils-composite/src/hasIn.js", "../node_modules/@jumpn/utils-composite/src/hasKey.js", "../node_modules/@jumpn/utils-composite/src/haveSameProps.js", "../node_modules/@jumpn/utils-composite/src/isEmpty.js", "../node_modules/@jumpn/utils-composite/src/map.js", "../node_modules/@jumpn/utils-composite/src/remove.js", "../node_modules/@jumpn/utils-composite/src/shallowCopy.js", "../node_modules/@jumpn/utils-composite/src/updateIn.js", "../node_modules/@jumpn/utils-composite/src/removeIn.js", "../node_modules/@jumpn/utils-composite/src/set.js", "../node_modules/@jumpn/utils-composite/src/setIn.js", "../node_modules/@jumpn/utils-composite/src/shallowEqual.js", "../node_modules/@jumpn/utils-composite/src/toUndefinedIfEmpty.js", "../node_modules/core-js/modules/_iter-step.js", "../node_modules/core-js/modules/_iterators.js", "../node_modules/core-js/modules/_to-iobject.js", "../node_modules/core-js/modules/_to-absolute-index.js", "../node_modules/core-js/modules/_array-includes.js", "../node_modules/core-js/modules/_shared-key.js", "../node_modules/core-js/modules/_object-keys-internal.js", "../node_modules/core-js/modules/_enum-bug-keys.js", "../node_modules/core-js/modules/_object-keys.js", "../node_modules/core-js/modules/_object-dps.js", "../node_modules/core-js/modules/_html.js", "../node_modules/core-js/modules/_object-create.js", "../node_modules/core-js/modules/_set-to-string-tag.js", "../node_modules/core-js/modules/_iter-create.js", "../node_modules/core-js/modules/_object-gpo.js", "../node_modules/core-js/modules/_iter-define.js", "../node_modules/core-js/modules/es6.array.iterator.js", "../node_modules/core-js/modules/web.dom.iterable.js", "../node_modules/core-js/modules/_strict-method.js", "../node_modules/core-js/modules/es6.array.for-each.js", "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/iterableToArray.js", "../node_modules/@babel/runtime/helpers/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/toConsumableArray.js", "../node_modules/core-js/modules/es6.array.map.js", "../node_modules/core-js/modules/_string-at.js", "../node_modules/core-js/modules/_advance-string-index.js", "../node_modules/core-js/modules/_classof.js", "../node_modules/core-js/modules/_regexp-exec-abstract.js", "../node_modules/core-js/modules/_flags.js", "../node_modules/core-js/modules/_regexp-exec.js", "../node_modules/core-js/modules/es6.regexp.exec.js", "../node_modules/core-js/modules/_fix-re-wks.js", "../node_modules/core-js/modules/es6.regexp.match.js", "../node_modules/core-js/modules/es6.array.some.js", "../node_modules/core-js/modules/_invoke.js", "../node_modules/core-js/modules/_bind.js", "../node_modules/core-js/modules/es6.function.bind.js", "../node_modules/@babel/runtime/helpers/newArrowCheck.js", "../node_modules/@jumpn/utils-graphql/src/errorsToString.js", "../node_modules/@jumpn/utils-graphql/src/getOperationType.js", "../node_modules/@jumpn/utils-graphql/src/hasSubscription.js", "../node_modules/@jumpn/utils-graphql/src/requestFromCompat.js", "../node_modules/@jumpn/utils-graphql/src/requestToCompat.js", "../node_modules/zen-observable/lib/Observable.js", "../node_modules/zen-observable/index.js", "../node_modules/core-js/modules/es7.array.includes.js", "../node_modules/core-js/modules/_is-regexp.js", "../node_modules/core-js/modules/_string-context.js", "../node_modules/core-js/modules/_fails-is-regexp.js", "../node_modules/core-js/modules/es6.string.includes.js", "../node_modules/@babel/runtime/helpers/defineProperty.js", "../node_modules/@babel/runtime/helpers/objectSpread.js", "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js", "../node_modules/core-js/modules/es6.array.index-of.js", "../node_modules/@absinthe/socket/src/notifier/cancel.js", "../node_modules/@absinthe/socket/src/notifier/observer/notifyAll.js", "../node_modules/@absinthe/socket/src/notifier/notifyCanceled.js", "../node_modules/@absinthe/socket/src/notifier/event/eventNames.js", "../node_modules/@absinthe/socket/src/notifier/event/eventCreators.js", "../node_modules/@absinthe/socket/src/notifier/flushCanceled.js", "../node_modules/@absinthe/socket/src/notifier/findIndex.js", "../node_modules/@absinthe/socket/src/notifier/refresh.js", "../node_modules/@absinthe/socket/src/notifier/remove.js", "../node_modules/@absinthe/socket/src/updateNotifiers.js", "../node_modules/@absinthe/socket/src/refreshNotifier.js", "../node_modules/@absinthe/socket/src/notifier/requestStatuses.js", "../node_modules/@absinthe/socket/src/notifier/notify.js", "../node_modules/@absinthe/socket/src/abortNotifier.js", "../node_modules/@absinthe/socket/src/notifier/find.js", "../node_modules/@absinthe/socket/src/notifier/notifyActive.js", "../node_modules/@absinthe/socket/src/notifier/notifyResultEvent.js", "../node_modules/@absinthe/socket/src/notifier/notifyStartEvent.js", "../node_modules/@absinthe/socket/src/notifier/reset.js", "../node_modules/@absinthe/socket/src/handlePush.js", "../node_modules/@absinthe/socket/src/pushAbsintheEvent.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventNames.js", "../node_modules/@absinthe/socket/src/absinthe-event/absintheEventCreators.js", "../node_modules/@absinthe/socket/src/pushRequestUsing.js", "../node_modules/@absinthe/socket/src/subscription.js", "../node_modules/@absinthe/socket/src/cancel.js", "../node_modules/@absinthe/socket/src/pushRequest.js", "../node_modules/@absinthe/socket/src/joinChannel.js", "../node_modules/@absinthe/socket/src/create.js", "../node_modules/@absinthe/socket/src/notifier/observe.js", "../node_modules/@absinthe/socket/src/observe.js", "../node_modules/@absinthe/socket/src/notifier/create.js", "../node_modules/@absinthe/socket/src/notifier/reactivate.js", "../node_modules/@absinthe/socket/src/send.js", "../node_modules/@absinthe/socket/src/toObservable.js", "../node_modules/@absinthe/socket/src/notifier/unobserve.js", "../node_modules/@absinthe/socket/src/unobserve.js", "../node_modules/@absinthe/socket/src/unobserveOrCancel.js", "../lib/api/absinthe.cjs", "../node_modules/safe-buffer/index.js", "../node_modules/randombytes/browser.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/events/events.js", "../node_modules/readable-stream/lib/internal/streams/stream-browser.js", "(disabled):util", "../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../node_modules/readable-stream/lib/internal/streams/destroy.js", "../node_modules/readable-stream/errors-browser.js", "../node_modules/readable-stream/lib/internal/streams/state.js", "../node_modules/util-deprecate/browser.js", "../node_modules/readable-stream/lib/_stream_writable.js", "../node_modules/readable-stream/lib/_stream_duplex.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../node_modules/readable-stream/lib/internal/streams/from-browser.js", "../node_modules/readable-stream/lib/_stream_readable.js", "../node_modules/readable-stream/lib/_stream_transform.js", "../node_modules/readable-stream/lib/_stream_passthrough.js", "../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../node_modules/readable-stream/readable-browser.js", "../node_modules/hash-base/index.js", "../node_modules/md5.js/index.js", "../node_modules/ripemd160/index.js", "../node_modules/sha.js/hash.js", "../node_modules/sha.js/sha.js", "../node_modules/sha.js/sha1.js", "../node_modules/sha.js/sha256.js", "../node_modules/sha.js/sha224.js", "../node_modules/sha.js/sha512.js", "../node_modules/sha.js/sha384.js", "../node_modules/sha.js/index.js", "../node_modules/stream-browserify/index.js", "../node_modules/cipher-base/index.js", "../node_modules/create-hash/browser.js", "../node_modules/create-hmac/legacy.js", "../node_modules/create-hash/md5.js", "../node_modules/create-hmac/browser.js", "../node_modules/browserify-sign/algos.js", "../node_modules/pbkdf2/lib/precondition.js", "../node_modules/pbkdf2/lib/default-encoding.js", "../node_modules/pbkdf2/lib/to-buffer.js", "../node_modules/pbkdf2/lib/sync-browser.js", "../node_modules/pbkdf2/lib/async.js", "../node_modules/pbkdf2/browser.js", "../node_modules/des.js/lib/des/utils.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/des.js/lib/des/cipher.js", "../node_modules/des.js/lib/des/des.js", "../node_modules/des.js/lib/des/cbc.js", "../node_modules/des.js/lib/des/ede.js", "../node_modules/des.js/lib/des.js", "../node_modules/browserify-des/index.js", "../node_modules/browserify-aes/modes/ecb.js", "../node_modules/buffer-xor/index.js", "../node_modules/browserify-aes/modes/cbc.js", "../node_modules/browserify-aes/modes/cfb.js", "../node_modules/browserify-aes/modes/cfb8.js", "../node_modules/browserify-aes/modes/cfb1.js", "../node_modules/browserify-aes/modes/ofb.js", "../node_modules/browserify-aes/incr32.js", "../node_modules/browserify-aes/modes/ctr.js", "../node_modules/browserify-aes/modes/index.js", "../node_modules/browserify-aes/aes.js", "../node_modules/browserify-aes/ghash.js", "../node_modules/browserify-aes/authCipher.js", "../node_modules/browserify-aes/streamCipher.js", "../node_modules/evp_bytestokey/index.js", "../node_modules/browserify-aes/encrypter.js", "../node_modules/browserify-aes/decrypter.js", "../node_modules/browserify-aes/browser.js", "../node_modules/browserify-des/modes.js", "../node_modules/browserify-cipher/browser.js", "../node_modules/buffer/index.js", "../node_modules/bn.js/lib/bn.js", "(disabled):crypto", "../node_modules/brorand/index.js", "../node_modules/miller-rabin/lib/mr.js", "../node_modules/diffie-hellman/lib/generatePrime.js", "../node_modules/diffie-hellman/lib/dh.js", "../node_modules/diffie-hellman/browser.js", "../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js", "../node_modules/browserify-rsa/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js", "../node_modules/safer-buffer/safer.js", "../node_modules/asn1.js/lib/asn1/base/reporter.js", "../node_modules/asn1.js/lib/asn1/base/buffer.js", "../node_modules/asn1.js/lib/asn1/base/node.js", "../node_modules/asn1.js/lib/asn1/constants/der.js", "../node_modules/asn1.js/lib/asn1/encoders/der.js", "../node_modules/asn1.js/lib/asn1/encoders/pem.js", "../node_modules/asn1.js/lib/asn1/encoders/index.js", "../node_modules/asn1.js/lib/asn1/decoders/der.js", "../node_modules/asn1.js/lib/asn1/decoders/pem.js", "../node_modules/asn1.js/lib/asn1/decoders/index.js", "../node_modules/asn1.js/lib/asn1/api.js", "../node_modules/asn1.js/lib/asn1/base/index.js", "../node_modules/asn1.js/lib/asn1/constants/index.js", "../node_modules/asn1.js/lib/asn1.js", "../node_modules/parse-asn1/certificate.js", "../node_modules/parse-asn1/asn1.js", "../node_modules/parse-asn1/fixProc.js", "../node_modules/parse-asn1/index.js", "../node_modules/browserify-sign/browser/sign.js", "../node_modules/browserify-sign/browser/verify.js", "../node_modules/browserify-sign/browser/index.js", "../node_modules/create-ecdh/browser.js", "../node_modules/public-encrypt/mgf.js", "../node_modules/public-encrypt/xor.js", "../node_modules/public-encrypt/withPublic.js", "../node_modules/public-encrypt/publicEncrypt.js", "../node_modules/public-encrypt/privateDecrypt.js", "../node_modules/public-encrypt/browser.js", "../node_modules/randomfill/browser.js", "../node_modules/crypto-browserify/index.js", "../node_modules/js-sha3/src/sha3.js", "../node_modules/nanoassert/index.js", "../node_modules/blake2b-wasm/blake2b.js", "../node_modules/blake2b-wasm/index.js", "../node_modules/blake2b/index.js", "../node_modules/curve25519-js/lib/index.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/ed2curve/ed2curve.js", "../node_modules/base64url/dist/pad-string.js", "../node_modules/base64url/dist/base64url.js", "../node_modules/base64url/index.js", "../index.js", "../lib/api.js", "../lib/utils.js", "../lib/crypto.js", "../lib/account.js", "../lib/keychain.js", "../lib/network.js", "../lib/transaction.js", "../lib/transaction_builder.js", "../lib/transaction_sender.js"], - "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "export let Buffer = require(\"buffer\").Buffer", "var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "/**\n * Phoenix Channels JavaScript client\n *\n * ## Socket Connection\n *\n * A single connection is established to the server and\n * channels are multiplexed over the connection.\n * Connect to the server using the `Socket` class:\n *\n * ```javascript\n * let socket = new Socket(\"/socket\", {params: {userToken: \"123\"}})\n * socket.connect()\n * ```\n *\n * The `Socket` constructor takes the mount point of the socket,\n * the authentication params, as well as options that can be found in\n * the Socket docs, such as configuring the `LongPoll` transport, and\n * heartbeat.\n *\n * ## Channels\n *\n * Channels are isolated, concurrent processes on the server that\n * subscribe to topics and broker events between the client and server.\n * To join a channel, you must provide the topic, and channel params for\n * authorization. Here's an example chat room example where `\"new_msg\"`\n * events are listened for, messages are pushed to the server, and\n * the channel is joined with ok/error/timeout matches:\n *\n * ```javascript\n * let channel = socket.channel(\"room:123\", {token: roomToken})\n * channel.on(\"new_msg\", msg => console.log(\"Got message\", msg) )\n * $input.onEnter( e => {\n * channel.push(\"new_msg\", {body: e.target.val}, 10000)\n * .receive(\"ok\", (msg) => console.log(\"created message\", msg) )\n * .receive(\"error\", (reasons) => console.log(\"create failed\", reasons) )\n * .receive(\"timeout\", () => console.log(\"Networking issue...\") )\n * })\n *\n * channel.join()\n * .receive(\"ok\", ({messages}) => console.log(\"catching up\", messages) )\n * .receive(\"error\", ({reason}) => console.log(\"failed join\", reason) )\n * .receive(\"timeout\", () => console.log(\"Networking issue. Still waiting...\"))\n *```\n *\n * ## Joining\n *\n * Creating a channel with `socket.channel(topic, params)`, binds the params to\n * `channel.params`, which are sent up on `channel.join()`.\n * Subsequent rejoins will send up the modified params for\n * updating authorization params, or passing up last_message_id information.\n * Successful joins receive an \"ok\" status, while unsuccessful joins\n * receive \"error\".\n *\n * With the default serializers and WebSocket transport, JSON text frames are\n * used for pushing a JSON object literal. If an `ArrayBuffer` instance is provided,\n * binary encoding will be used and the message will be sent with the binary\n * opcode.\n *\n * *Note*: binary messages are only supported on the WebSocket transport.\n *\n * ## Duplicate Join Subscriptions\n *\n * While the client may join any number of topics on any number of channels,\n * the client may only hold a single subscription for each unique topic at any\n * given time. When attempting to create a duplicate subscription,\n * the server will close the existing channel, log a warning, and\n * spawn a new channel for the topic. The client will have their\n * `channel.onClose` callbacks fired for the existing channel, and the new\n * channel join will have its receive hooks processed as normal.\n *\n * ## Pushing Messages\n *\n * From the previous example, we can see that pushing messages to the server\n * can be done with `channel.push(eventName, payload)` and we can optionally\n * receive responses from the push. Additionally, we can use\n * `receive(\"timeout\", callback)` to abort waiting for our other `receive` hooks\n * and take action after some period of waiting. The default timeout is 10000ms.\n *\n *\n * ## Socket Hooks\n *\n * Lifecycle events of the multiplexed connection can be hooked into via\n * `socket.onError()` and `socket.onClose()` events, ie:\n *\n * ```javascript\n * socket.onError( () => console.log(\"there was an error with the connection!\") )\n * socket.onClose( () => console.log(\"the connection dropped\") )\n * ```\n *\n *\n * ## Channel Hooks\n *\n * For each joined channel, you can bind to `onError` and `onClose` events\n * to monitor the channel lifecycle, ie:\n *\n * ```javascript\n * channel.onError( () => console.log(\"there was an error!\") )\n * channel.onClose( () => console.log(\"the channel has gone away gracefully\") )\n * ```\n *\n * ### onError hooks\n *\n * `onError` hooks are invoked if the socket connection drops, or the channel\n * crashes on the server. In either case, a channel rejoin is attempted\n * automatically in an exponential backoff manner.\n *\n * ### onClose hooks\n *\n * `onClose` hooks are invoked only in two cases. 1) the channel explicitly\n * closed on the server, or 2). The client explicitly closed, by calling\n * `channel.leave()`\n *\n *\n * ## Presence\n *\n * The `Presence` object provides features for syncing presence information\n * from the server with the client and handling presences joining and leaving.\n *\n * ### Syncing state from the server\n *\n * To sync presence state from the server, first instantiate an object and\n * pass your channel in to track lifecycle events:\n *\n * ```javascript\n * let channel = socket.channel(\"some:topic\")\n * let presence = new Presence(channel)\n * ```\n *\n * Next, use the `presence.onSync` callback to react to state changes\n * from the server. For example, to render the list of users every time\n * the list changes, you could write:\n *\n * ```javascript\n * presence.onSync(() => {\n * myRenderUsersFunction(presence.list())\n * })\n * ```\n *\n * ### Listing Presences\n *\n * `presence.list` is used to return a list of presence information\n * based on the local state of metadata. By default, all presence\n * metadata is returned, but a `listBy` function can be supplied to\n * allow the client to select which metadata to use for a given presence.\n * For example, you may have a user online from different devices with\n * a metadata status of \"online\", but they have set themselves to \"away\"\n * on another device. In this case, the app may choose to use the \"away\"\n * status for what appears on the UI. The example below defines a `listBy`\n * function which prioritizes the first metadata which was registered for\n * each user. This could be the first tab they opened, or the first device\n * they came online from:\n *\n * ```javascript\n * let listBy = (id, {metas: [first, ...rest]}) => {\n * first.count = rest.length + 1 // count of this user's presences\n * first.id = id\n * return first\n * }\n * let onlineUsers = presence.list(listBy)\n * ```\n *\n * ### Handling individual presence join and leave events\n *\n * The `presence.onJoin` and `presence.onLeave` callbacks can be used to\n * react to individual presences joining and leaving the app. For example:\n *\n * ```javascript\n * let presence = new Presence(channel)\n *\n * // detect if user has joined for the 1st time or from another tab/device\n * presence.onJoin((id, current, newPres) => {\n * if(!current){\n * console.log(\"user has entered for the first time\", newPres)\n * } else {\n * console.log(\"user additional presence\", newPres)\n * }\n * })\n *\n * // detect if user has left from all tabs/devices, or is still present\n * presence.onLeave((id, current, leftPres) => {\n * if(current.metas.length === 0){\n * console.log(\"user has left from all devices\", leftPres)\n * } else {\n * console.log(\"user left from a device\", leftPres)\n * }\n * })\n * // receive presence data from server\n * presence.onSync(() => {\n * displayUsers(presence.list())\n * })\n * ```\n * @module phoenix\n */\n\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Presence from \"./presence\"\nimport Serializer from \"./serializer\"\nimport Socket from \"./socket\"\n\nexport {\n Channel,\n LongPoll,\n Presence,\n Serializer,\n Socket\n}\n", "// wraps value in closure or returns closure\nexport let closure = (value) => {\n if(typeof value === \"function\"){\n return value\n } else {\n let closure = function (){ return value }\n return closure\n }\n}\n", "export const globalSelf = typeof self !== \"undefined\" ? self : null\nexport const phxWindow = typeof window !== \"undefined\" ? window : null\nexport const global = globalSelf || phxWindow || this\nexport const DEFAULT_VSN = \"2.0.0\"\nexport const SOCKET_STATES = {connecting: 0, open: 1, closing: 2, closed: 3}\nexport const DEFAULT_TIMEOUT = 10000\nexport const WS_CLOSE_NORMAL = 1000\nexport const CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\",\n}\nexport const CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n}\n\nexport const TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n}\nexport const XHR_STATES = {\n complete: 4\n}\n", "/**\n * Initializes the Push\n * @param {Channel} channel - The Channel\n * @param {string} event - The event, for example `\"phx_join\"`\n * @param {Object} payload - The payload, for example `{user_id: 123}`\n * @param {number} timeout - The push timeout in milliseconds\n */\nexport default class Push {\n constructor(channel, event, payload, timeout){\n this.channel = channel\n this.event = event\n this.payload = payload || function (){ return {} }\n this.receivedResp = null\n this.timeout = timeout\n this.timeoutTimer = null\n this.recHooks = []\n this.sent = false\n }\n\n /**\n *\n * @param {number} timeout\n */\n resend(timeout){\n this.timeout = timeout\n this.reset()\n this.send()\n }\n\n /**\n *\n */\n send(){\n if(this.hasReceived(\"timeout\")){ return }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n })\n }\n\n /**\n *\n * @param {*} status\n * @param {*} callback\n */\n receive(status, callback){\n if(this.hasReceived(status)){\n callback(this.receivedResp.response)\n }\n\n this.recHooks.push({status, callback})\n return this\n }\n\n /**\n * @private\n */\n reset(){\n this.cancelRefEvent()\n this.ref = null\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n }\n\n /**\n * @private\n */\n matchReceive({status, response, _ref}){\n this.recHooks.filter(h => h.status === status)\n .forEach(h => h.callback(response))\n }\n\n /**\n * @private\n */\n cancelRefEvent(){\n if(!this.refEvent){ return }\n this.channel.off(this.refEvent)\n }\n\n /**\n * @private\n */\n cancelTimeout(){\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n\n /**\n * @private\n */\n startTimeout(){\n if(this.timeoutTimer){ this.cancelTimeout() }\n this.ref = this.channel.socket.makeRef()\n this.refEvent = this.channel.replyEventName(this.ref)\n\n this.channel.on(this.refEvent, payload => {\n this.cancelRefEvent()\n this.cancelTimeout()\n this.receivedResp = payload\n this.matchReceive(payload)\n })\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {})\n }, this.timeout)\n }\n\n /**\n * @private\n */\n hasReceived(status){\n return this.receivedResp && this.receivedResp.status === status\n }\n\n /**\n * @private\n */\n trigger(status, response){\n this.channel.trigger(this.refEvent, {status, response})\n }\n}\n", "/**\n *\n * Creates a timer that accepts a `timerCalc` function to perform\n * calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n *\n * @param {Function} callback\n * @param {Function} timerCalc\n */\nexport default class Timer {\n constructor(callback, timerCalc){\n this.callback = callback\n this.timerCalc = timerCalc\n this.timer = null\n this.tries = 0\n }\n\n reset(){\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n /**\n * Cancels any previous scheduleTimeout and schedules callback\n */\n scheduleTimeout(){\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "import {closure} from \"./utils\"\nimport {\n CHANNEL_EVENTS,\n CHANNEL_STATES,\n} from \"./constants\"\n\nimport Push from \"./push\"\nimport Timer from \"./timer\"\n\n/**\n *\n * @param {string} topic\n * @param {(Object|function)} params\n * @param {Socket} socket\n */\nexport default class Channel {\n constructor(topic, params, socket){\n this.state = CHANNEL_STATES.closed\n this.topic = topic\n this.params = closure(params || {})\n this.socket = socket\n this.bindings = []\n this.bindingRef = 0\n this.timeout = this.socket.timeout\n this.joinedOnce = false\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout)\n this.pushBuffer = []\n this.stateChangeRefs = []\n\n this.rejoinTimer = new Timer(() => {\n if(this.socket.isConnected()){ this.rejoin() }\n }, this.socket.rejoinAfterMs)\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()))\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset()\n if(this.isErrored()){ this.rejoin() }\n })\n )\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach(pushEvent => pushEvent.send())\n this.pushBuffer = []\n })\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.onClose(() => {\n this.rejoinTimer.reset()\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket.remove(this)\n })\n this.onError(reason => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `error ${this.topic}`, reason)\n if(this.isJoining()){ this.joinPush.reset() }\n this.state = CHANNEL_STATES.errored\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.joinPush.receive(\"timeout\", () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout)\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout)\n leavePush.send()\n this.state = CHANNEL_STATES.errored\n this.joinPush.reset()\n if(this.socket.isConnected()){ this.rejoinTimer.scheduleTimeout() }\n })\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload)\n })\n }\n\n /**\n * Join the channel\n * @param {integer} timeout\n * @returns {Push}\n */\n join(timeout = this.timeout){\n if(this.joinedOnce){\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\")\n } else {\n this.timeout = timeout\n this.joinedOnce = true\n this.rejoin()\n return this.joinPush\n }\n }\n\n /**\n * Hook into channel close\n * @param {Function} callback\n */\n onClose(callback){\n this.on(CHANNEL_EVENTS.close, callback)\n }\n\n /**\n * Hook into channel errors\n * @param {Function} callback\n */\n onError(callback){\n return this.on(CHANNEL_EVENTS.error, reason => callback(reason))\n }\n\n /**\n * Subscribes on channel events\n *\n * Subscription returns a ref counter, which can be used later to\n * unsubscribe the exact event listener\n *\n * @example\n * const ref1 = channel.on(\"event\", do_stuff)\n * const ref2 = channel.on(\"event\", do_other_stuff)\n * channel.off(\"event\", ref1)\n * // Since unsubscription, do_stuff won't fire,\n * // while do_other_stuff will keep firing on the \"event\"\n *\n * @param {string} event\n * @param {Function} callback\n * @returns {integer} ref\n */\n on(event, callback){\n let ref = this.bindingRef++\n this.bindings.push({event, ref, callback})\n return ref\n }\n\n /**\n * Unsubscribes off of channel events\n *\n * Use the ref returned from a channel.on() to unsubscribe one\n * handler, or pass nothing for the ref to unsubscribe all\n * handlers for the given event.\n *\n * @example\n * // Unsubscribe the do_stuff handler\n * const ref1 = channel.on(\"event\", do_stuff)\n * channel.off(\"event\", ref1)\n *\n * // Unsubscribe all handlers from event\n * channel.off(\"event\")\n *\n * @param {string} event\n * @param {integer} ref\n */\n off(event, ref){\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref))\n })\n }\n\n /**\n * @private\n */\n canPush(){ return this.socket.isConnected() && this.isJoined() }\n\n /**\n * Sends a message `event` to phoenix with the payload `payload`.\n * Phoenix receives this in the `handle_in(event, payload, socket)`\n * function. if phoenix replies or it times out (default 10000ms),\n * then optionally the reply can be received.\n *\n * @example\n * channel.push(\"event\")\n * .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n * .receive(\"error\", err => console.log(\"phoenix errored\", err))\n * .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n * @param {string} event\n * @param {Object} payload\n * @param {number} [timeout]\n * @returns {Push}\n */\n push(event, payload, timeout = this.timeout){\n payload = payload || {}\n if(!this.joinedOnce){\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`)\n }\n let pushEvent = new Push(this, event, function (){ return payload }, timeout)\n if(this.canPush()){\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /** Leaves the channel\n *\n * Unsubscribes from server events, and\n * instructs channel to terminate on server\n *\n * Triggers onClose() hooks\n *\n * To receive leave acknowledgements, use the `receive`\n * hook to bind to the server ack, ie:\n *\n * @example\n * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n *\n * @param {integer} timeout\n * @returns {Push}\n */\n leave(timeout = this.timeout){\n this.rejoinTimer.reset()\n this.joinPush.cancelTimeout()\n\n this.state = CHANNEL_STATES.leaving\n let onClose = () => {\n if(this.socket.hasLogger()) this.socket.log(\"channel\", `leave ${this.topic}`)\n this.trigger(CHANNEL_EVENTS.close, \"leave\")\n }\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout)\n leavePush.receive(\"ok\", () => onClose())\n .receive(\"timeout\", () => onClose())\n leavePush.send()\n if(!this.canPush()){ leavePush.trigger(\"ok\", {}) }\n\n return leavePush\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling\n * before dispatching to the channel callbacks.\n *\n * Must return the payload, modified or unmodified\n * @param {string} event\n * @param {Object} payload\n * @param {integer} ref\n * @returns {Object}\n */\n onMessage(_event, payload, _ref){ return payload }\n\n /**\n * @private\n */\n isMember(topic, event, payload, joinRef){\n if(this.topic !== topic){ return false }\n\n if(joinRef && joinRef !== this.joinRef()){\n if(this.socket.hasLogger()) this.socket.log(\"channel\", \"dropping outdated message\", {topic, event, payload, joinRef})\n return false\n } else {\n return true\n }\n }\n\n /**\n * @private\n */\n joinRef(){ return this.joinPush.ref }\n\n /**\n * @private\n */\n rejoin(timeout = this.timeout){\n if(this.isLeaving()){ return }\n this.socket.leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /**\n * @private\n */\n trigger(event, payload, ref, joinRef){\n let handledPayload = this.onMessage(event, payload, ref, joinRef)\n if(payload && !handledPayload){ throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\") }\n\n let eventBindings = this.bindings.filter(bind => bind.event === event)\n\n for(let i = 0; i < eventBindings.length; i++){\n let bind = eventBindings[i]\n bind.callback(handledPayload, ref, joinRef || this.joinRef())\n }\n }\n\n /**\n * @private\n */\n replyEventName(ref){ return `chan_reply_${ref}` }\n\n /**\n * @private\n */\n isClosed(){ return this.state === CHANNEL_STATES.closed }\n\n /**\n * @private\n */\n isErrored(){ return this.state === CHANNEL_STATES.errored }\n\n /**\n * @private\n */\n isJoined(){ return this.state === CHANNEL_STATES.joined }\n\n /**\n * @private\n */\n isJoining(){ return this.state === CHANNEL_STATES.joining }\n\n /**\n * @private\n */\n isLeaving(){ return this.state === CHANNEL_STATES.leaving }\n}\n", "import {\n global,\n XHR_STATES\n} from \"./constants\"\n\nexport default class Ajax {\n\n static request(method, endPoint, accept, body, timeout, ontimeout, callback){\n if(global.XDomainRequest){\n let req = new global.XDomainRequest() // IE8, IE9\n this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback)\n } else {\n let req = new global.XMLHttpRequest() // IE7+, Firefox, Chrome, Opera, Safari\n this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback)\n }\n }\n\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback){\n req.timeout = timeout\n req.open(method, endPoint)\n req.onload = () => {\n let response = this.parseJSON(req.responseText)\n callback && callback(response)\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n // Work around bug in IE9 that requires an attached onprogress handler\n req.onprogress = () => { }\n\n req.send(body)\n }\n\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback){\n req.open(method, endPoint, true)\n req.timeout = timeout\n req.setRequestHeader(\"Content-Type\", accept)\n req.onerror = () => { callback && callback(null) }\n req.onreadystatechange = () => {\n if(req.readyState === XHR_STATES.complete && callback){\n let response = this.parseJSON(req.responseText)\n callback(response)\n }\n }\n if(ontimeout){ req.ontimeout = ontimeout }\n\n req.send(body)\n }\n\n static parseJSON(resp){\n if(!resp || resp === \"\"){ return null }\n\n try {\n return JSON.parse(resp)\n } catch (e){\n console && console.log(\"failed to parse JSON response\", resp)\n return null\n }\n }\n\n static serialize(obj, parentKey){\n let queryStr = []\n for(var key in obj){\n if(!Object.prototype.hasOwnProperty.call(obj, key)){ continue }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key\n let paramVal = obj[key]\n if(typeof paramVal === \"object\"){\n queryStr.push(this.serialize(paramVal, paramKey))\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal))\n }\n }\n return queryStr.join(\"&\")\n }\n\n static appendParams(url, params){\n if(Object.keys(params).length === 0){ return url }\n\n let prefix = url.match(/\\?/) ? \"&\" : \"?\"\n return `${url}${prefix}${this.serialize(params)}`\n }\n}\n", "import {\n SOCKET_STATES,\n TRANSPORTS\n} from \"./constants\"\n\nimport Ajax from \"./ajax\"\n\nexport default class LongPoll {\n\n constructor(endPoint){\n this.endPoint = null\n this.token = null\n this.skipHeartbeat = true\n this.onopen = function (){ } // noop\n this.onerror = function (){ } // noop\n this.onmessage = function (){ } // noop\n this.onclose = function (){ } // noop\n this.pollEndpoint = this.normalizeEndpoint(endPoint)\n this.readyState = SOCKET_STATES.connecting\n\n this.poll()\n }\n\n normalizeEndpoint(endPoint){\n return (endPoint\n .replace(\"ws://\", \"http://\")\n .replace(\"wss://\", \"https://\")\n .replace(new RegExp(\"(.*)\\/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll))\n }\n\n endpointURL(){\n return Ajax.appendParams(this.pollEndpoint, {token: this.token})\n }\n\n closeAndRetry(){\n this.close()\n this.readyState = SOCKET_STATES.connecting\n }\n\n ontimeout(){\n this.onerror(\"timeout\")\n this.closeAndRetry()\n }\n\n poll(){\n if(!(this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting)){ return }\n\n Ajax.request(\"GET\", this.endpointURL(), \"application/json\", null, this.timeout, this.ontimeout.bind(this), (resp) => {\n if(resp){\n var {status, token, messages} = resp\n this.token = token\n } else {\n status = 0\n }\n\n switch(status){\n case 200:\n messages.forEach(msg => {\n // Tasks are what things like event handlers, setTimeout callbacks,\n // promise resolves and more are run within.\n // In modern browsers, there are two different kinds of tasks,\n // microtasks and macrotasks.\n // Microtasks are mainly used for Promises, while macrotasks are\n // used for everything else.\n // Microtasks always have priority over macrotasks. If the JS engine\n // is looking for a task to run, it will always try to empty the\n // microtask queue before attempting to run anything from the\n // macrotask queue.\n //\n // For the WebSocket transport, messages always arrive in their own\n // event. This means that if any promises are resolved from within,\n // their callbacks will always finish execution by the time the\n // next message event handler is run.\n //\n // In order to emulate this behaviour, we need to make sure each\n // onmessage handler is run within it's own macrotask.\n setTimeout(() => {\n this.onmessage({data: msg})\n }, 0)\n })\n this.poll()\n break\n case 204:\n this.poll()\n break\n case 410:\n this.readyState = SOCKET_STATES.open\n this.onopen()\n this.poll()\n break\n case 403:\n this.onerror()\n this.close()\n break\n case 0:\n case 500:\n this.onerror()\n this.closeAndRetry()\n break\n default: throw new Error(`unhandled poll status ${status}`)\n }\n })\n }\n\n send(body){\n Ajax.request(\"POST\", this.endpointURL(), \"application/json\", body, this.timeout, this.onerror.bind(this, \"timeout\"), (resp) => {\n if(!resp || resp.status !== 200){\n this.onerror(resp && resp.status)\n this.closeAndRetry()\n }\n })\n }\n\n close(_code, _reason){\n this.readyState = SOCKET_STATES.closed\n this.onclose()\n }\n}\n", "/**\n * Initializes the Presence\n * @param {Channel} channel - The Channel\n * @param {Object} opts - The options,\n * for example `{events: {state: \"state\", diff: \"diff\"}}`\n */\nexport default class Presence {\n\n constructor(channel, opts = {}){\n let events = opts.events || {state: \"presence_state\", diff: \"presence_diff\"}\n this.state = {}\n this.pendingDiffs = []\n this.channel = channel\n this.joinRef = null\n this.caller = {\n onJoin: function (){ },\n onLeave: function (){ },\n onSync: function (){ }\n }\n\n this.channel.on(events.state, newState => {\n let {onJoin, onLeave, onSync} = this.caller\n\n this.joinRef = this.channel.joinRef()\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave)\n\n this.pendingDiffs.forEach(diff => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n })\n this.pendingDiffs = []\n onSync()\n })\n\n this.channel.on(events.diff, diff => {\n let {onJoin, onLeave, onSync} = this.caller\n\n if(this.inPendingSyncState()){\n this.pendingDiffs.push(diff)\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave)\n onSync()\n }\n })\n }\n\n onJoin(callback){ this.caller.onJoin = callback }\n\n onLeave(callback){ this.caller.onLeave = callback }\n\n onSync(callback){ this.caller.onSync = callback }\n\n list(by){ return Presence.list(this.state, by) }\n\n inPendingSyncState(){\n return !this.joinRef || (this.joinRef !== this.channel.joinRef())\n }\n\n // lower-level public static API\n\n /**\n * Used to sync the list of presences on the server\n * with the client's state. An optional `onJoin` and `onLeave` callback can\n * be provided to react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @returns {Presence}\n */\n static syncState(currentState, newState, onJoin, onLeave){\n let state = this.clone(currentState)\n let joins = {}\n let leaves = {}\n\n this.map(state, (key, presence) => {\n if(!newState[key]){\n leaves[key] = presence\n }\n })\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key]\n if(currentPresence){\n let newRefs = newPresence.metas.map(m => m.phx_ref)\n let curRefs = currentPresence.metas.map(m => m.phx_ref)\n let joinedMetas = newPresence.metas.filter(m => curRefs.indexOf(m.phx_ref) < 0)\n let leftMetas = currentPresence.metas.filter(m => newRefs.indexOf(m.phx_ref) < 0)\n if(joinedMetas.length > 0){\n joins[key] = newPresence\n joins[key].metas = joinedMetas\n }\n if(leftMetas.length > 0){\n leaves[key] = this.clone(currentPresence)\n leaves[key].metas = leftMetas\n }\n } else {\n joins[key] = newPresence\n }\n })\n return this.syncDiff(state, {joins: joins, leaves: leaves}, onJoin, onLeave)\n }\n\n /**\n *\n * Used to sync a diff of presence join and leave\n * events from the server, as they happen. Like `syncState`, `syncDiff`\n * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n * joining or leaving from a device.\n *\n * @returns {Presence}\n */\n static syncDiff(state, diff, onJoin, onLeave){\n let {joins, leaves} = this.clone(diff)\n if(!onJoin){ onJoin = function (){ } }\n if(!onLeave){ onLeave = function (){ } }\n\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key]\n state[key] = this.clone(newPresence)\n if(currentPresence){\n let joinedRefs = state[key].metas.map(m => m.phx_ref)\n let curMetas = currentPresence.metas.filter(m => joinedRefs.indexOf(m.phx_ref) < 0)\n state[key].metas.unshift(...curMetas)\n }\n onJoin(key, currentPresence, newPresence)\n })\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key]\n if(!currentPresence){ return }\n let refsToRemove = leftPresence.metas.map(m => m.phx_ref)\n currentPresence.metas = currentPresence.metas.filter(p => {\n return refsToRemove.indexOf(p.phx_ref) < 0\n })\n onLeave(key, currentPresence, leftPresence)\n if(currentPresence.metas.length === 0){\n delete state[key]\n }\n })\n return state\n }\n\n /**\n * Returns the array of presences, with selected metadata.\n *\n * @param {Object} presences\n * @param {Function} chooser\n *\n * @returns {Presence}\n */\n static list(presences, chooser){\n if(!chooser){ chooser = function (key, pres){ return pres } }\n\n return this.map(presences, (key, presence) => {\n return chooser(key, presence)\n })\n }\n\n // private\n\n static map(obj, func){\n return Object.getOwnPropertyNames(obj).map(key => func(key, obj[key]))\n }\n\n static clone(obj){ return JSON.parse(JSON.stringify(obj)) }\n}\n", "/* The default serializer for encoding and decoding messages */\nimport {\n CHANNEL_EVENTS\n} from \"./constants\"\n\nexport default {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: {push: 0, reply: 1, broadcast: 2},\n\n encode(msg, callback){\n if(msg.payload.constructor === ArrayBuffer){\n return callback(this.binaryEncode(msg))\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload]\n return callback(JSON.stringify(payload))\n }\n },\n\n decode(rawPayload, callback){\n if(rawPayload.constructor === ArrayBuffer){\n return callback(this.binaryDecode(rawPayload))\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload)\n return callback({join_ref, ref, topic, event, payload})\n }\n },\n\n // private\n\n binaryEncode(message){\n let {join_ref, ref, event, topic, payload} = message\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength)\n let view = new DataView(header)\n let offset = 0\n\n view.setUint8(offset++, this.KINDS.push) // kind\n view.setUint8(offset++, join_ref.length)\n view.setUint8(offset++, ref.length)\n view.setUint8(offset++, topic.length)\n view.setUint8(offset++, event.length)\n Array.from(join_ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(ref, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(topic, char => view.setUint8(offset++, char.charCodeAt(0)))\n Array.from(event, char => view.setUint8(offset++, char.charCodeAt(0)))\n\n var combined = new Uint8Array(header.byteLength + payload.byteLength)\n combined.set(new Uint8Array(header), 0)\n combined.set(new Uint8Array(payload), header.byteLength)\n\n return combined.buffer\n },\n\n binaryDecode(buffer){\n let view = new DataView(buffer)\n let kind = view.getUint8(0)\n let decoder = new TextDecoder()\n switch(kind){\n case this.KINDS.push: return this.decodePush(buffer, view, decoder)\n case this.KINDS.reply: return this.decodeReply(buffer, view, decoder)\n case this.KINDS.broadcast: return this.decodeBroadcast(buffer, view, decoder)\n }\n },\n\n decodePush(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let topicSize = view.getUint8(2)\n let eventSize = view.getUint8(3)\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1 // pushes have no ref\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n return {join_ref: joinRef, ref: null, topic: topic, event: event, payload: data}\n },\n\n decodeReply(buffer, view, decoder){\n let joinRefSize = view.getUint8(1)\n let refSize = view.getUint8(2)\n let topicSize = view.getUint8(3)\n let eventSize = view.getUint8(4)\n let offset = this.HEADER_LENGTH + this.META_LENGTH\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize))\n offset = offset + joinRefSize\n let ref = decoder.decode(buffer.slice(offset, offset + refSize))\n offset = offset + refSize\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n let payload = {status: event, response: data}\n return {join_ref: joinRef, ref: ref, topic: topic, event: CHANNEL_EVENTS.reply, payload: payload}\n },\n\n decodeBroadcast(buffer, view, decoder){\n let topicSize = view.getUint8(1)\n let eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n let event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n let data = buffer.slice(offset, buffer.byteLength)\n\n return {join_ref: null, ref: null, topic: topic, event: event, payload: data}\n }\n}\n", "import {\n global,\n phxWindow,\n CHANNEL_EVENTS,\n DEFAULT_TIMEOUT,\n DEFAULT_VSN,\n SOCKET_STATES,\n TRANSPORTS,\n WS_CLOSE_NORMAL\n} from \"./constants\"\n\nimport {\n closure\n} from \"./utils\"\n\nimport Ajax from \"./ajax\"\nimport Channel from \"./channel\"\nimport LongPoll from \"./longpoll\"\nimport Serializer from \"./serializer\"\nimport Timer from \"./timer\"\n\n/** Initializes the Socket *\n *\n * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)\n *\n * @param {string} endPoint - The string WebSocket endpoint, ie, `\"ws://example.com/socket\"`,\n * `\"wss://example.com\"`\n * `\"/socket\"` (inherited host & protocol)\n * @param {Object} [opts] - Optional configuration\n * @param {Function} [opts.transport] - The Websocket Transport, for example WebSocket or Phoenix.LongPoll.\n *\n * Defaults to WebSocket with automatic LongPoll fallback.\n * @param {Function} [opts.encode] - The function to encode outgoing messages.\n *\n * Defaults to JSON encoder.\n *\n * @param {Function} [opts.decode] - The function to decode incoming messages.\n *\n * Defaults to JSON:\n *\n * ```javascript\n * (payload, callback) => callback(JSON.parse(payload))\n * ```\n *\n * @param {number} [opts.timeout] - The default timeout in milliseconds to trigger push timeouts.\n *\n * Defaults `DEFAULT_TIMEOUT`\n * @param {number} [opts.heartbeatIntervalMs] - The millisec interval to send a heartbeat message\n * @param {number} [opts.reconnectAfterMs] - The optional function that returns the millsec\n * socket reconnect interval.\n *\n * Defaults to stepped backoff of:\n *\n * ```javascript\n * function(tries){\n * return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n * }\n * ````\n *\n * @param {number} [opts.rejoinAfterMs] - The optional function that returns the millsec\n * rejoin interval for individual channels.\n *\n * ```javascript\n * function(tries){\n * return [1000, 2000, 5000][tries - 1] || 10000\n * }\n * ````\n *\n * @param {Function} [opts.logger] - The optional function for specialized logging, ie:\n *\n * ```javascript\n * function(kind, msg, data) {\n * console.log(`${kind}: ${msg}`, data)\n * }\n * ```\n *\n * @param {number} [opts.longpollerTimeout] - The maximum timeout of a long poll AJAX request.\n *\n * Defaults to 20s (double the server long poll timer).\n *\n * @param {(Object|function)} [opts.params] - The optional params to pass when connecting\n * @param {string} [opts.binaryType] - The binary type to use for binary WebSocket frames.\n *\n * Defaults to \"arraybuffer\"\n *\n * @param {vsn} [opts.vsn] - The serializer's protocol version to send on connect.\n *\n * Defaults to DEFAULT_VSN.\n*/\nexport default class Socket {\n constructor(endPoint, opts = {}){\n this.stateChangeCallbacks = {open: [], close: [], error: [], message: []}\n this.channels = []\n this.sendBuffer = []\n this.ref = 0\n this.timeout = opts.timeout || DEFAULT_TIMEOUT\n this.transport = opts.transport || global.WebSocket || LongPoll\n this.establishedConnections = 0\n this.defaultEncoder = Serializer.encode.bind(Serializer)\n this.defaultDecoder = Serializer.decode.bind(Serializer)\n this.closeWasClean = false\n this.binaryType = opts.binaryType || \"arraybuffer\"\n this.connectClock = 1\n if(this.transport !== LongPoll){\n this.encode = opts.encode || this.defaultEncoder\n this.decode = opts.decode || this.defaultDecoder\n } else {\n this.encode = this.defaultEncoder\n this.decode = this.defaultDecoder\n }\n let awaitingConnectionOnPageShow = null\n if(phxWindow && phxWindow.addEventListener){\n phxWindow.addEventListener(\"pagehide\", _e => {\n if(this.conn){\n this.disconnect()\n awaitingConnectionOnPageShow = this.connectClock\n }\n })\n phxWindow.addEventListener(\"pageshow\", _e => {\n if(awaitingConnectionOnPageShow === this.connectClock){\n awaitingConnectionOnPageShow = null\n this.connect()\n }\n })\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 30000\n this.rejoinAfterMs = (tries) => {\n if(opts.rejoinAfterMs){\n return opts.rejoinAfterMs(tries)\n } else {\n return [1000, 2000, 5000][tries - 1] || 10000\n }\n }\n this.reconnectAfterMs = (tries) => {\n if(opts.reconnectAfterMs){\n return opts.reconnectAfterMs(tries)\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1000, 2000][tries - 1] || 5000\n }\n }\n this.logger = opts.logger || null\n this.longpollerTimeout = opts.longpollerTimeout || 20000\n this.params = closure(opts.params || {})\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.vsn = opts.vsn || DEFAULT_VSN\n this.heartbeatTimer = null\n this.pendingHeartbeatRef = null\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect())\n }, this.reconnectAfterMs)\n }\n\n /**\n * Disconnects and replaces the active transport\n *\n * @param {Function} newTransport - The new transport class to instantiate\n *\n */\n replaceTransport(newTransport){\n this.disconnect()\n this.transport = newTransport\n }\n\n /**\n * Returns the socket protocol\n *\n * @returns {string}\n */\n protocol(){ return location.protocol.match(/^https/) ? \"wss\" : \"ws\" }\n\n /**\n * The fully qualifed socket url\n *\n * @returns {string}\n */\n endPointURL(){\n let uri = Ajax.appendParams(\n Ajax.appendParams(this.endPoint, this.params()), {vsn: this.vsn})\n if(uri.charAt(0) !== \"/\"){ return uri }\n if(uri.charAt(1) === \"/\"){ return `${this.protocol()}:${uri}` }\n\n return `${this.protocol()}://${location.host}${uri}`\n }\n\n /**\n * Disconnects the socket\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n *\n * @param {Function} callback - Optional callback which is called after socket is disconnected.\n * @param {integer} code - A status code for disconnection (Optional).\n * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n */\n disconnect(callback, code, reason){\n this.connectClock++\n this.closeWasClean = true\n this.reconnectTimer.reset()\n this.teardown(callback, code, reason)\n }\n\n /**\n *\n * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n *\n * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n */\n connect(params){\n this.connectClock++\n if(params){\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\")\n this.params = closure(params)\n }\n if(this.conn){ return }\n this.closeWasClean = false\n this.conn = new this.transport(this.endPointURL())\n this.conn.binaryType = this.binaryType\n this.conn.timeout = this.longpollerTimeout\n this.conn.onopen = () => this.onConnOpen()\n this.conn.onerror = error => this.onConnError(error)\n this.conn.onmessage = event => this.onConnMessage(event)\n this.conn.onclose = event => this.onConnClose(event)\n }\n\n /**\n * Logs the message. Override `this.logger` for specialized logging. noops by default\n * @param {string} kind\n * @param {string} msg\n * @param {Object} data\n */\n log(kind, msg, data){ this.logger(kind, msg, data) }\n\n /**\n * Returns true if a logger has been set on this socket.\n */\n hasLogger(){ return this.logger !== null }\n\n /**\n * Registers callbacks for connection open events\n *\n * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n *\n * @param {Function} callback\n */\n onOpen(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.open.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection close events\n * @param {Function} callback\n */\n onClose(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.close.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection error events\n *\n * @example socket.onError(function(error){ alert(\"An error occurred\") })\n *\n * @param {Function} callback\n */\n onError(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.error.push([ref, callback])\n return ref\n }\n\n /**\n * Registers callbacks for connection message events\n * @param {Function} callback\n */\n onMessage(callback){\n let ref = this.makeRef()\n this.stateChangeCallbacks.message.push([ref, callback])\n return ref\n }\n\n /**\n * @private\n */\n onConnOpen(){\n if(this.hasLogger()) this.log(\"transport\", `connected to ${this.endPointURL()}`)\n this.closeWasClean = false\n this.establishedConnections++\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n this.resetHeartbeat()\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback())\n }\n\n /**\n * @private\n */\n\n heartbeatTimeout(){\n if(this.pendingHeartbeatRef){\n this.pendingHeartbeatRef = null\n if(this.hasLogger()){ this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\") }\n this.abnormalClose(\"heartbeat timeout\")\n }\n }\n\n resetHeartbeat(){\n if(this.conn && this.conn.skipHeartbeat){ return }\n this.pendingHeartbeatRef = null\n clearTimeout(this.heartbeatTimer)\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n teardown(callback, code, reason){\n if(!this.conn){\n return callback && callback()\n }\n\n this.waitForBufferDone(() => {\n if(this.conn){\n if(code){ this.conn.close(code, reason || \"\") } else { this.conn.close() }\n }\n\n this.waitForSocketClosed(() => {\n if(this.conn){\n this.conn.onclose = function (){ } // noop\n this.conn = null\n }\n\n callback && callback()\n })\n })\n }\n\n waitForBufferDone(callback, tries = 1){\n if(tries === 5 || !this.conn || !this.conn.bufferedAmount){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1)\n }, 150 * tries)\n }\n\n waitForSocketClosed(callback, tries = 1){\n if(tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed){\n callback()\n return\n }\n\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1)\n }, 150 * tries)\n }\n\n onConnClose(event){\n let closeCode = event && event.code\n if(this.hasLogger()) this.log(\"transport\", \"close\", event)\n this.triggerChanError()\n clearTimeout(this.heartbeatTimer)\n if(!this.closeWasClean && closeCode !== 1000){\n this.reconnectTimer.scheduleTimeout()\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event))\n }\n\n /**\n * @private\n */\n onConnError(error){\n if(this.hasLogger()) this.log(\"transport\", error)\n let transportBefore = this.transport\n let establishedBefore = this.establishedConnections\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore)\n })\n if(transportBefore === this.transport || establishedBefore > 0){\n this.triggerChanError()\n }\n }\n\n /**\n * @private\n */\n triggerChanError(){\n this.channels.forEach(channel => {\n if(!(channel.isErrored() || channel.isLeaving() || channel.isClosed())){\n channel.trigger(CHANNEL_EVENTS.error)\n }\n })\n }\n\n /**\n * @returns {string}\n */\n connectionState(){\n switch(this.conn && this.conn.readyState){\n case SOCKET_STATES.connecting: return \"connecting\"\n case SOCKET_STATES.open: return \"open\"\n case SOCKET_STATES.closing: return \"closing\"\n default: return \"closed\"\n }\n }\n\n /**\n * @returns {boolean}\n */\n isConnected(){ return this.connectionState() === \"open\" }\n\n /**\n * @private\n *\n * @param {Channel}\n */\n remove(channel){\n this.off(channel.stateChangeRefs)\n this.channels = this.channels.filter(c => c.joinRef() !== channel.joinRef())\n }\n\n /**\n * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n *\n * @param {refs} - list of refs returned by calls to\n * `onOpen`, `onClose`, `onError,` and `onMessage`\n */\n off(refs){\n for(let key in this.stateChangeCallbacks){\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1\n })\n }\n }\n\n /**\n * Initiates a new channel for the given topic\n *\n * @param {string} topic\n * @param {Object} chanParams - Parameters for the channel\n * @returns {Channel}\n */\n channel(topic, chanParams = {}){\n let chan = new Channel(topic, chanParams, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * @param {Object} data\n */\n push(data){\n if(this.hasLogger()){\n let {topic, event, payload, ref, join_ref} = data\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload)\n }\n\n if(this.isConnected()){\n this.encode(data, result => this.conn.send(result))\n } else {\n this.sendBuffer.push(() => this.encode(data, result => this.conn.send(result)))\n }\n }\n\n /**\n * Return the next message ref, accounting for overflows\n * @returns {string}\n */\n makeRef(){\n let newRef = this.ref + 1\n if(newRef === this.ref){ this.ref = 0 } else { this.ref = newRef }\n\n return this.ref.toString()\n }\n\n sendHeartbeat(){\n if(this.pendingHeartbeatRef && !this.isConnected()){ return }\n this.pendingHeartbeatRef = this.makeRef()\n this.push({topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef})\n this.heartbeatTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs)\n }\n\n abnormalClose(reason){\n this.closeWasClean = false\n if(this.isConnected()){ this.conn.close(WS_CLOSE_NORMAL, reason) }\n }\n\n flushSendBuffer(){\n if(this.isConnected() && this.sendBuffer.length > 0){\n this.sendBuffer.forEach(callback => callback())\n this.sendBuffer = []\n }\n }\n\n onConnMessage(rawMessage){\n this.decode(rawMessage.data, msg => {\n let {topic, event, payload, ref, join_ref} = msg\n if(ref && ref === this.pendingHeartbeatRef){\n clearTimeout(this.heartbeatTimer)\n this.pendingHeartbeatRef = null\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs)\n }\n\n if(this.hasLogger()) this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload)\n\n for(let i = 0; i < this.channels.length; i++){\n const channel = this.channels[i]\n if(!channel.isMember(topic, event, payload, join_ref)){ continue }\n channel.trigger(event, payload, ref, join_ref)\n }\n\n for(let i = 0; i < this.stateChangeCallbacks.message.length; i++){\n let [, callback] = this.stateChangeCallbacks.message[i]\n callback(msg)\n }\n })\n }\n\n leaveOpenTopic(topic){\n let dupChannel = this.channels.find(c => c.topic === topic && (c.isJoined() || c.isJoining()))\n if(dupChannel){\n if(this.hasLogger()) this.log(\"transport\", `leaving duplicate topic \"${topic}\"`)\n dupChannel.leave()\n }\n }\n}\n", "// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "module.exports = false;\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n", "// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n", "// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n", "// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n", "'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n", "var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n", "// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "module.exports = true;\n", "// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n", "var core = module.exports = { version: '2.6.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n", "module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n", "// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n", "// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n", "var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n", "module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n", "// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n", "module.exports = require('./_hide');\n", "module.exports = {};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '\u00A9 2018 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n", "module.exports = function () { /* empty */ };\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n", "exports.f = require('./_wks');\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n", "var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n", "exports.f = Object.getOwnPropertySymbols;\n", "exports.f = {}.propertyIsEnumerable;\n", "// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n", "// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n", "// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n", "// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n", "var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n", "'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n", "", "require('./_wks-define')('asyncIterator');\n", "require('./_wks-define')('observable');\n", "require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n", "// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n", "'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n", "'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n", "require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\nexports.constant = constant;\nexports.on = on;\nexports.compose = compose;\nexports.pipe = pipe;\nexports.curry = curry;\n// eslint-disable-line no-redeclare\n\n// Flips the order of the arguments to a function of two arguments.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\nfunction flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\n\n// Returns its first argument and ignores its second.\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n// eslint-disable-line no-redeclare\n\nfunction constant(a) {\n return function () {\n return a;\n };\n}\n\n// The `on` function is used to change the domain of a binary operator.\nfunction on(o, f) {\n return function (x, y) {\n return o(f(x), f(y));\n };\n}\n\nfunction compose() {\n var _this = this;\n\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i = len; _i > -1; _i--) {\n y = fns[_i].call(_this, y);\n }\n return y;\n };\n}\n\nfunction pipe() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line no-redeclare\n var len = fns.length - 1;\n return function (x) {\n var y = x;\n for (var _i2 = 0; _i2 <= len; _i2++) {\n y = fns[_i2].call(_this2, y);\n }\n return y;\n };\n}\n\nfunction curried(f, length, acc) {\n return function () {\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}", "'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n", "// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n", "require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n", "// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n", "require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n", "require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n", "module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _toConsumableArray = _interopDefault(require('babel-runtime/helpers/toConsumableArray'));\nvar _newArrowCheck = _interopDefault(require('babel-runtime/helpers/newArrowCheck'));\nvar Fun = require('flow-static-land/lib/Fun');\nvar _extends = _interopDefault(require('babel-runtime/helpers/extends'));\nvar _Array$from = _interopDefault(require('babel-runtime/core-js/array/from'));\nvar _Object$keys = _interopDefault(require('babel-runtime/core-js/object/keys'));\nvar _Number$isInteger = _interopDefault(require('babel-runtime/core-js/number/is-integer'));\nvar _objectWithoutProperties = _interopDefault(require('babel-runtime/helpers/objectWithoutProperties'));\n\nvar _this = undefined;\n\n/**\n * Returns a new Array with elements appended to the one given.\n */\nvar append = function (elements, array) {\n _newArrowCheck(this, _this);\n\n return [].concat(_toConsumableArray(array), _toConsumableArray(elements));\n}.bind(undefined);\n\nvar append$1 = Fun.curry(append);\n\nvar _this$1 = undefined;\n\n/**\n * Returns input if it is an Array or returns a new Array with input inside if\n * it is not.\n */\nvar convertIfNot = function (input) {\n _newArrowCheck(this, _this$1);\n\n return Array.isArray(input) ? input : [input];\n}.bind(undefined);\n\nvar _this$3 = undefined;\n\n/**\n * Returns true if given index is the last one or false otherwise.\n */\nvar isLastIndex = function (array, index) {\n _newArrowCheck(this, _this$3);\n\n return index === array.length - 1;\n}.bind(undefined);\n\nvar isLastIndex$1 = Fun.curry(isLastIndex);\n\nvar _this$2 = undefined;\n\n/**\n * Returns 0 if current index is the last one, or returns next if it is not.\n */\nvar cycleNext = function (array, currentIndex) {\n _newArrowCheck(this, _this$2);\n\n return isLastIndex$1(array, currentIndex) ? 0 : currentIndex + 1;\n}.bind(undefined);\n\nvar cycleNext$1 = Fun.curry(cycleNext);\n\nvar _this$4 = undefined;\n\nvar getObjectLength = function (object) {\n _newArrowCheck(this, _this$4);\n\n return Math.max.apply(Math, _toConsumableArray(_Object$keys(object))) + 1;\n}.bind(undefined);\n\n/**\n * Creates a new array using the given object\n * If all of its entries are array keys.\n * \n * (it could also have a property length with its size)\n */\nvar fromObject = function (object) {\n _newArrowCheck(this, _this$4);\n\n return _Array$from(\"length\" in object ? object : _extends({}, object, { length: getObjectLength(object) }));\n}.bind(undefined);\n\nvar _this$5 = undefined;\n\n/**\n * Returns a new Array with the result of having inserted the given elements at\n * the specified index.\n */\nvar insert = function (index, elements, array) {\n _newArrowCheck(this, _this$5);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + 1)));\n}.bind(undefined);\n\nvar insert$1 = Fun.curry(insert);\n\nvar _this$6 = undefined;\n\nvar isIntGreaterThan = function (number, other) {\n _newArrowCheck(this, _this$6);\n\n return _Number$isInteger(number) && number >= other;\n}.bind(undefined);\n\n/**\n * Returns true if the given string is an Array key or false otherwise.\n */\nvar isKey = function (string) {\n _newArrowCheck(this, _this$6);\n\n return isIntGreaterThan(Number(string), 0);\n}.bind(undefined);\n\nvar _this$7 = undefined;\n\n/**\n * Returns true if an Array can be created from the given Object, or in other\n * words, if it has or not a length property, and the rest of its keys are Array\n * ones.\n */\nvar isPossibleFromObject = function (_ref) {\n var length = _ref.length,\n rest = _objectWithoutProperties(_ref, [\"length\"]);\n\n _newArrowCheck(this, _this$7);\n\n return _Object$keys(rest).every(isKey);\n}.bind(undefined);\n\nvar _this$8 = undefined;\n\n/**\n * Returns a new Array with elements prepended to the one given.\n */\nvar prepend = function (elements, array) {\n _newArrowCheck(this, _this$8);\n\n return [].concat(_toConsumableArray(elements), _toConsumableArray(array));\n}.bind(undefined);\n\nvar prepend$1 = Fun.curry(prepend);\n\nvar _this$9 = undefined;\n\n/**\n * Reduce the given array applying reduce function only to elements filtered.\n */\nvar reduceIf = function (filter, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$9);\n\n return array.reduce(function (result, element, index) {\n _newArrowCheck(this, _this$9);\n\n return filter(element, index, result) ? reduce(result, element, index) : result;\n }.bind(this), resultInitial);\n}.bind(undefined);\n\nvar reduceIf$1 = Fun.curry(reduceIf);\n\nvar _this$10 = undefined;\n\n/**\n * Reduce the given array applying reduce function while shouldProceed function\n * returns true.\n */\nvar reduceWhile = function (shouldProceed, reduce, resultInitial, array) {\n _newArrowCheck(this, _this$10);\n\n var result = resultInitial;\n\n array.every(function (element, index) {\n _newArrowCheck(this, _this$10);\n\n var proceed = shouldProceed(element, index, result);\n\n if (proceed) {\n result = reduce(result, element, index);\n }\n\n return proceed;\n }.bind(this));\n\n return result;\n}.bind(undefined);\n\nvar reduceWhile$1 = Fun.curry(reduceWhile);\n\nvar _this$11 = undefined;\n\n/**\n * Returns a new Array with the result of having removed the specified amount\n * (count) of elements at the given index.\n */\nvar remove = function (index, count, array) {\n _newArrowCheck(this, _this$11);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + count)));\n}.bind(undefined);\n\nvar remove$1 = Fun.curry(remove);\n\nvar _this$12 = undefined;\n\n/**\n * Returns a new Array with the given size (count) filled with the specified\n * element.\n */\nvar repeat = function (count, element) {\n _newArrowCheck(this, _this$12);\n\n return [].concat(_toConsumableArray(Array(count))).map(function () {\n _newArrowCheck(this, _this$12);\n\n return element;\n }.bind(this));\n}.bind(undefined);\n\nvar repeat$1 = Fun.curry(repeat);\n\nvar _this$13 = undefined;\n\n/**\n * Returns a new Array with the result of having replaced the elements at the\n * given index with the ones specified.\n */\nvar replace = function (index, elements, array) {\n _newArrowCheck(this, _this$13);\n\n return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(elements), _toConsumableArray(array.slice(index + elements.length)));\n}.bind(undefined);\n\nvar replace$1 = Fun.curry(replace);\n\nvar _this$14 = undefined;\n\n/**\n * Returns an absolute index from a relative one.\n * \n * Relative indexes differ from absolute ones in that they can be negative and\n * in those cases it would be as simple as substracting them from the length of\n * the array from where they belong to obtain their absolute counterparts.\n */\nvar resolveIndex = function (array, relativeIndex) {\n _newArrowCheck(this, _this$14);\n\n return relativeIndex < 0 ? array.length - relativeIndex : relativeIndex;\n}.bind(undefined);\n\nvar resolveIndex$1 = Fun.curry(resolveIndex);\n\nexports.append = append$1;\nexports.convertIfNot = convertIfNot;\nexports.cycleNext = cycleNext$1;\nexports.fromObject = fromObject;\nexports.insert = insert$1;\nexports.isKey = isKey;\nexports.isLastIndex = isLastIndex$1;\nexports.isPossibleFromObject = isPossibleFromObject;\nexports.prepend = prepend$1;\nexports.reduceIf = reduceIf$1;\nexports.reduceWhile = reduceWhile$1;\nexports.remove = remove$1;\nexports.repeat = repeat$1;\nexports.replace = replace$1;\nexports.resolveIndex = resolveIndex$1;\n", "'use strict';\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!equal(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n};\n", "var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n", "require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};", "var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n", "module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };", "var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n", "require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();", "var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n", "// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n", "require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n", "module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get property value of given key.\n */\nconst get = (key: Key, composite: Composite): any => composite[(key: any)];\n\nexport default curry(get);\n", "// @flow\n\n// TODO: use @jumpn/utils-object {is} once it is available\nconst isObject = thing => thing !== null && typeof thing === \"object\";\n\n/**\n * Returns true if parameter is a Composite or false otherwise\n */\nconst is = (thing: mixed) => Array.isArray(thing) || isObject(thing);\n\nexport default is;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport isComposite from \"./is\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst getInIfNeeded = (index, path, value) =>\n isLastIndex(path, index) ? value : getInRecur(index + 1, path, value);\n\nconst getNotCompositeErrorMessage = (index, path, maybeComposite) =>\n `Expected to find a composite at [${path.join(\", \")}][${index}], ` +\n `but instead got: ${typeof maybeComposite}`;\n\nconst ensureIsComposite = (index, path, maybeComposite) => {\n if (isComposite(maybeComposite)) return maybeComposite;\n\n throw new Error(getNotCompositeErrorMessage(index, path, maybeComposite));\n};\n\nconst getInRecur = (index, path, maybeComposite) =>\n maybeComposite === undefined\n ? undefined\n : getInIfNeeded(\n index,\n path,\n get(path[index], ensureIsComposite(index, path, maybeComposite))\n );\n\n/**\n * Returns value located at the given path or undefined otherwise.\n */\nconst getIn = (path: Path, composite: Composite): any =>\n path.length === 0 ? undefined : getInRecur(0, path, composite);\n\nexport default curry(getIn);\n", "// @flow\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Get own enumerable keys.\n */\nconst getKeys = (composite: Composite): Array =>\n Array.isArray(composite) ? [...composite.keys()] : Object.keys(composite);\n\nexport default getKeys;\n", "// @flow\n\nimport isDeepEqual from \"fast-deep-equal\";\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport getIn from \"./getIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns true if value located at given path is deeply equal to the one\n * specified.\n */\nconst hasIn = (path: Path, value: mixed, composite: Composite): boolean =>\n isDeepEqual(getIn(path, composite), value);\n\nexport default curry(hasIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns true if key is included in composite's own enumerable ones,\n * or false otherwise.\n */\nconst hasKey = (key: Key, composite: Composite): boolean =>\n Object.prototype.hasOwnProperty.call(composite, key);\n\nexport default curry(hasKey);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport get from \"./get\";\nimport getKeys from \"./getKeys\";\nimport hasKey from \"./hasKey\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if both composites have the same props or false otherwise.\n */\nconst haveSameProps = (c1: Composite, c2: Composite): boolean => {\n const keys1 = getKeys(c1);\n\n return (\n keys1.length === getKeys(c2).length &&\n keys1.every(k1 => hasKey(k1, c2) && get(k1, c1) === get(k1, c2))\n );\n};\n\nexport default curry(haveSameProps);\n", "// @flow\n\nimport getKeys from \"./getKeys\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns true if composite has no own enumerable keys (is empty) or false\n * otherwise\n */\nconst isEmpty = (composite: Composite): boolean =>\n getKeys(composite).length === 0;\n\nexport default isEmpty;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport type {Composite, Key} from \"./types\";\n\nconst mapObject = (mapper, object) =>\n Object.entries(object).reduce(\n (result, [key, value]) => ({\n ...result,\n [key]: mapper(value, key, object)\n }),\n {}\n );\n\n/**\n * Maps values of the given composite using mapper\n */\nconst map = (\n mapper: (value: any, key: Key, composite: $Supertype) => any,\n composite: C\n): $Supertype =>\n Array.isArray(composite)\n ? composite.map(mapper)\n : mapObject(mapper, composite);\n\nexport default curry(map);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Composite, Key} from \"./types\";\n\n// $FlowFixMe: flow does not understand the following construction\nconst objectRemove = (key, {[key]: removed, ...rest}) => rest;\n\n/**\n * Returns a new composite with the result of having removed the property with\n * the given key.\n */\nconst remove = (key: Key, composite: Composite): Composite =>\n Array.isArray(composite)\n ? arrayRemove((key: any), 1, composite)\n : objectRemove(key, composite);\n\nexport default curry(remove);\n", "// @flow\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns a new composite with the same own enumerable props of the one given.\n */\nconst shallowCopy = (composite: C): C =>\n Array.isArray(composite) ? [...composite] : {...composite};\n\nexport default shallowCopy;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\nimport {isLastIndex} from \"@jumpn/utils-array\";\n\nimport get from \"./get\";\nimport hasKey from \"./hasKey\";\nimport remove from \"./remove\";\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst createReduceContext = composite => {\n const origin = shallowCopy(composite);\n\n return {origin, current: origin, previous: undefined};\n};\n\nconst set = (key, value, composite) => {\n // eslint-disable-next-line no-param-reassign\n composite[(key: any)] = value;\n\n return get(key, composite);\n};\n\nconst updateSet = (path, index, value, context) => ({\n ...context,\n current: set(path[index], value, context.current),\n previous: context.current\n});\n\nconst updateRemove = (path, index, context) => {\n const removed = remove(path[index], context.current);\n\n return index === 0\n ? {...context, current: removed, origin: removed}\n : {\n ...context,\n previous: set(path[index - 1], removed, (context.previous: any))\n };\n};\n\nconst removeAction = Symbol(\"composite.updateIn.removeAction\");\n\nconst update = (path, index, value, context) =>\n value === removeAction\n ? updateRemove(path, index, context)\n : updateSet(path, index, value, context);\n\nconst createSupporting = key => (typeof key === \"number\" ? [] : {});\n\nconst copyOrCreate = (key, nextKey, current) =>\n hasKey(key, current)\n ? shallowCopy(get(key, current))\n : createSupporting(nextKey);\n\nconst getNext = (path, updater, index, current) =>\n isLastIndex(path, index)\n ? updater(get(path[index], current))\n : copyOrCreate(path[index], path[index + 1], current);\n\nconst getReducer = (path, updater) => (context, key, index) =>\n update(path, index, getNext(path, updater, index, context.current), context);\n\n/**\n * Returns a new composite with the result of having updated the property value\n * at the given path with the result of the call to updater function.\n * \n * Entry removal is supported by returning `updateIn.remove` symbol on updater\n * function.\n */\nconst updateIn = (\n path: Path,\n updater: (prev: any) => any,\n composite: Composite\n): Composite =>\n path.length === 0\n ? composite\n : path.reduce(getReducer(path, updater), createReduceContext(composite))\n .origin;\n\n// we are doing this way and not returning an Object.assign construction, as\n// that is not well typed (returns any)\nconst updateInCurried = curry(updateIn);\n\nupdateInCurried.remove = removeAction;\n\nexport default updateInCurried;\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\nconst remove = () => updateIn.remove;\n\n/**\n * Returns a new composite with the result of having removed the property\n * located at the given path.\n * \n * (This does the same as calling **updateIn** with updater:\n * `() => updateIn.remove`)\n */\nconst removeIn = (path: Path, composite: Composite): Composite =>\n updateIn(path, remove, composite);\n\nexport default curry(removeIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport shallowCopy from \"./shallowCopy\";\n\nimport type {Composite, Key} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property with\n * the given key with the specified value.\n */\nconst set = (key: Key, value: mixed, composite: Composite): Composite => {\n const copy = shallowCopy(composite);\n\n copy[(key: any)] = value;\n\n return copy;\n};\n\nexport default curry(set);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport updateIn from \"./updateIn\";\n\nimport type {Composite, Path} from \"./types\";\n\n/**\n * Returns a new composite with the result of having updated the property\n * located at the given path with the specified value.\n * \n * (This does the same as calling **updateIn** with updater: `() => value`)\n */\nconst setIn = (path: Path, value: mixed, composite: Composite): Composite =>\n updateIn(path, () => value, composite);\n\nexport default curry(setIn);\n", "// @flow\n\nimport {curry} from \"flow-static-land/lib/Fun\";\n\nimport haveSameProps from \"./haveSameProps\";\n\nimport type {Composite} from \"./types\";\n\n// eslint-disable-next-line no-bitwise\nconst xor = (cond1, cond2) => Boolean(Number(cond1) ^ Number(cond2));\n\n/**\n * Returns true if both composites are of the same type (Array or Object) and\n * their properties are strictly equal.\n */\nconst shallowEqual = (c1: Composite, c2: Composite): boolean =>\n c1 === c2 ||\n (!xor(Array.isArray(c1), Array.isArray(c2)) && haveSameProps(c1, c2));\n\nexport default curry(shallowEqual);\n", "// @flow\n\nimport isEmpty from \"./isEmpty\";\n\nimport type {Composite} from \"./types\";\n\n/**\n * Returns given composite if it has any own enumerable keys (is not empty) or\n * undefined otherwise\n *\n * @param {Composite} composite\n * \n * @returns {Composite}\n */\nconst toUndefinedIfEmpty = (composite: C): void | C =>\n isEmpty(composite) ? undefined : composite;\n\nexport default toUndefinedIfEmpty;\n", "module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n", "module.exports = {};\n", "// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n", "var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n", "// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n", "var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n", "var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n", "// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n", "var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n", "var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n", "// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n", "var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n", "'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n", "// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n", "'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n", "'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n", "'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n", "'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n", "function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;", "function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;", "var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;", "'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n", "var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n", "'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n", "// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n", "'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n", "'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n", "'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n", "'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n", "// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n", "'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n", "// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n", "function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nmodule.exports = _newArrowCheck;", "// @flow\n\nimport type {GqlError} from \"./types\";\n\nconst locationsToString = locations =>\n locations.map(({column, line}) => `${line}:${column}`).join(\"; \");\n\nconst errorToString = ({message, locations}) =>\n message + (locations ? ` (${locationsToString(locations)})` : \"\");\n\n/**\n * Transforms an array of GqlError into a string.\n *\n * @example\n *\n * const gqlRespose = {\n * errors: [\n * {message: \"First Error\", locations: [{column: 10, line: 2}]},\n * {message: \"Second Error\", locations: [{column: 2, line: 4}]}\n * ]\n * }\n *\n * const error = errorsToString(gqlRespose.errors);\n * // string with the following:\n * // First Error (2:10)\n * // Second Error (4:2)\n */\nconst errorsToString = (gqlErrors: Array): string =>\n gqlErrors.map(errorToString).join(\"\\n\");\n\nexport default errorsToString;\n", "// @flow\n\nimport type {GqlOperationType} from \"./types\";\n\nconst operationTypeRe = /^\\s*(query|mutation|subscription|\\{)/;\n\nconst getOperationTypeFromMatched = (matched: string): GqlOperationType =>\n matched === \"{\" ? \"query\" : (matched: any);\n\n/**\n * Returns the type (query, mutation, or subscription) of the given operation\n *\n * @example\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * const operationType = getOperationType(operation);\n *\n * console.log(operationType); // \"subscription\"\n */\nconst getOperationType = (operation: string): GqlOperationType => {\n const result = operation.match(operationTypeRe);\n\n if (!result) {\n throw new TypeError(`Invalid operation:\\n${operation}`);\n }\n\n return getOperationTypeFromMatched(result[1]);\n};\n\nexport default getOperationType;\n", "// @flow\n\nimport type {DocumentNode} from \"graphql/language/ast\";\n\nconst isSubscription = definition =>\n definition.kind === \"OperationDefinition\" &&\n definition.operation === \"subscription\";\n\n/**\n * Returns true if documentNode has a subscription or false otherwise\n */\nconst hasSubscription = (documentNode: DocumentNode): boolean =>\n documentNode.definitions.some(isSubscription);\n\nexport default hasSubscription;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequestCompat} gqlRequestCompat\n *\n * @return {GqlRequest} \n *\n * @example\n * const query = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestFromCompat({query, variables: {userId: 10}}));\n * // {operation: \"...\", variables: {userId: 10}}\n */\nconst requestFromCompat = ({\n query: operation,\n variables\n}: GqlRequestCompat): GqlRequest =>\n variables ? {operation, variables} : {operation};\n\nexport default requestFromCompat;\n", "// @flow\n\nimport type {GqlRequest, GqlRequestCompat} from \"./types\";\n\n/**\n * Creates a GqlRequest using given GqlRequestCompat\n *\n * @param {GqlRequest} gqlRequest\n *\n * @return {GqlRequestCompat}\n * \n * @example\n * const operation = `\n * query userQuery($userId: ID!) {\n * user(userId: $userId) {\n * id\n * email\n * }\n * }\n * `;\n * \n * console.log(requestToCompat({operation, variables: {userId: 10}}));\n * // {query: \"...\", variables: {userId: 10}}\n */\nconst requestToCompat = ({\n operation: query,\n variables\n}: GqlRequest): GqlRequestCompat =>\n variables ? {query, variables} : {query};\n\nexport default requestToCompat;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// === Symbol Support ===\n\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species');\n\n// === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n\n if (value == null) return undefined;\n\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({ type: type, value: value });\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{ type: type, value: value }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: 'closed',\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: 'next',\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: 'error',\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: 'complete',\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: 'closed',\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = exports.Observable = function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: 'subscribe',\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: 'forEach',\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: 'map',\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'filter',\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'reduce',\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: 'concat',\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscription = void 0;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: 'flatMap',\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n\n var C = getSpecies(this);\n\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function () {\n return this;\n }\n }], [{\n key: 'from',\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n\n if (x == null) throw new TypeError(x + ' is not an object');\n\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n\n if (isObservable(observable) && observable.constructor === C) return observable;\n\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n observer.next(item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: 'of',\n value: function of() {\n for (var _len2 = arguments.length, items = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}", "module.exports = require('./lib/Observable.js').Observable;\n", "'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n", "// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n", "// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n", "var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n", "// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;", "var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;", "function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;", "var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;", "'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst cancel = ({\n activeObservers,\n canceledObservers,\n ...rest\n}: Notifier) => ({\n ...rest,\n isActive: false,\n activeObservers: [],\n canceledObservers: [...activeObservers, ...canceledObservers]\n});\n\nexport default cancel;\n", "// @flow\n\nimport type {Event, Observer} from \"../types\";\n\nconst getNotifier = (handlerName, payload) => observer =>\n observer[handlerName] && observer[handlerName](payload);\n\nconst getHandlerName = ({name}) => `on${name}`;\n\nconst notifyAll = (\n observers: $ReadOnlyArray>,\n event: Event\n) => observers.forEach(getNotifier(getHandlerName(event), event.payload));\n\nexport default notifyAll;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyCanceled = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.canceledObservers, event);\n\n return notifier;\n};\n\nexport default notifyCanceled;\n", "// @flow\n\nconst eventNames = {\n abort: (\"Abort\": \"Abort\"),\n cancel: (\"Cancel\": \"Cancel\"),\n error: (\"Error\": \"Error\"),\n result: (\"Result\": \"Result\"),\n start: (\"Start\": \"Start\")\n};\n\ntype EventName = $Values;\n\nexport default eventNames;\n\nexport type {EventName};\n", "// @flow\n\nimport eventNames from \"./eventNames\";\n\nimport type {\n AbortEvent,\n CancelEvent,\n ErrorEvent,\n Notifier,\n ResultEvent,\n StartEvent\n} from \"../types\";\n\nconst createStartEvent = >(\n payload: Payload\n): StartEvent => ({payload, name: eventNames.start});\n\nconst createResultEvent = (payload: Result): ResultEvent => ({\n payload,\n name: eventNames.result\n});\n\nconst createErrorEvent = (payload: Error): ErrorEvent => ({\n payload,\n name: eventNames.error\n});\n\nconst createCancelEvent = (): CancelEvent => ({\n name: eventNames.cancel,\n payload: undefined\n});\n\nconst createAbortEvent = (payload: Error): AbortEvent => ({\n payload,\n name: eventNames.abort\n});\n\nexport {\n createStartEvent,\n createResultEvent,\n createErrorEvent,\n createCancelEvent,\n createAbortEvent\n};\n", "// @flow\n\nimport notifyCanceled from \"./notifyCanceled\";\nimport {createCancelEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst clearCanceled = notifier => ({\n ...notifier,\n canceledObservers: []\n});\n\nconst flushCanceled = (\n notifier: Notifier\n) =>\n notifier.canceledObservers.length > 0\n ? clearCanceled(notifyCanceled(notifier, createCancelEvent()))\n : notifier;\n\nexport default flushCanceled;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst findIndex = (\n notifiers: Array>,\n key: string,\n value: any\n) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.findIndex(hasIn([key], value));\n\nexport default findIndex;\n", "// @flow\n\nimport {replace as arrayReplace} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst refresh = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayReplace(\n findIndex(notifiers, \"request\", notifier.request),\n [notifier],\n notifiers\n );\n\nexport default refresh;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport findIndex from \"./findIndex\";\n\nimport type {Notifier} from \"./types\";\n\nconst remove = (notifier: Notifier) => (\n notifiers: Array>\n) =>\n arrayRemove(findIndex(notifiers, \"request\", notifier.request), 1, notifiers);\n\nexport default remove;\n", "// @flow\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype Notifiers = Array>;\n\nconst updateNotifiers = (\n absintheSocket: AbsintheSocket,\n updater: (notifiers: Notifiers) => Notifiers\n) => {\n absintheSocket.notifiers = updater(absintheSocket.notifiers);\n\n return absintheSocket;\n};\n\nexport default updateNotifiers;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst refreshNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n updateNotifiers(absintheSocket, notifierRefresh(notifier));\n\n return notifier;\n};\n\nexport default refreshNotifier;\n", "// @flow\n\nconst requestStatuses = {\n canceled: (\"canceled\": \"canceled\"),\n canceling: (\"canceling\": \"canceling\"),\n pending: (\"pending\": \"pending\"),\n sent: (\"sent\": \"sent\"),\n sending: (\"sending\": \"sending\")\n};\n\ntype RequestStatus = $Values;\n\nexport default requestStatuses;\n\nexport type {RequestStatus};\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst getObservers = ({activeObservers, canceledObservers}) => [\n ...activeObservers,\n ...canceledObservers\n];\n\nconst notify = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(getObservers(notifier), event);\n\n return notifier;\n};\n\nexport default notify;\n", "// @flow\n\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbortEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst abortNotifier = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n error: Error\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierNotify(notifier, createAbortEvent(error)))\n );\n\nexport default abortNotifier;\n", "// @flow\n\nimport {hasIn} from \"@jumpn/utils-composite\";\n\nimport type {Notifier} from \"./types\";\n\nconst find = (notifiers: Array>, key: string, value: any) =>\n // $FlowFixMe: flow is having some troubles to match hasIn signature (curry)\n notifiers.find(hasIn([key], value));\n\nexport default find;\n", "// @flow\n\nimport observerNotifyAll from \"./observer/notifyAll\";\n\nimport type {Event, Notifier} from \"./types\";\n\nconst notifyActive = (\n notifier: Notifier,\n event: Event\n) => {\n observerNotifyAll(notifier.activeObservers, event);\n\n return notifier;\n};\n\nexport default notifyActive;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createResultEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyResultEvent = (\n notifier: Notifier,\n result: Result\n) => notifyActive(notifier, createResultEvent(result));\n\nexport default notifyResultEvent;\n", "// @flow\n\nimport notifyActive from \"./notifyActive\";\nimport {createStartEvent} from \"./event/eventCreators\";\n\nimport type {Notifier} from \"./types\";\n\nconst notifyStartEvent = (\n notifier: Notifier\n) => notifyActive(notifier, createStartEvent(notifier));\n\nexport default notifyStartEvent;\n", "// @flow\n\nimport flushCanceled from \"./flushCanceled\";\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst reset = (\n notifier: Notifier\n) =>\n flushCanceled({\n ...notifier,\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n });\n\nexport default reset;\n", "// @flow\n\nimport {Push} from \"phoenix\";\n\nimport type {PushHandler} from \"./types\";\n\nconst handlePush = (push: Push, handler: PushHandler) =>\n push\n .receive(\"ok\", handler.onSucceed)\n .receive(\"error\", handler.onError)\n .receive(\"timeout\", handler.onTimeout);\n\nexport default handlePush;\n", "// @flow\n\nimport {map} from \"@jumpn/utils-composite\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport handlePush from \"./handlePush\";\nimport notifierFind from \"./notifier/find\";\n\nimport type {AbsintheEvent} from \"./absinthe-event/types\";\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\n\nconst getPushHandlerMethodGetter = (absintheSocket, request) => handle => (\n ...args\n) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n if (notifier) {\n handle(absintheSocket, notifier, ...args);\n }\n};\n\nconst getPushHandler = (absintheSocket, request, notifierPushHandler) =>\n map(getPushHandlerMethodGetter(absintheSocket, request), notifierPushHandler);\n\nconst pushAbsintheEvent = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest,\n notifierPushHandler: NotifierPushHandler,\n absintheEvent: AbsintheEvent\n) => {\n handlePush(\n absintheSocket.channel.push(absintheEvent.name, absintheEvent.payload),\n getPushHandler(absintheSocket, request, notifierPushHandler)\n );\n\n return absintheSocket;\n};\n\nexport default pushAbsintheEvent;\n", "// @flow\n\nconst absintheEventNames = {\n doc: (\"doc\": \"doc\"),\n unsubscribe: (\"unsubscribe\": \"unsubscribe\")\n};\n\ntype AbsintheEventName = $Values;\n\nexport default absintheEventNames;\n\nexport type {AbsintheEventName};\n", "// @flow\n\nimport absintheEventNames from \"./absintheEventNames\";\n\nimport type {AbsintheDocEvent, AbsintheUnsubscribeEvent} from \"./types\";\n\nconst createAbsintheUnsubscribeEvent = (\n payload: $ElementType\n): AbsintheUnsubscribeEvent => ({\n payload,\n name: absintheEventNames.unsubscribe\n});\n\nconst createAbsintheDocEvent = (\n payload: $ElementType, \"payload\">\n): AbsintheDocEvent => ({\n payload,\n name: absintheEventNames.doc\n});\n\nexport {createAbsintheDocEvent, createAbsintheUnsubscribeEvent};\n", "// @flow\n\nimport {requestToCompat} from \"@jumpn/utils-graphql\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport {createAbsintheDocEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst pushAbsintheDocEvent = (absintheSocket, {request}, notifierPushHandler) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n notifierPushHandler,\n createAbsintheDocEvent(requestToCompat(request))\n );\n\nconst setNotifierRequestStatusSending = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sending\n });\n\nconst createRequestError = message => new Error(`request: ${message}`);\n\nconst onTimeout = (absintheSocket, notifier) =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createRequestError(\"timeout\"))\n );\n\nconst onError = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n errorMessage: string\n) => abortNotifier(absintheSocket, notifier, createRequestError(errorMessage));\n\nconst getNotifierPushHandler = onSucceed => ({onError, onSucceed, onTimeout});\n\nconst pushRequestUsing = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n onSucceed: $ElementType, \"onSucceed\">\n) =>\n pushAbsintheDocEvent(\n absintheSocket,\n setNotifierRequestStatusSending(absintheSocket, notifier),\n getNotifierPushHandler(onSucceed)\n );\n\nexport {pushRequestUsing as default, onError};\n", "// @flow\n\nimport {errorsToString as gqlErrorsToString} from \"@jumpn/utils-graphql\";\n\nimport type {\n GqlError,\n GqlResponse\n} from \"@jumpn/utils-graphql/compat/cjs/types\";\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierNotifyCanceled from \"./notifier/notifyCanceled\";\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport pushAbsintheEvent from \"./pushAbsintheEvent\";\nimport pushRequestUsing, {onError} from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {createAbsintheUnsubscribeEvent} from \"./absinthe-event/absintheEventCreators\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket, NotifierPushHandler} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\ntype SubscriptionPayload = {|\n result: GqlResponse,\n subscriptionId: string\n|};\n\n// TODO: improve this type\ntype UnsubscribeResponse = {};\n\ntype SubscriptionResponse =\n | {|subscriptionId: string|}\n | {|errors: Array|};\n\nconst onUnsubscribeSucceedCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifier))\n );\n\nconst onUnsubscribeSucceedActive = (absintheSocket, notifier) =>\n subscribe(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierReset(notifier))\n );\n\nconst createUnsubscribeError = message => new Error(`unsubscribe: ${message}`);\n\nconst unsubscribeHandler: NotifierPushHandler = {\n onError: (absintheSocket, notifier, errorMessage) =>\n abortNotifier(\n absintheSocket,\n notifier,\n createUnsubscribeError(errorMessage)\n ),\n\n onTimeout: (absintheSocket, notifier) =>\n notifierNotifyCanceled(\n notifier,\n createErrorEvent(createUnsubscribeError(\"timeout\"))\n ),\n\n onSucceed: (absintheSocket, notifier) => {\n if (notifier.isActive) {\n onUnsubscribeSucceedActive(absintheSocket, notifier);\n } else {\n onUnsubscribeSucceedCanceled(absintheSocket, notifier);\n }\n }\n};\n\nconst pushAbsintheUnsubscribeEvent = (\n absintheSocket,\n {request, subscriptionId}\n) =>\n pushAbsintheEvent(\n absintheSocket,\n request,\n unsubscribeHandler,\n createAbsintheUnsubscribeEvent({subscriptionId})\n );\n\nconst unsubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) =>\n pushAbsintheUnsubscribeEvent(\n absintheSocket,\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.canceling\n })\n );\n\nconst onSubscribeSucceed = (absintheSocket, notifier, {subscriptionId}) => {\n const subscribedNotifier = refreshNotifier(absintheSocket, {\n ...notifier,\n subscriptionId,\n requestStatus: requestStatuses.sent\n });\n\n if (subscribedNotifier.isActive) {\n notifierNotifyStartEvent(subscribedNotifier);\n } else {\n unsubscribe(absintheSocket, subscribedNotifier);\n }\n};\n\nconst onSubscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: SubscriptionResponse\n) => {\n if (response.errors) {\n onError(absintheSocket, notifier, gqlErrorsToString(response.errors));\n } else {\n onSubscribeSucceed(absintheSocket, notifier, response);\n }\n};\n\nconst subscribe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => pushRequestUsing(absintheSocket, notifier, onSubscribe);\n\nconst onDataMessage = (\n absintheSocket: AbsintheSocket,\n {payload}: Message>\n) => {\n const notifier = notifierFind(\n absintheSocket.notifiers,\n \"subscriptionId\",\n payload.subscriptionId\n );\n\n if (notifier) {\n notifierNotifyResultEvent(notifier, payload.result);\n }\n};\n\nconst dataMessageEventName = \"subscription:data\";\n\nconst isDataMessage = (message: Message<>) =>\n message.event === dataMessageEventName;\n\nexport {isDataMessage, onDataMessage, subscribe, unsubscribe};\n\nexport type {SubscriptionPayload};\n", "// @flow\n\nimport notifierCancel from \"./notifier/cancel\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierRemove from \"./notifier/remove\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {unsubscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst cancelQueryOrMutationSending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutationIfSending = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? cancelQueryOrMutationSending(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelPending = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifierFlushCanceled(notifierCancel(notifier)))\n );\n\nconst cancelQueryOrMutation = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelQueryOrMutationIfSending(absintheSocket, notifier);\n\nconst unsubscribeIfNeeded = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sent\n ? unsubscribe(absintheSocket, notifier)\n : absintheSocket;\n\nconst cancelNonPendingSubscription = (absintheSocket, notifier) =>\n unsubscribeIfNeeded(\n absintheSocket,\n refreshNotifier(absintheSocket, notifierCancel(notifier))\n );\n\nconst cancelSubscription = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.pending\n ? cancelPending(absintheSocket, notifier)\n : cancelNonPendingSubscription(absintheSocket, notifier);\n\nconst cancelActive = (absintheSocket, notifier) =>\n notifier.operationType === \"subscription\"\n ? cancelSubscription(absintheSocket, notifier)\n : cancelQueryOrMutation(absintheSocket, notifier);\n\n/**\n * Cancels a notifier sending a Cancel event to all its observers and\n * unsubscribing in case it holds a subscription request\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.cancel(absintheSocket, notifier);\n */\nconst cancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n): AbsintheSocket =>\n notifier.isActive ? cancelActive(absintheSocket, notifier) : absintheSocket;\n\nexport default cancel;\n", "// @flow\n\nimport type {GqlResponse} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport notifierNotifyResultEvent from \"./notifier/notifyResultEvent\";\nimport notifierNotifyStartEvent from \"./notifier/notifyStartEvent\";\nimport notifierRemove from \"./notifier/remove\";\nimport pushRequestUsing from \"./pushRequestUsing\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport {subscribe} from \"./subscription\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst setNotifierRequestStatusSent = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, {\n ...notifier,\n requestStatus: requestStatuses.sent\n });\n\nconst onQueryOrMutationSucceed = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n response: GqlResponse\n) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(\n notifierNotifyResultEvent(\n setNotifierRequestStatusSent(absintheSocket, notifier),\n response\n )\n )\n );\n\nconst pushQueryOrMutation = (absintheSocket, notifier) =>\n pushRequestUsing(\n absintheSocket,\n notifierNotifyStartEvent(notifier),\n onQueryOrMutationSucceed\n );\n\nconst pushRequest = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier\n) => {\n if (notifier.operationType === \"subscription\") {\n subscribe(absintheSocket, notifier);\n } else {\n pushQueryOrMutation(absintheSocket, notifier);\n }\n};\n\nexport default pushRequest;\n", "// @flow\n\nimport handlePush from \"./handlePush\";\nimport notifierNotifyActive from \"./notifier/notifyActive\";\nimport pushRequest from \"./pushRequest\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst createChannelJoinError = message => new Error(`channel join: ${message}`);\n\nconst notifyErrorToAllActive = (absintheSocket, errorMessage) =>\n absintheSocket.notifiers.forEach(notifier =>\n notifierNotifyActive(\n notifier,\n createErrorEvent(createChannelJoinError(errorMessage))\n )\n );\n\n// join Push is reused and so the handler\n// https://github.com/phoenixframework/phoenix/blob/master/assets/js/phoenix.js#L356\nconst createChannelJoinHandler = absintheSocket => ({\n onError: (errorMessage: string) =>\n notifyErrorToAllActive(absintheSocket, errorMessage),\n\n onSucceed: () =>\n absintheSocket.notifiers.forEach(notifier =>\n pushRequest(absintheSocket, notifier)\n ),\n\n onTimeout: () => notifyErrorToAllActive(absintheSocket, \"timeout\")\n});\n\nconst joinChannel = (absintheSocket: AbsintheSocket) => {\n handlePush(\n absintheSocket.channel.join(),\n createChannelJoinHandler(absintheSocket)\n );\n\n absintheSocket.channelJoinCreated = true;\n\n return absintheSocket;\n};\n\nexport default joinChannel;\n", "// @flow\n\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nimport type {Message} from \"phoenix\";\n\nimport abortNotifier from \"./abortNotifier\";\nimport joinChannel from \"./joinChannel\";\nimport notifierNotify from \"./notifier/notify\";\nimport notifierRemove from \"./notifier/remove\";\nimport notifierReset from \"./notifier/reset\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport updateNotifiers from \"./updateNotifiers\";\nimport * as withSubscription from \"./subscription\";\nimport {createErrorEvent} from \"./notifier/event/eventCreators\";\n\nimport type {AbsintheSocket} from \"./types\";\n\nconst onMessage = absintheSocket => (message: Message<>) => {\n if (withSubscription.isDataMessage(message)) {\n withSubscription.onDataMessage(absintheSocket, message);\n }\n};\n\nconst createConnectionCloseError = () => new Error(\"connection: close\");\n\nconst notifyConnectionCloseError = notifier =>\n notifierNotify(notifier, createErrorEvent(createConnectionCloseError()));\n\nconst notifierOnConnectionCloseCanceled = (absintheSocket, notifier) =>\n updateNotifiers(\n absintheSocket,\n notifierRemove(notifyConnectionCloseError(notifier))\n );\n\nconst notifierOnConnectionCloseActive = (absintheSocket, notifier) => {\n if (notifier.operationType === \"mutation\") {\n abortNotifier(absintheSocket, notifier, createConnectionCloseError());\n } else {\n refreshNotifier(\n absintheSocket,\n notifierReset(notifyConnectionCloseError(notifier))\n );\n }\n};\n\nconst notifierOnConnectionClose = absintheSocket => notifier => {\n if (notifier.isActive) {\n notifierOnConnectionCloseActive(absintheSocket, notifier);\n } else {\n notifierOnConnectionCloseCanceled(absintheSocket, notifier);\n }\n};\n\nconst onConnectionClose = absintheSocket => () =>\n absintheSocket.notifiers.forEach(notifierOnConnectionClose(absintheSocket));\n\nconst shouldJoinChannel = absintheSocket =>\n !absintheSocket.channelJoinCreated && absintheSocket.notifiers.length > 0;\n\nconst onConnectionOpen = absintheSocket => () => {\n if (shouldJoinChannel(absintheSocket)) {\n joinChannel(absintheSocket);\n }\n};\n\nconst absintheChannelName = \"__absinthe__:control\";\n\n/**\n * Creates an Absinthe Socket using the given Phoenix Socket instance\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n * import {Socket as PhoenixSocket} from \"phoenix\";\n\n * const absintheSocket = withAbsintheSocket.create(\n * new PhoenixSocket(\"ws://localhost:4000/socket\")\n * );\n */\nconst create = (phoenixSocket: PhoenixSocket): AbsintheSocket => {\n const absintheSocket: AbsintheSocket = {\n phoenixSocket,\n channel: phoenixSocket.channel(absintheChannelName),\n channelJoinCreated: false,\n notifiers: []\n };\n\n phoenixSocket.onOpen(onConnectionOpen(absintheSocket));\n phoenixSocket.onClose(onConnectionClose(absintheSocket));\n phoenixSocket.onMessage(onMessage(absintheSocket));\n\n return absintheSocket;\n};\n\nexport default create;\n", "// @flow\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst observe = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: [...activeObservers, observer],\n isActive: true\n});\n\nexport default observe;\n", "// @flow\n\nimport notifierObserve from \"./notifier/observe\";\nimport refreshNotifier from \"./refreshNotifier\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\n/**\n * Observes given notifier using the provided observer\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\"\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n * onAbort: logEvent(\"abort\"),\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * onResult: logEvent(\"result\")\n * });\n */\nconst observe = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) => refreshNotifier(absintheSocket, notifierObserve(notifier, observer));\n\nexport default observe;\n", "// @flow\n\nimport {getOperationType} from \"@jumpn/utils-graphql\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport requestStatuses from \"./requestStatuses\";\n\nimport type {Notifier} from \"./types\";\n\nconst createUsing = (request, operationType) => ({\n operationType,\n request,\n activeObservers: [],\n canceledObservers: [],\n isActive: true,\n requestStatus: requestStatuses.pending,\n subscriptionId: undefined\n});\n\nconst create = (\n request: GqlRequest\n): Notifier> =>\n createUsing(request, getOperationType(request.operation));\n\nexport default create;\n", "// @flow\n\nimport type {Notifier} from \"./types\";\n\nconst reactivate = (\n notifier: Notifier\n) => (notifier.isActive ? notifier : {...notifier, isActive: true});\n\nexport default reactivate;\n", "// @flow\n\nimport {append} from \"@jumpn/utils-array\";\n\nimport type {GqlRequest} from \"@jumpn/utils-graphql/compat/cjs/types\";\n\nimport joinChannel from \"./joinChannel\";\nimport notifierCreate from \"./notifier/create\";\nimport notifierFind from \"./notifier/find\";\nimport notifierFlushCanceled from \"./notifier/flushCanceled\";\nimport notifierReactivate from \"./notifier/reactivate\";\nimport pushRequest from \"./pushRequest\";\nimport refreshNotifier from \"./refreshNotifier\";\nimport requestStatuses from \"./notifier/requestStatuses\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier} from \"./notifier/types\";\n\nconst connectOrJoinChannel = absintheSocket => {\n if (absintheSocket.phoenixSocket.isConnected()) {\n joinChannel(absintheSocket);\n } else {\n // socket ignores connect calls if a connection has already been created\n absintheSocket.phoenixSocket.connect();\n }\n};\n\nconst sendNew = (absintheSocket, request) => {\n const notifier = notifierCreate(request);\n\n updateNotifiers(absintheSocket, append([notifier]));\n\n if (absintheSocket.channelJoinCreated) {\n pushRequest(absintheSocket, notifier);\n } else {\n connectOrJoinChannel(absintheSocket);\n }\n\n return notifier;\n};\n\nconst updateCanceledReactivate = (absintheSocket, notifier) =>\n refreshNotifier(absintheSocket, notifierReactivate(notifier));\n\nconst updateCanceled = (absintheSocket, notifier) =>\n notifier.requestStatus === requestStatuses.sending\n ? updateCanceledReactivate(absintheSocket, notifierFlushCanceled(notifier))\n : updateCanceledReactivate(absintheSocket, notifier);\n\nconst updateIfCanceled = (absintheSocket, notifier) =>\n notifier.isActive ? notifier : updateCanceled(absintheSocket, notifier);\n\nconst getExistentIfAny = (absintheSocket, request) => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n return notifier && updateIfCanceled(absintheSocket, notifier);\n};\n\n/**\n * Sends given request and returns an object (notifier) to track its progress\n * (see observe function)\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const operation = `\n * subscription userSubscription($userId: ID!) {\n * user(userId: $userId) {\n * id\n * name\n * }\n * }\n * `;\n *\n * // This example uses a subscription, but the functionallity is the same for\n * // all operation types (queries, mutations and subscriptions)\n *\n * const notifier = withAbsintheSocket.send(absintheSocket, {\n * operation,\n * variables: {userId: 10}\n * });\n */\nconst send = (\n absintheSocket: AbsintheSocket,\n request: GqlRequest\n): Notifier =>\n getExistentIfAny(absintheSocket, request) || sendNew(absintheSocket, request);\n\nexport default send;\n", "// @flow\n\nimport Observable from \"zen-observable\";\n\nimport notifierFind from \"./notifier/find\";\nimport observe from \"./observe\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\ntype Options = {|\n onError: $ElementType, \"onError\">,\n onStart: $ElementType, \"onStart\">,\n unsubscribe: (\n absintheSocket: AbsintheSocket,\n notifier?: Notifier,\n observer?: Observer\n ) => void\n|};\n\n// prettier-ignore\nconst getUnsubscriber = (absintheSocket, {request}, observer, unsubscribe) =>\n () => {\n const notifier = notifierFind(absintheSocket.notifiers, \"request\", request);\n\n unsubscribe(absintheSocket, notifier, notifier ? observer: undefined);\n };\n\nconst onResult = ({operationType}, observableObserver) => result => {\n observableObserver.next(result);\n\n if (operationType !== \"subscription\") {\n observableObserver.complete();\n }\n};\n\nconst createObserver = (notifier, handlers, observableObserver) => ({\n ...handlers,\n onAbort: observableObserver.error.bind(observableObserver),\n onResult: onResult(notifier, observableObserver)\n});\n\n/**\n * Creates an Observable that will follow the given notifier\n *\n * @param {AbsintheSocket} absintheSocket\n * @param {Notifier} notifier\n * @param {Object} [options]\n * @param {function(error: Error): undefined} [options.onError]\n * @param {function(notifier: Notifier): undefined} [options.onStart]\n * @param {function(): undefined} [options.unsubscribe]\n *\n * @return {Observable}\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * const unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n * if (notifier && observer) {\n * withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n * }\n * };\n *\n * const logEvent = eventName => (...args) => console.log(eventName, ...args);\n *\n * const observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n * onError: logEvent(\"error\"),\n * onStart: logEvent(\"open\"),\n * unsubscribe: unobserveOrCancelIfNeeded\n * });\n */\nconst toObservable = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n {unsubscribe, ...handlers}: $Shape> = {}\n) =>\n new Observable(observableObserver => {\n const observer = createObserver(notifier, handlers, observableObserver);\n\n observe(absintheSocket, notifier, observer);\n\n return (\n unsubscribe &&\n getUnsubscriber(absintheSocket, notifier, observer, unsubscribe)\n );\n });\n\nexport default toObservable;\n", "// @flow\n\nimport {remove as arrayRemove} from \"@jumpn/utils-array\";\n\nimport type {Notifier, Observer} from \"./types\";\n\nconst removeObserver = (observers, observer) =>\n arrayRemove(observers.indexOf(observer), 1, observers);\n\nconst unobserve = (\n {activeObservers, ...rest}: Notifier,\n observer: Observer\n) => ({\n ...rest,\n activeObservers: removeObserver(activeObservers, observer)\n});\n\nexport default unobserve;\n", "// @flow\n\nimport notifierRefresh from \"./notifier/refresh\";\nimport notifierUnobserve from \"./notifier/unobserve\";\nimport updateNotifiers from \"./updateNotifiers\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst ensureHasActiveObserver = (notifier, observer) => {\n if (notifier.activeObservers.includes(observer)) return notifier;\n\n throw new Error(\"Observer is not attached to notifier\");\n};\n\n/**\n * Detaches observer from notifier\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserve = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n): AbsintheSocket =>\n updateNotifiers(\n absintheSocket,\n notifierRefresh(\n notifierUnobserve(ensureHasActiveObserver(notifier, observer), observer)\n )\n );\n\nexport default unobserve;\n", "// @flow\n\nimport cancel from \"./cancel\";\nimport unobserve from \"./unobserve\";\n\nimport type {AbsintheSocket} from \"./types\";\nimport type {Notifier, Observer} from \"./notifier/types\";\n\nconst doUnobserveOrCancel = (absintheSocket, notifier, observer) =>\n notifier.activeObservers.length === 1\n ? cancel(absintheSocket, notifier)\n : unobserve(absintheSocket, notifier, observer);\n\n/**\n * Cancels notifier if there are no more observers apart from the one given, or\n * detaches given observer from notifier otherwise\n *\n * @example\n * import * as withAbsintheSocket from \"@absinthe/socket\";\n *\n * withAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n */\nconst unobserveOrCancel = (\n absintheSocket: AbsintheSocket,\n notifier: Notifier,\n observer: Observer\n) =>\n notifier.isActive\n ? doUnobserveOrCancel(absintheSocket, notifier, observer)\n : absintheSocket;\n\nexport default unobserveOrCancel;\n", "const { Socket } = require(\"phoenix\");\nconst WebSocket = require(\"isomorphic-ws\");\n\n//Use ES5 require, as ES6 import causes `Cannot instantiate an arrow function` error\nconst withAbsintheSocket = require(\"@absinthe/socket\");\n\nmodule.exports.absintheCreate = function (uri) {\n const webSocket = new Socket(uri, {\n transport: WebSocket,\n });\n\n return withAbsintheSocket.create(webSocket);\n}\n\nmodule.exports.absintheSend = function (absintheSocket, operation) {\n return withAbsintheSocket.send(absintheSocket, { operation });\n}\n\nmodule.exports.absintheObserve = function (absintheSocket, notifier, onResultCallback) {\n\n return new Promise((resolve, reject) => {\n withAbsintheSocket.observe(absintheSocket, notifier, {\n onStart: function () {\n resolve(notifier);\n },\n onError: function (err) {\n withAbsintheSocket.cancel(absintheSocket, notifier);\n reject(err);\n },\n\n onResult: function (result) {\n onResultCallback(result)\n },\n });\n })\n}\n\nmodule.exports.absintheCancel = function (absintheSocket, notifier) {\n\n withAbsintheSocket.cancel(\n absintheSocket,\n notifier\n );\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", "module.exports = require('events').EventEmitter;\n", "", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();", "'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;", "module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;", "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n", "var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n", "var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n", "var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n", "var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n", "var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n", "'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n", "var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n", "'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n", "module.exports = require('./browser/algorithms.json')\n", "var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n", "var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n", "var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n", "var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n", "exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n", "'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\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\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\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", "'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", "var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n", "exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n", "var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n", "var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n", "var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n", "var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n", "var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n", "// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n", "var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho V\u00E4h\u00E4-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n", "var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\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", "var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n", "var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n", "var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n", "var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n", "", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\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", "var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n", "var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\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", "'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", "'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 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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\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", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n", "'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n", "'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n", "'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n", "'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n", "'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n", "'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n", "'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n", "'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n", "'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n", "'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n", "// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n", "// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n", "// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n", "var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n", "// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n", "var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n", "var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n", "var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n", "module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n", "var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n", "var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n", "var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n", "exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n", "'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n", "'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "assert.notEqual = notEqual\nassert.notOk = notOk\nassert.equal = equal\nassert.ok = assert\n\nmodule.exports = assert\n\nfunction equal (a, b, m) {\n assert(a == b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notEqual (a, b, m) {\n assert(a != b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notOk (t, m) {\n assert(!t, m)\n}\n\nfunction assert (t, m) {\n if (!t) throw new Error(m || 'AssertionError')\n}\n", "\nmodule.exports = loadWebAssembly\n\nloadWebAssembly.supported = typeof WebAssembly !== 'undefined'\n\nfunction loadWebAssembly (opts) {\n if (!loadWebAssembly.supported) return null\n\n var imp = opts && opts.imports\n var wasm = toUint8Array('AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMK00AElgMAIABCADcDACAAQQhqQgA3AwAgAEEQakIANwMAIABBGGpCADcDACAAQSBqQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB0ABqQgA3AwAgAEHYAGpCADcDACAAQeAAakIANwMAIABB6ABqQgA3AwAgAEHwAGpCADcDACAAQfgAakIANwMAIABBgAFqQoiS853/zPmE6gBBACkDAIU3AwAgAEGIAWpCu86qptjQ67O7f0EIKQMAhTcDACAAQZABakKr8NP0r+68tzxBECkDAIU3AwAgAEGYAWpC8e30+KWn/aelf0EYKQMAhTcDACAAQaABakLRhZrv+s+Uh9EAQSApAwCFNwMAIABBqAFqQp/Y+dnCkdqCm39BKCkDAIU3AwAgAEGwAWpC6/qG2r+19sEfQTApAwCFNwMAIABBuAFqQvnC+JuRo7Pw2wBBOCkDAIU3AwAgAEHAAWpCADcDACAAQcgBakIANwMAIABB0AFqQgA3AwALbQEDfyAAQcABaiEDIABByAFqIQQgBCkDAKchBQJAA0AgASACRg0BIAVBgAFGBEAgAyADKQMAIAWtfDcDAEEAIQUgABADCyAAIAVqIAEtAAA6AAAgBUEBaiEFIAFBAWohAQwACwsgBCAFrTcDAAtkAQN/IABBwAFqIQEgAEHIAWohAiABIAEpAwAgAikDAHw3AwAgAEHQAWpCfzcDACACKQMApyEDAkADQCADQYABRg0BIAAgA2pBADoAACADQQFqIQMMAAsLIAIgA603AwAgABADC+U7AiB+CX8gAEGAAWohISAAQYgBaiEiIABBkAFqISMgAEGYAWohJCAAQaABaiElIABBqAFqISYgAEGwAWohJyAAQbgBaiEoICEpAwAhASAiKQMAIQIgIykDACEDICQpAwAhBCAlKQMAIQUgJikDACEGICcpAwAhByAoKQMAIQhCiJLznf/M+YTqACEJQrvOqqbY0Ouzu38hCkKr8NP0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')\n var ready = null\n\n var mod = {\n buffer: wasm,\n memory: null,\n exports: null,\n realloc: realloc,\n onload: onload\n }\n\n onload(function () {})\n\n return mod\n\n function realloc (size) {\n mod.exports.memory.grow(Math.ceil(Math.abs(size - mod.memory.length) / 65536))\n mod.memory = new Uint8Array(mod.exports.memory.buffer)\n }\n\n function onload (cb) {\n if (mod.exports) return cb()\n\n if (ready) {\n ready.then(cb.bind(null, null)).catch(cb)\n return\n }\n\n try {\n if (opts && opts.async) throw new Error('async')\n setup({instance: new WebAssembly.Instance(new WebAssembly.Module(wasm), imp)})\n } catch (err) {\n ready = WebAssembly.instantiate(wasm, imp).then(setup)\n }\n\n onload(cb)\n }\n\n function setup (w) {\n mod.exports = w.instance.exports\n mod.memory = mod.exports.memory && mod.exports.memory.buffer && new Uint8Array(mod.exports.memory.buffer)\n }\n}\n\nfunction toUint8Array (s) {\n if (typeof atob === 'function') return new Uint8Array(atob(s).split('').map(charCodeAt))\n return new (require('buf' + 'fer').Buffer)(s, 'base64')\n}\n\nfunction charCodeAt (c) {\n return c.charCodeAt(0)\n}\n", "var assert = require('nanoassert')\nvar wasm = require('./blake2b')()\n\nvar head = 64\nvar freeList = []\n\nmodule.exports = Blake2b\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nfunction Blake2b (digestLength, key, salt, personal, noAssert) {\n if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)\n if (!(wasm && wasm.exports)) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')\n if (!digestLength) digestLength = 32\n\n if (noAssert !== true) {\n assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)\n assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n if (!freeList.length) {\n freeList.push(head)\n head += 216\n }\n\n this.digestLength = digestLength\n this.finalized = false\n this.pointer = freeList.pop()\n\n wasm.memory.fill(0, 0, 64)\n wasm.memory[0] = this.digestLength\n wasm.memory[1] = key ? key.length : 0\n wasm.memory[2] = 1 // fanout\n wasm.memory[3] = 1 // depth\n\n if (salt) wasm.memory.set(salt, 32)\n if (personal) wasm.memory.set(personal, 48)\n\n if (this.pointer + 216 > wasm.memory.length) wasm.realloc(this.pointer + 216) // we need 216 bytes for the state\n wasm.exports.blake2b_init(this.pointer, this.digestLength)\n\n if (key) {\n this.update(key)\n wasm.memory.fill(0, head, head + key.length) // whiteout key\n wasm.memory[this.pointer + 200] = 128\n }\n}\n\n\nBlake2b.prototype.update = function (input) {\n assert(this.finalized === false, 'Hash instance finalized')\n assert(input, 'input must be TypedArray or Buffer')\n\n if (head + input.length > wasm.memory.length) wasm.realloc(head + input.length)\n wasm.memory.set(input, head)\n wasm.exports.blake2b_update(this.pointer, head, head + input.length)\n return this\n}\n\nBlake2b.prototype.digest = function (enc) {\n assert(this.finalized === false, 'Hash instance finalized')\n this.finalized = true\n\n freeList.push(this.pointer)\n wasm.exports.blake2b_final(this.pointer)\n\n if (!enc || enc === 'binary') {\n return wasm.memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)\n }\n\n if (enc === 'hex') {\n return hexSlice(wasm.memory, this.pointer + 128, this.digestLength)\n }\n\n assert(enc.length >= this.digestLength, 'input must be TypedArray or Buffer')\n for (var i = 0; i < this.digestLength; i++) {\n enc[i] = wasm.memory[this.pointer + 128 + i]\n }\n\n return enc\n}\n\n// libsodium compat\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.WASM = wasm && wasm.buffer\nBlake2b.SUPPORTED = typeof WebAssembly !== 'undefined'\n\nBlake2b.ready = function (cb) {\n if (!cb) cb = noop\n if (!wasm) return cb(new Error('WebAssembly not supported'))\n\n // backwards compat, can be removed in a new major\n var p = new Promise(function (reject, resolve) {\n wasm.onload(function (err) {\n if (err) resolve()\n else reject()\n cb(err)\n })\n })\n\n return p\n}\n\nBlake2b.prototype.ready = Blake2b.ready\n\nfunction noop () {}\n\nfunction hexSlice (buf, start, len) {\n var str = ''\n for (var i = 0; i < len; i++) str += toHex(buf[start + i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n", "var assert = require('nanoassert')\nvar b2wasm = require('blake2b-wasm')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n}\n\n// reusable parameter_block\nvar parameter_block = new Uint8Array([\n 0, 0, 0, 0, // 0: outlen, keylen, fanout, depth\n 0, 0, 0, 0, // 4: leaf length, sequential mode\n 0, 0, 0, 0, // 8: node offset\n 0, 0, 0, 0, // 12: node offset\n 0, 0, 0, 0, // 16: node depth, inner length, rfu\n 0, 0, 0, 0, // 20: rfu\n 0, 0, 0, 0, // 24: rfu\n 0, 0, 0, 0, // 28: rfu\n 0, 0, 0, 0, // 32: salt\n 0, 0, 0, 0, // 36: salt\n 0, 0, 0, 0, // 40: salt\n 0, 0, 0, 0, // 44: salt\n 0, 0, 0, 0, // 48: personal\n 0, 0, 0, 0, // 52: personal\n 0, 0, 0, 0, // 56: personal\n 0, 0, 0, 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction Blake2b (outlen, key, salt, personal) {\n // zero out parameter_block before usage\n parameter_block.fill(0)\n // state, 'param block'\n\n this.b = new Uint8Array(128)\n this.h = new Uint32Array(16)\n this.t = 0 // input count\n this.c = 0 // pointer within buffer\n this.outlen = outlen // output length in bytes\n\n parameter_block[0] = outlen\n if (key) parameter_block[1] = key.length\n parameter_block[2] = 1 // fanout\n parameter_block[3] = 1 // depth\n\n if (salt) parameter_block.set(salt, 32)\n if (personal) parameter_block.set(personal, 48)\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(this, key)\n // at the end\n this.c = 128\n }\n}\n\nBlake2b.prototype.update = function (input) {\n assert(input != null, 'input must be Uint8Array or Buffer')\n blake2bUpdate(this, input)\n return this\n}\n\nBlake2b.prototype.digest = function (out) {\n var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out\n assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')\n blake2bFinal(this, buf)\n if (out === 'hex') return hexSlice(buf)\n return buf\n}\n\nBlake2b.prototype.final = Blake2b.prototype.digest\n\nBlake2b.ready = function (cb) {\n b2wasm.ready(function () {\n cb() // ignore the error\n })\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx, out) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\nfunction hexSlice (buf) {\n var str = ''\n for (var i = 0; i < buf.length; i++) str += toHex(buf[i])\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nvar Proto = Blake2b\n\nmodule.exports = function createHash (outlen, key, salt, personal, noAssert) {\n if (noAssert !== true) {\n assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)\n assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)\n if (key != null) assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)\n if (key != null) assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)\n if (salt != null) assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)\n if (personal != null) assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)\n }\n\n return new Proto(outlen, key, salt, personal)\n}\n\nmodule.exports.ready = function (cb) {\n b2wasm.ready(function () { // ignore errors\n cb()\n })\n}\n\nmodule.exports.WASM_SUPPORTED = b2wasm.SUPPORTED\nmodule.exports.WASM_LOADED = false\n\nvar BYTES_MIN = module.exports.BYTES_MIN = 16\nvar BYTES_MAX = module.exports.BYTES_MAX = 64\nvar BYTES = module.exports.BYTES = 32\nvar KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16\nvar KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64\nvar KEYBYTES = module.exports.KEYBYTES = 32\nvar SALTBYTES = module.exports.SALTBYTES = 16\nvar PERSONALBYTES = module.exports.PERSONALBYTES = 16\n\nb2wasm.ready(function (err) {\n if (!err) {\n module.exports.WASM_LOADED = true\n Proto = b2wasm\n }\n})\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _0 = new Uint8Array(16);\nlet _9 = new Uint8Array(32);\n_9[0] = 9;\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if (init)\n for (i = 0; i < init.length; i++)\n r[i] = init[i];\n return r;\n}\n;\nconst gf0 = gf(), gf1 = gf([1]), _121665 = gf([0xdb41, 1]), D = gf([\n 0x78a3,\n 0x1359,\n 0x4dca,\n 0x75eb,\n 0xd8ab,\n 0x4141,\n 0x0a4d,\n 0x0070,\n 0xe898,\n 0x7779,\n 0x4079,\n 0x8cc7,\n 0xfe73,\n 0x2b6f,\n 0x6cee,\n 0x5203,\n]), D2 = gf([\n 0xf159,\n 0x26b2,\n 0x9b94,\n 0xebd6,\n 0xb156,\n 0x8283,\n 0x149a,\n 0x00e0,\n 0xd130,\n 0xeef3,\n 0x80f2,\n 0x198e,\n 0xfce7,\n 0x56df,\n 0xd9dc,\n 0x2406,\n]), X = gf([\n 0xd51a,\n 0x8f25,\n 0x2d60,\n 0xc956,\n 0xa7b2,\n 0x9525,\n 0xc760,\n 0x692c,\n 0xdc5c,\n 0xfdd6,\n 0xe231,\n 0xc0a4,\n 0x53fe,\n 0xcd6e,\n 0x36d3,\n 0x2169,\n]), Y = gf([\n 0x6658,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n 0x6666,\n]), I = gf([\n 0xa0b0,\n 0x4a0e,\n 0x1b27,\n 0xc4ee,\n 0xe478,\n 0xad2f,\n 0x1806,\n 0x2f43,\n 0xd7a7,\n 0x3dfb,\n 0x0099,\n 0x2b4d,\n 0xdf0b,\n 0x4fc1,\n 0x2480,\n 0x2b83,\n]);\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i + 1] = (h >> 16) & 0xff;\n x[i + 2] = (h >> 8) & 0xff;\n x[i + 3] = h & 0xff;\n x[i + 4] = (l >> 24) & 0xff;\n x[i + 5] = (l >> 16) & 0xff;\n x[i + 6] = (l >> 8) & 0xff;\n x[i + 7] = l & 0xff;\n}\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++)\n d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++)\n r[i] = a[i] | 0;\n}\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++)\n t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++)\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n o[15] &= 0x7fff;\n}\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++)\n o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction S(o, a) {\n M(o, a, a);\n}\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if (a !== 2 && a !== 4)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++)\n c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1)\n M(c, c, i);\n }\n for (a = 0; a < 16; a++)\n o[a] = c[a];\n}\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++)\n z[i] = n[i];\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (i = 0; i < 16; i++) {\n b[i] = x[i];\n d[i] = a[i] = c[i] = 0;\n }\n a[0] = d[0] = 1;\n for (i = 254; i >= 0; --i) {\n r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n A(e, a, c);\n Z(a, a, c);\n A(c, b, d);\n Z(b, b, d);\n S(d, e);\n S(f, a);\n M(a, c, a);\n M(c, b, e);\n A(e, a, c);\n Z(a, a, c);\n S(b, a);\n Z(c, d, f);\n M(a, c, _121665);\n A(a, a, d);\n M(c, c, a);\n M(a, d, f);\n M(d, b, x);\n S(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32, x32);\n M(x16, x16, x32);\n pack25519(q, x16);\n return 0;\n}\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\nvar K = [\n 0x428a2f98,\n 0xd728ae22,\n 0x71374491,\n 0x23ef65cd,\n 0xb5c0fbcf,\n 0xec4d3b2f,\n 0xe9b5dba5,\n 0x8189dbbc,\n 0x3956c25b,\n 0xf348b538,\n 0x59f111f1,\n 0xb605d019,\n 0x923f82a4,\n 0xaf194f9b,\n 0xab1c5ed5,\n 0xda6d8118,\n 0xd807aa98,\n 0xa3030242,\n 0x12835b01,\n 0x45706fbe,\n 0x243185be,\n 0x4ee4b28c,\n 0x550c7dc3,\n 0xd5ffb4e2,\n 0x72be5d74,\n 0xf27b896f,\n 0x80deb1fe,\n 0x3b1696b1,\n 0x9bdc06a7,\n 0x25c71235,\n 0xc19bf174,\n 0xcf692694,\n 0xe49b69c1,\n 0x9ef14ad2,\n 0xefbe4786,\n 0x384f25e3,\n 0x0fc19dc6,\n 0x8b8cd5b5,\n 0x240ca1cc,\n 0x77ac9c65,\n 0x2de92c6f,\n 0x592b0275,\n 0x4a7484aa,\n 0x6ea6e483,\n 0x5cb0a9dc,\n 0xbd41fbd4,\n 0x76f988da,\n 0x831153b5,\n 0x983e5152,\n 0xee66dfab,\n 0xa831c66d,\n 0x2db43210,\n 0xb00327c8,\n 0x98fb213f,\n 0xbf597fc7,\n 0xbeef0ee4,\n 0xc6e00bf3,\n 0x3da88fc2,\n 0xd5a79147,\n 0x930aa725,\n 0x06ca6351,\n 0xe003826f,\n 0x14292967,\n 0x0a0e6e70,\n 0x27b70a85,\n 0x46d22ffc,\n 0x2e1b2138,\n 0x5c26c926,\n 0x4d2c6dfc,\n 0x5ac42aed,\n 0x53380d13,\n 0x9d95b3df,\n 0x650a7354,\n 0x8baf63de,\n 0x766a0abb,\n 0x3c77b2a8,\n 0x81c2c92e,\n 0x47edaee6,\n 0x92722c85,\n 0x1482353b,\n 0xa2bfe8a1,\n 0x4cf10364,\n 0xa81a664b,\n 0xbc423001,\n 0xc24b8b70,\n 0xd0f89791,\n 0xc76c51a3,\n 0x0654be30,\n 0xd192e819,\n 0xd6ef5218,\n 0xd6990624,\n 0x5565a910,\n 0xf40e3585,\n 0x5771202a,\n 0x106aa070,\n 0x32bbd1b8,\n 0x19a4c116,\n 0xb8d2d0c8,\n 0x1e376c08,\n 0x5141ab53,\n 0x2748774c,\n 0xdf8eeb99,\n 0x34b0bcb5,\n 0xe19b48a8,\n 0x391c0cb3,\n 0xc5c95a63,\n 0x4ed8aa4a,\n 0xe3418acb,\n 0x5b9cca4f,\n 0x7763e373,\n 0x682e6ff3,\n 0xd6b2b8a3,\n 0x748f82ee,\n 0x5defb2fc,\n 0x78a5636f,\n 0x43172f60,\n 0x84c87814,\n 0xa1f0ab72,\n 0x8cc70208,\n 0x1a6439ec,\n 0x90befffa,\n 0x23631e28,\n 0xa4506ceb,\n 0xde82bde9,\n 0xbef9a3f7,\n 0xb2c67915,\n 0xc67178f2,\n 0xe372532b,\n 0xca273ece,\n 0xea26619c,\n 0xd186b8c7,\n 0x21c0c207,\n 0xeada7dd6,\n 0xcde0eb1e,\n 0xf57d4f7f,\n 0xee6ed178,\n 0x06f067aa,\n 0x72176fba,\n 0x0a637dc5,\n 0xa2c898a6,\n 0x113f9804,\n 0xbef90dae,\n 0x1b710b35,\n 0x131c471b,\n 0x28db77f5,\n 0x23047d84,\n 0x32caab7b,\n 0x40c72493,\n 0x3c9ebe0a,\n 0x15c9bebc,\n 0x431d67c4,\n 0x9c100d4c,\n 0x4cc5d4be,\n 0xcb3e42b6,\n 0x597f299c,\n 0xfc657e2a,\n 0x5fcb6fab,\n 0x3ad6faec,\n 0x6c44198c,\n 0x4a475817,\n];\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3];\n wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h =\n ((ah4 >>> 14) | (al4 << (32 - 14))) ^\n ((ah4 >>> 18) | (al4 << (32 - 18))) ^\n ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l =\n ((al4 >>> 14) | (ah4 << (32 - 14))) ^\n ((al4 >>> 18) | (ah4 << (32 - 18))) ^\n ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = (c & 0xffff) | (d << 16);\n tl = (a & 0xffff) | (b << 16);\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h =\n ((ah0 >>> 28) | (al0 << (32 - 28))) ^\n ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^\n ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l =\n ((al0 >>> 28) | (ah0 << (32 - 28))) ^\n ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^\n ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l =\n ((tl >>> 19) | (th << (32 - 19))) ^\n ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^\n ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n n -= 128;\n }\n return n;\n}\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n for (i = 0; i < n; i++)\n x[i] = m[b - n + i];\n x[n] = 128;\n n = 256 - 128 * (n < 112 ? 1 : 0);\n x[n - 9] = 0;\n ts64(x, n - 8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n for (i = 0; i < 8; i++)\n ts64(out, 8 * i, hh[i], hl[i]);\n return 0;\n}\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\nvar L = new Float64Array([\n 0xed,\n 0xd3,\n 0xf5,\n 0x5c,\n 0x1a,\n 0x63,\n 0x12,\n 0x58,\n 0xd6,\n 0x9c,\n 0xf7,\n 0xa2,\n 0xde,\n 0xf9,\n 0xde,\n 0x14,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0x10,\n]);\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++)\n x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++)\n x[i] = r[i];\n for (i = 0; i < 64; i++)\n r[i] = 0;\n modL(r, x);\n}\n// Like crypto_sign, but uses secret key directly in hash.\nfunction crypto_sign_direct(sm, m, n, sk) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n crypto_hash(r, sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32), x);\n return n + 64;\n}\n// Note: sm must be n+128.\nfunction crypto_sign_direct_rnd(sm, m, n, sk, rnd) {\n var h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n // Hash separation.\n sm[0] = 0xfe;\n for (i = 1; i < 32; i++)\n sm[i] = 0xff;\n // Secret key.\n for (i = 0; i < 32; i++)\n sm[32 + i] = sk[i];\n // Message.\n for (i = 0; i < n; i++)\n sm[64 + i] = m[i];\n // Random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = rnd[i];\n crypto_hash(r, sm, n + 128);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n for (i = 0; i < 32; i++)\n sm[i + 32] = sk[32 + i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n // Wipe out random suffix.\n for (i = 0; i < 64; i++)\n sm[n + 64 + i] = 0;\n for (i = 0; i < 64; i++)\n x[i] = 0;\n for (i = 0; i < 32; i++)\n x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i + j] += h[i] * sk[j];\n }\n }\n modL(sm.subarray(32, n + 64), x);\n return n + 64;\n}\nfunction curve25519_sign(sm, m, n, sk, opt_rnd) {\n // If opt_rnd is provided, sm must have n + 128,\n // otherwise it must have n + 64 bytes.\n // Convert Curve25519 secret key into Ed25519 secret key (includes pub key).\n var edsk = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n for (var i = 0; i < 32; i++)\n edsk[i] = sk[i];\n // Ensure private key is in the correct format.\n edsk[0] &= 248;\n edsk[31] &= 127;\n edsk[31] |= 64;\n scalarbase(p, edsk);\n pack(edsk.subarray(32), p);\n // Remember sign bit.\n var signBit = edsk[63] & 128;\n var smlen;\n if (opt_rnd) {\n smlen = crypto_sign_direct_rnd(sm, m, n, edsk, opt_rnd);\n }\n else {\n smlen = crypto_sign_direct(sm, m, n, edsk);\n }\n // Copy sign bit from public key into signature.\n sm[63] |= signBit;\n return smlen;\n}\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n M(r[0], r[0], I);\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num))\n return -1;\n if (par25519(r[0]) === p[31] >> 7)\n Z(r[0], gf0, r[0]);\n M(r[3], r[0], r[1]);\n return 0;\n}\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];\n mlen = -1;\n if (n < 64)\n return -1;\n if (unpackneg(q, pk))\n return -1;\n for (i = 0; i < n; i++)\n m[i] = sm[i];\n for (i = 0; i < 32; i++)\n m[i + 32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++)\n m[i] = 0;\n return -1;\n }\n for (i = 0; i < n; i++)\n m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n// Converts Curve25519 public key back to Ed25519 public key.\n// edwardsY = (montgomeryX - 1) / (montgomeryX + 1)\nfunction convertPublicKey(pk) {\n var z = new Uint8Array(32), x = gf(), a = gf(), b = gf();\n unpack25519(x, pk);\n A(a, x, gf1);\n Z(b, x, gf1);\n inv25519(a, a);\n M(a, a, b);\n pack25519(z, a);\n return z;\n}\nfunction curve25519_sign_open(m, sm, n, pk) {\n // Convert Curve25519 public key into Ed25519 public key.\n var edpk = convertPublicKey(pk);\n // Restore sign bit from signature.\n edpk[31] |= sm[63] & 128;\n // Remove sign bit from signature.\n sm[63] &= 127;\n // Verify signed message.\n return crypto_sign_open(m, sm, n, edpk);\n}\n/* High-level API */\nfunction checkArrayTypes(...args) {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n/**\n * Returns a raw shared key between own private key and peer's public key (in other words, this is an ECC Diffie-Hellman function X25519, performing scalar multiplication).\n *\n * The result should not be used directly as a key, but should be processed with a one-way function (e.g. HSalsa20 as in NaCl, or any secure cryptographic hash function, such as SHA-256, or key derivation function, such as HKDF).\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {Uint8Array} publicKey\n * @returns Uint8Array\n */\nfunction sharedKey(secretKey, publicKey) {\n checkArrayTypes(publicKey, secretKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n var sharedKey = new Uint8Array(32);\n crypto_scalarmult(sharedKey, secretKey, publicKey);\n return sharedKey;\n}\nexports.sharedKey = sharedKey;\n/**\n * Signs the given message using the private key and returns a signed message (signature concatenated with the message copy).\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction signMessage(secretKey, msg, opt_random) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n var buf = new Uint8Array(128 + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n return new Uint8Array(buf.subarray(0, 64 + msg.length));\n }\n else {\n var signedMsg = new Uint8Array(64 + msg.length);\n curve25519_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n }\n}\nexports.signMessage = signMessage;\n/**\n * Verifies signed message with the public key and returns the original message without signature if it's correct or null if verification fails.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} signedMsg\n * @returns Message\n */\nfunction openMessage(publicKey, signedMsg) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = curve25519_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0)\n return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++)\n m[i] = tmp[i];\n return m;\n}\nexports.openMessage = openMessage;\n/**\n * Signs the given message using the private key and returns signature.\n *\n * Optional random data argument (which must have 64 random bytes) turns on hash separation and randomization to make signatures non-deterministic.\n *\n * @export\n * @param {Uint8Array} secretKey\n * @param {*} msg\n * @param {Uint8Array} opt_random\n * @returns\n */\nfunction sign(secretKey, msg, opt_random) {\n checkArrayTypes(secretKey, msg);\n if (secretKey.length !== 32)\n throw new Error('wrong secret key length');\n if (opt_random) {\n checkArrayTypes(opt_random);\n if (opt_random.length !== 64)\n throw new Error('wrong random data length');\n }\n var buf = new Uint8Array((opt_random ? 128 : 64) + msg.length);\n curve25519_sign(buf, msg, msg.length, secretKey, opt_random);\n var signature = new Uint8Array(64);\n for (var i = 0; i < signature.length; i++)\n signature[i] = buf[i];\n return signature;\n}\nexports.sign = sign;\n/**\n * Verifies the given signature for the message using the given private key. Returns true if the signature is valid, false otherwise.\n *\n * @export\n * @param {Uint8Array} publicKey\n * @param {*} msg\n * @param {*} signature\n * @returns\n */\nfunction verify(publicKey, msg, signature) {\n checkArrayTypes(msg, signature, publicKey);\n if (signature.length !== 64)\n throw new Error('wrong signature length');\n if (publicKey.length !== 32)\n throw new Error('wrong public key length');\n var sm = new Uint8Array(64 + msg.length);\n var m = new Uint8Array(64 + msg.length);\n var i;\n for (i = 0; i < 64; i++)\n sm[i] = signature[i];\n for (i = 0; i < msg.length; i++)\n sm[i + 64] = msg[i];\n return curve25519_sign_open(m, sm, sm.length, publicKey) >= 0;\n}\nexports.verify = verify;\n/**\n * Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object.\n *\n * The returned keys can be used for signing and key agreement.\n *\n * @export\n * @param {Uint8Array} seed required\n * @returns\n */\nfunction generateKeyPair(seed) {\n checkArrayTypes(seed);\n if (seed.length !== 32)\n throw new Error('wrong seed length');\n var sk = new Uint8Array(32);\n var pk = new Uint8Array(32);\n for (var i = 0; i < 32; i++)\n sk[i] = seed[i];\n crypto_scalarmult_base(pk, sk);\n // Turn secret key into the correct format.\n sk[0] &= 248;\n sk[31] &= 127;\n sk[31] |= 64;\n // Remove sign bit from public key.\n pk[31] &= 127;\n return {\n public: pk,\n private: sk,\n };\n}\nexports.generateKeyPair = generateKeyPair;\nexports.default = {};\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "/*\n * ed2curve: convert Ed25519 signing key pair into Curve25519\n * key pair suitable for Diffie-Hellman key exchange.\n *\n * Written by Dmitry Chestnykh in 2014. Public domain.\n */\n/* jshint newcap: false */\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f(require('tweetnacl'));\n else root.ed2curve = f(root.nacl);\n}(this, function(nacl) {\n 'use strict';\n if (!nacl) throw new Error('tweetnacl not loaded');\n\n // -- Operations copied from TweetNaCl.js. --\n\n var gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n };\n\n var gf0 = gf(),\n gf1 = gf([1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n function car25519(o) {\n var c;\n var i;\n for (i = 0; i < 16; i++) {\n o[i] += 65536;\n c = Math.floor(o[i] / 65536);\n o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0);\n o[i] -= (c * 65536);\n }\n }\n\n function sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n }\n\n function unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n }\n\n // addition\n function A(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0;\n }\n\n // subtraction\n function Z(o, a, b) {\n var i;\n for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0;\n }\n\n // multiplication\n function M(o, a, b) {\n var i, j, t = new Float64Array(31);\n for (i = 0; i < 31; i++) t[i] = 0;\n for (i = 0; i < 16; i++) {\n for (j = 0; j < 16; j++) {\n t[i+j] += a[i] * b[j];\n }\n }\n for (i = 0; i < 15; i++) {\n t[i] += 38 * t[i+16];\n }\n for (i = 0; i < 16; i++) o[i] = t[i];\n car25519(o);\n car25519(o);\n }\n\n // squaring\n function S(o, a) {\n M(o, a, a);\n }\n\n // inversion\n function inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i] >> 8;\n }\n }\n\n function par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n }\n\n function vn(x, xi, y, yi, n) {\n var i, d = 0;\n for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];\n return (1 & ((d - 1) >>> 8)) - 1;\n }\n\n function crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n }\n\n function neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n }\n\n function pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if (a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n }\n\n function set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i] | 0;\n }\n\n function unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31] >> 7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n }\n\n // ----\n\n // Converts Ed25519 public key to Curve25519 public key.\n // montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n function convertPublicKey(pk) {\n var z = new Uint8Array(32),\n q = [gf(), gf(), gf(), gf()],\n a = gf(), b = gf();\n\n if (unpackneg(q, pk)) return null; // reject invalid key\n\n var y = q[1];\n\n A(a, gf1, y);\n Z(b, gf1, y);\n inv25519(b, b);\n M(a, a, b);\n\n pack25519(z, a);\n return z;\n }\n\n // Converts Ed25519 secret key to Curve25519 secret key.\n function convertSecretKey(sk) {\n var d = new Uint8Array(64), o = new Uint8Array(32), i;\n nacl.lowlevel.crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n for (i = 0; i < 32; i++) o[i] = d[i];\n for (i = 0; i < 64; i++) d[i] = 0;\n return o;\n }\n\n function convertKeyPair(edKeyPair) {\n var publicKey = convertPublicKey(edKeyPair.publicKey);\n if (!publicKey) return null;\n return {\n publicKey: publicKey,\n secretKey: convertSecretKey(edKeyPair.secretKey)\n };\n }\n\n return {\n convertPublicKey: convertPublicKey,\n convertSecretKey: convertSecretKey,\n convertKeyPair: convertKeyPair,\n };\n\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n", "module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n", "import { getNearestEndpoints } from \"./lib/api.js\";\nimport * as Utils from \"./lib/utils.js\";\nimport * as Crypto from \"./lib/crypto.js\";\nimport Account from \"./lib/account.js\";\nimport Network from \"./lib/network.js\";\nimport Transaction from \"./lib/transaction.js\";\n\nexport { Utils, Crypto };\nexport default class Archethic {\n constructor(endpoint) {\n this.endpoint = new URL(endpoint);\n\n this.transaction = new Transaction(this);\n this.account = new Account(this);\n this.network = new Network(this);\n }\n\n async connect() {\n const nodes = await getNearestEndpoints(this.endpoint);\n this.nearestEndpoints = nodes.map(({ ip, port }) => {\n return `http://${ip}:${port}`;\n });\n\n return this;\n }\n\n async requestNode(call) {\n const node = this.nearestEndpoints[0];\n\n try {\n return await call(node);\n } catch (err) {\n console.error(err);\n this.nearestEndpoints.shift();\n if (this.nearestEndpoints.length == 0) {\n throw \"Cannot reach Archethic node\";\n }\n return this.requestNode(call);\n }\n }\n}\n", "import fetch from \"cross-fetch\";\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n} from \"./api/absinthe.cjs\";\nimport { isHex, uint8ArrayToHex } from \"./utils.js\";\n\nexport async function getNearestEndpoints(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n nearestEndpoints {\n ip,\n port\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.nearestEndpoints == null) {\n return [];\n } else {\n return res.data.nearestEndpoints;\n }\n });\n}\n\nexport async function getTransactionIndex(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n lastTransaction(address: \"${address}\") {\n chainLength\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.lastTransaction == null) {\n return 0;\n } else {\n return res.data.lastTransaction.chainLength;\n }\n });\n}\n\nexport async function getStorageNoncePublicKey(endpoint) {\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n sharedSecrets {\n storageNoncePublicKey\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data.sharedSecrets == null) {\n return \"\";\n } else {\n return res.data.sharedSecrets.storageNoncePublicKey;\n }\n });\n}\n\nexport async function getTransactionFee(tx, endpoint) {\n const url = new URL(\"/api/transaction_fee\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n }).then(handleResponse);\n}\n\nexport async function getTransactionOwnerships(address, endpoint) {\n if (typeof address !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'address' must be a string or Uint8Array\";\n }\n\n if (typeof address == \"string\") {\n if (!isHex(address)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (address instanceof Uint8Array) {\n address = uint8ArrayToHex(address);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n transaction(address: \"${address}\") {\n data {\n ownerships {\n secret,\n authorizedPublicKeys {\n encryptedSecretKey,\n publicKey\n }\n }\n }\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.transaction.data.ownerships;\n }\n });\n}\n\nexport async function getToken(tokenAddress, endpoint) {\n if (typeof tokenAddress !== \"string\" && !(address instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\";\n }\n\n if (typeof tokenAddress == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'address' must be in hexadecimal form if it's string\";\n }\n }\n\n if (tokenAddress instanceof Uint8Array) {\n tokenAddress = uint8ArrayToHex(tokenAddress);\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: `query {\n token(address: \"${tokenAddress}\") {\n genesis, name, symbol, supply, type\n properties, collection, id, decimals\n }\n }`,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.errors || res.data == null) {\n return [];\n } else {\n return res.data.token;\n }\n });\n}\n\nexport async function addOriginKey(originPublicKey, certificate, endpoint) {\n if (\n typeof originPublicKey !== \"string\" &&\n !(originPublicKey instanceof Uint8Array)\n ) {\n throw \"'originPublicKey' must be a string or Uint8Array\";\n }\n\n if (typeof originPublicKey == \"string\") {\n if (!isHex(originPublicKey)) {\n throw \"'originPublicKey' must be in hexadecimal form if it's string\";\n }\n }\n\n if (originPublicKey instanceof Uint8Array) {\n originPublicKey = uint8ArrayToHex(originPublicKey);\n }\n\n if (typeof certificate !== \"string\") {\n throw \"'certificate' must be a string\";\n }\n\n const url = new URL(\"/api/origin_key\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n origin_public_key: originPublicKey,\n certificate: certificate,\n }),\n }).then(handleResponse);\n}\n\nexport async function getOracleData(endpoint, timestamp = undefined) {\n let query;\n\n if (timestamp === undefined) {\n query = `query {\n oracleData {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n } else {\n query = `query {\n oracleData(timestamp: ${timestamp}) {\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }`;\n }\n\n const url = new URL(\"/api\", endpoint);\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n query: query,\n }),\n })\n .then(handleResponse)\n .then((res) => {\n if (res.data.oracleData == null) {\n return {};\n } else {\n return res.data.oracleData;\n }\n });\n}\n\nexport async function subscribeToOracleUpdates(endpoint, handler) {\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n const absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n const operation = `\n subscription {\n oracleUpdate {\n timestamp,\n services {\n uco {\n eur,\n usd\n }\n }\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n\n return absintheObserve(absintheSocket, notifier, (result) => {\n handler(result.data.oracelUpdate);\n });\n}\n\nasync function handleResponse(response) {\n return new Promise(function (resolve, reject) {\n if (response.status >= 200 && response.status <= 299) {\n response.json().then(resolve);\n } else {\n reject(response.statusText);\n }\n });\n}\n", "const byteToHex = [];\n\nfor (let n = 0; n <= 0xff; ++n) {\n const hexOctet = n.toString(16).padStart(2, \"0\");\n byteToHex.push(hexOctet);\n}\n\n/**\n *\n * Return the Initial Origin Private Key\n */\nexport const originPrivateKey =\n \"01019280BDB84B8F8AEDBA205FE3552689964A5626EE2C60AA10E3BF22A91A036009\";\n\n/**\n * Determines if a string is an hexadecimal\n * @param {String} inputString Potential hexadecimal string\n */\nexport function isHex(inputString) {\n const re = /^([0-9A-Fa-f])*$/;\n return re.test(inputString)\n}\n\n/**\n * Encode an hexadecimal string into a Uint8Array\n * @param {Uint8Array} hexString Hexadecimal string\n */\nexport function hexToUint8Array (hexString) {\n return new Uint8Array(\n hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))\n );\n};\n\n/**\n * Encode an Uint8Array into an hexadecimal string\n * @param {Uint8Array} bytes Uint8Array\n */\nexport function uint8ArrayToHex (bytes) {\n const buff = new Uint8Array(bytes);\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n hexOctets[i] = byteToHex[buff[i]];\n }\n\n return hexOctets.join(\"\");\n};\n\n/**\n * Concat a list of Uint8Array\n * @param {Array} arrays Uint8Arrays\n */\nexport function concatUint8Arrays(arrays) {\n // sum of individual array lengths\n\n if (!arrays.length) return new Uint8Array();\n\n let totalLength = arrays.reduce((acc, value) => acc + value.byteLength, 0);\n\n const { buffer } = arrays.reduce(\n ({ buffer: buffer, pos: pos }, curr) => {\n buffer.set(new Uint8Array(curr), pos);\n return { buffer: buffer, pos: pos + curr.byteLength };\n },\n { buffer: new Uint8Array(totalLength), pos: 0 }\n );\n\n return buffer;\n};\n\n/**\n * Encode a integer into a Uint8Array (4 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt32 (number) {\n let array = new ArrayBuffer(4);\n let view = new DataView(array);\n view.setUint32(0, number, true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Encode a big integer into a Uint8Array (8 bytes)\n * @param {Number} number Number to encode\n */\nexport function encodeInt64(number) {\n let array = new ArrayBuffer(8);\n let view = new DataView(array);\n view.setBigInt64(0, BigInt(number), true);\n return new Uint8Array(array).reverse();\n};\n\n/**\n * Decode byte array (4 bytes) into a integer\n * @param {Uint8Array} bytes Bytes array to decode\n */\nexport function decodeInt32(bytes) {\n let value = 0;\n for (let i = 0; i < bytes.length; i++) {\n value = (value * 256) + bytes[i];\n }\n return value;\n}\n\n/**\n * Convert any number into a big int for 10^8 decimals\n */\nexport function toBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return Math.trunc(number * Math.pow(10, decimals))\n};\n\n/**\n * Convert a big int number of 10^8 decimals into a decimal\n */\nexport function fromBigInt(number, decimals = 8) {\n if (typeof number !== \"number\") throw \"'number' must be an integer\";\n if (typeof decimals !== \"number\") throw \"'decimals' must be an integer\";\n return number / (Math.pow(10, decimals));\n};\n\n/**\n * Convert any number into a byte array\n */\nexport function toByteArray(number) {\n if (!number) return [0];\n const a = [];\n a.unshift(number & 255);\n while (number >= 256) {\n number = number >>> 8;\n a.unshift(number & 255);\n }\n return a;\n};\n", "import { createHash, createHmac, createECDH, createCipheriv, randomBytes, createDecipheriv} from 'crypto'\n\nimport elliptic from 'elliptic'\n\nimport sha3 from 'js-sha3';\nimport blake2b from 'blake2b';\nimport * as curve25519 from 'curve25519-js'\nimport ed2curve from 'ed2curve'\n\nimport { isHex, hexToUint8Array, concatUint8Arrays, encodeInt32 } from './utils.js';\n\nconst { ec: EC, eddsa: EdDSA } = elliptic \n\nconst ec_eddsa = new EdDSA(\"ed25519\")\nconst ec_P256 = new EC(\"p256\")\nconst ec_secp256k1 = new EC(\"secp256k1\")\n\nconst { sha3_512, sha3_256 } = sha3\n\nconst SOFTWARE_ID = 1\n\n/**\n * Generate a random secret key of 32 bytes\n */\nexport function randomSecretKey() {\n return new Uint8Array(randomBytes(32))\n}\n\n/**\n * Get the ID of a given hash algorithm\n * @params {String} hashAlgo Hash algorithm\n */\nexport function hashAlgoToID(hashAlgo) {\n switch(hashAlgo) {\n case \"sha256\":\n return 0\n case \"sha512\":\n return 1\n case \"sha3-256\":\n return 2\n case \"sha3-512\":\n return 3\n case \"blake2b\":\n return 4\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n\n/**\n * Get the hash algo name from the hash algorithm ID\n * @param {Integer} ID Hash algorithm's ID\n */\nexport function IDToHashAlgo(ID) {\n switch (ID) {\n case 0:\n return \"sha256\"\n case 1:\n return \"sha512\"\n case 2:\n return \"sha3-256\"\n case 3:\n return \"sha3-512\"\n case 4:\n return \"blake2b\"\n default:\n throw \"Hash algorithm ID not supported\"\n }\n}\n\n/**\n * Get the ID of a given Elliptic curve\n * @params {String} curve Elliptic curve\n */\nexport function curveToID(curve) {\n switch(curve) {\n case \"ed25519\":\n return 0;\n\n case \"P256\":\n return 1;\n\n case \"secp256k1\":\n return 2;\n\n default :\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Get the curve name from the curve ID\n * @param {Integer} ID Curve's ID\n */\nexport function IDToCurve(ID) {\n switch (ID) {\n case 0:\n return \"ed25519\"\n case 1:\n return \"P256\"\n case 2:\n return \"secp256k1\"\n default:\n throw \"Curve ID not supported\"\n }\n}\n\n/**\n * Create an address from a seed, an index, an elliptic curve and an hash algorithm.\n * The address is prepended by the curve identification, the hash algorithm and the digest of the address\n * \n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic Curves(ed25519, P256, secp256k1)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function deriveAddress(seed, index, curve = \"ed25519\", hashAlgo = \"sha256\") {\n const { publicKey } = deriveKeyPair(seed, index, curve)\n\n const curveID = curveToID(curve)\n const hashedPublicKey = hash(publicKey, hashAlgo)\n\n return concatUint8Arrays(\n [\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey)\n ]\n )\n}\n\n/**\n * Create a hash digest from the data with an hash algorithm identification prepending the digest\n * @param {String |\u00A0Uint8Array} content Data to hash (string or buffer)\n * @param {String} algo Hash algorithm (\"sha256\", \"sha512\", \"sha3-256\", \"sha3-512\", \"blake2b\")\n */\nexport function hash(content, algo = \"sha256\") {\n if (typeof(content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof(content) == \"string\") {\n if(isHex(content)) {\n content = hexToUint8Array(content)\n } else {\n content = new TextEncoder().encode(content)\n }\n }\n\n const algoID = hashAlgoToID(algo)\n const digest = getHashDigest(content, algo)\n\n return concatUint8Arrays([\n Uint8Array.from([algoID]),\n Uint8Array.from(digest)\n ])\n}\n\nexport function getHashDigest(content, algo) {\n switch(algo) {\n case \"sha256\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha512\": {\n const hash = createHash(algo);\n hash.update(content);\n return hash.digest()\n }\n case \"sha3-256\": {\n const hash = sha3_256.create();\n hash.update(content)\n return hash.digest()\n }\n case \"sha3-512\": {\n const hash = sha3_512.create()\n hash.update(content)\n return hash.digest()\n }\n case \"blake2b\": {\n const output = new Uint8Array(64)\n const hash = blake2b(64)\n hash.update(content)\n hash.digest(output)\n return output\n }\n default:\n throw \"Hash algorithm not supported\"\n }\n}\n/**\n * Generate a keypair using a derivation function with a seed and an index. Each keys is prepending with a curve identification.\n * @param {String} seed Keypair derivation seed\n * @param {Integer} index Number to identify the order of keys to generate\n * @param {String} curve Elliptic curve to use (\"ed25519\", \"P256\", \"secp256k1\")\n */\nexport function deriveKeyPair(seed, index, curve = \"ed25519\") {\n\n if (typeof(seed) !== \"string\" && !(seed instanceof Uint8Array)) {\n throw \"'seed must be a string\"\n }\n\n if (typeof index !== 'number' || index < 0) {\n throw \"'index' must be a positive number\"\n }\n\n const pvBuf = derivePrivateKey(seed, index)\n return generateDeterministicKeyPair(pvBuf, curve, SOFTWARE_ID)\n}\n\n/**\n * Generate a new keypair deterministically with a given private key, curve and origin id\n * @params {Uint8Array} privateKey Private key\n * @params {String} curve Elliptic curve\n * @params {Integer} originID Origin identification\n */\nexport function generateDeterministicKeyPair(pvKey, curve, originID) {\n\n const curveID = curveToID(curve)\n const { publicKey, privateKey } = getKeypair(pvKey, curve)\n\n return {\n privateKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n privateKey\n ]),\n publicKey: concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from([originID]),\n publicKey\n ])\n }\n}\n\nfunction getKeypair(pvKey, curve) {\n switch (curve) {\n case \"ed25519\": {\n const key = ec_eddsa.keyFromSecret(pvKey)\n const pubBuf = new Uint8Array(key.pubBytes())\n\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"P256\": {\n const key = ec_P256.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n case \"secp256k1\": {\n const key = ec_secp256k1.keyFromPrivate(pvKey)\n const pubBuf = hexToUint8Array(key.getPublic().encode(\"hex\"))\n return {\n privateKey: pvKey,\n publicKey: pubBuf\n }\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Sign the data \n * @param {String | Uint8Array} data Data to sign\n * @param {String | Uint8Array} privateKey Private key to use to sign the data\n */\nexport function sign(data, privateKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or an Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromSecret(pvBuf)\n return Uint8Array.from(key.sign(data).toBytes())\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPrivate(pvBuf)\n return Uint8Array.from(key.sign(msgHash).toDER())\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\nexport function verify(sig, data, publicKey) {\n if (typeof(sig) !== \"string\" && !(sig instanceof Uint8Array)) {\n throw \"'signature' must be a string of Uint8Array\"\n }\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sig) == \"string\") {\n if (isHex(sig)) {\n sig = hexToUint8Array(sig)\n } else {\n throw \"'signature' must be an hexadecimal string\"\n }\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curveBuf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n switch (curveBuf[0]) {\n case 0: {\n const key = ec_eddsa.keyFromPublic(Array.from(pubBuf))\n return key.verify(data, Array.from(sig))\n }\n case 1: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_P256.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n case 2: {\n const msgHash = createHash(\"sha256\")\n .update(data)\n .digest()\n\n const key = ec_secp256k1.keyFromPublic(pubBuf)\n return key.verify(msgHash, sig)\n }\n default:\n throw \"Curve not supported\"\n } \n}\n\n/**\n * Encrypt a data for a given public key using ECIES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} publicKey Public key for the shared secret encryption\n */\nexport function ecEncrypt(data, publicKey) {\n\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"'publicKey' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(publicKey) == \"string\") {\n if(isHex(publicKey)) {\n publicKey = hexToUint8Array(publicKey)\n } else {\n throw \"'publicKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = publicKey.slice(0, 1)\n const pubBuf = publicKey.slice(2, publicKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const { public: ephemeralPublicKey, private: ephemeralPrivateKey} = curve25519.generateKeyPair(randomBytes(32)) \n const curve25519pub = ed2curve.convertPublicKey(pubBuf)\n\n const sharedKey = curve25519.sharedKey(ephemeralPrivateKey, curve25519pub)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted } = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ephemeralPublicKey),\n tag,\n encrypted\n ])\n }\n case 1: {\n const ecdh = createECDH(\"prime256v1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n case 2: {\n const ecdh = createECDH(\"secp256k1\")\n ecdh.generateKeys(); \n const sharedKey = ecdh.computeSecret(pubBuf)\n\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n const { tag, encrypted} = aesAuthEncrypt(data, aesKey, iv)\n\n return concatUint8Arrays([\n Uint8Array.from(ecdh.getPublicKey()),\n tag,\n encrypted\n ])\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Decrypt a ciphertext for a given private key using ECIES algorithm\n * @param {String | Uint8Array} ciphertext Ciphertext to decrypt\n * @param {String | Uint8Array} privateKey Private key for the shared secret encryption\n */\nexport function ecDecrypt(ciphertext, privateKey) {\n\n if (typeof(ciphertext) !== \"string\" && !(ciphertext instanceof Uint8Array)) {\n throw \"'ciphertext' must be a string or Uint8Array\"\n }\n\n if (typeof(privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof(ciphertext) == \"string\") {\n if(isHex(ciphertext)) {\n ciphertext = hexToUint8Array(ciphertext)\n } else {\n throw \"'ciphertext' must be an hexadecimal string\"\n }\n }\n\n if (typeof(privateKey) == \"string\") {\n if(isHex(privateKey)) {\n privateKey = hexToUint8Array(privateKey)\n } else {\n throw \"'privateKey' must be an hexadecimal string\"\n }\n }\n\n const curve_buf = privateKey.slice(0, 1)\n const pvBuf = privateKey.slice(2, privateKey.length)\n\n switch (curve_buf[0]) {\n case 0: {\n const ephemeralPubKey = ciphertext.slice(0, 32)\n const tag = ciphertext.slice(32, 32+16)\n const encrypted = ciphertext.slice(32+16, ciphertext.length)\n\n const curve25519pv = ed2curve.convertSecretKey(pvBuf)\n\n const sharedKey = curve25519.sharedKey(curve25519pv, ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 1: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"prime256v1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n case 2: {\n const ephemeralPubKey = ciphertext.slice(0, 65)\n const tag = ciphertext.slice(65, 65+16)\n const encrypted = ciphertext.slice(65+16, ciphertext.length)\n\n const ecdh = createECDH(\"secp256k1\")\n ecdh.setPrivateKey(pvBuf)\n const sharedKey = ecdh.computeSecret(ephemeralPubKey)\n const { aesKey, iv } = deriveSecret(sharedKey)\n\n return aesAuthDecrypt(encrypted, aesKey, iv, tag)\n }\n default:\n throw \"Curve not supported\"\n }\n}\n\n/**\n * Encrypt a data for a given public key using AES algorithm\n * @param {String | Uint8Array} data Data to encrypt\n * @param {String | Uint8Array} key Symmetric key\n */\nexport function aesEncrypt(data, key) {\n if (typeof(data) !== \"string\" && !(data instanceof Uint8Array)) {\n throw \"'data' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(data) == \"string\") {\n if(isHex(data)) {\n data = hexToUint8Array(data)\n } else {\n data = new TextEncoder().encode(data)\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an hexadecimal string\"\n }\n }\n\n const iv = randomBytes(12)\n\n const { tag: tag, encrypted: encrypted} = aesAuthEncrypt(data, key, iv)\n\n const ciphertext = concatUint8Arrays([\n new Uint8Array(iv),\n tag,\n encrypted\n ])\n\n return ciphertext\n}\n\nexport function aesDecrypt(cipherText, key) {\n\n if (typeof(cipherText) !== \"string\" && !(cipherText instanceof Uint8Array)) {\n throw \"'cipherText' must be a string or Uint8Array\"\n }\n\n if (typeof(key) !== \"string\" && !(key instanceof Uint8Array)) {\n throw \"'key' must be a string or Uint8Array\"\n }\n\n if (typeof(cipherText) == \"string\") {\n if(isHex(cipherText)) {\n cipherText = hexToUint8Array(cipherText)\n } else {\n throw \"'cipherText' must be an hexadecimal string\"\n }\n }\n\n if (typeof(key) == \"string\") {\n if(isHex(key)) {\n key = hexToUint8Array(key)\n } else {\n throw \"'key' must be an be hexadecimal string\"\n }\n }\n\n const iv = cipherText.slice(0, 12)\n const tag = cipherText.slice(12, 12 + 16)\n const encrypted = cipherText.slice(28, cipherText.length)\n\n return aesAuthDecrypt(encrypted, key, iv, tag)\n}\n\n\nfunction derivePrivateKey(seed, index) {\n\n if (isHex(seed)) {\n seed = hexToUint8Array(seed)\n }\n\n //Derive master keys\n const hash = createHash(\"sha512\")\n .update(seed)\n .digest()\n\n const masterKey = hash.subarray(0, 32)\n const masterEntropy = hash.subarray(32, 64)\n\n //Derive the final seed\n const index_buf = encodeInt32(index)\n const extended_seed = concatUint8Arrays([masterKey, index_buf])\n\n const hmac = createHmac('sha512', masterEntropy)\n .update(extended_seed)\n .digest()\n\n // The first 32 bytes become the next private key\n return hmac.subarray(0, 32)\n}\n\nfunction deriveSecret(sharedKey) {\n\n if (typeof(sharedKey) !== \"string\" && !(sharedKey instanceof Uint8Array)) {\n throw \"'sharedKey' must be a string or Uint8Array\"\n }\n\n if (typeof(sharedKey) == \"string\") {\n if(isHex(sharedKey)) {\n sharedKey = hexToUint8Array(sharedKey)\n } else {\n throw \"'sharedKey' must be an hexadecimal string\"\n }\n }\n\n const pseudoRandomKey = createHash(\"sha256\")\n .update(sharedKey)\n .digest()\n\n const iv = createHmac(\"sha256\", pseudoRandomKey)\n .update(\"0\")\n .digest()\n .subarray(0, 32)\n\n const aesKey = createHmac(\"sha256\", iv)\n .update(\"1\")\n .digest()\n .subarray(0, 32)\n\n return {\n iv,\n aesKey\n }\n}\n\nfunction aesAuthEncrypt(data, aesKey, iv) {\n let cipher = createCipheriv(\"aes-256-gcm\", aesKey, iv)\n\n let encrypted = cipher.update(data)\n encrypted = concatUint8Arrays([ encrypted, cipher.final()])\n\n return { tag: new Uint8Array(cipher.getAuthTag()), encrypted: encrypted }\n}\n\nfunction aesAuthDecrypt(encrypted, aesKey, iv, tag) {\n let decipher = createDecipheriv(\"aes-256-gcm\", aesKey, iv)\n decipher.setAuthTag(tag)\n \n let decryptedBuffers = [decipher.update(encrypted)]\n decryptedBuffers.push(decipher.final())\n \n return concatUint8Arrays(decryptedBuffers)\n}\n", "import Keychain from \"./keychain.js\";\nimport {\n randomSecretKey,\n ecEncrypt,\n ecDecrypt,\n deriveAddress,\n aesEncrypt,\n aesDecrypt,\n deriveKeyPair,\n} from \"./crypto.js\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nexport default class Account {\n constructor(core) {\n this.core = core;\n }\n\n newKeychainTransaction(seed, authorizedPublicKeys) {\n let keychain = new Keychain(seed);\n keychain.addService(\"uco\", \"m/650'/0/0\");\n\n const aesKey = randomSecretKey();\n\n const authorizedKeys = authorizedPublicKeys.map((key) => {\n return {\n publicKey: key,\n encryptedSecretKey: ecEncrypt(aesKey, key),\n };\n });\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain\")\n .setContent(JSON.stringify(keychain.toDID()))\n .addOwnership(aesEncrypt(keychain.encode(), aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n newAccessTransaction(seed, keychainAddress) {\n const aesKey = randomSecretKey();\n\n const { publicKey } = deriveKeyPair(seed, 0);\n\n const encryptedSecretKey = ecEncrypt(aesKey, publicKey);\n\n const authorizedKeys = [\n {\n publicKey: publicKey,\n encryptedSecretKey: encryptedSecretKey,\n },\n ];\n\n return new this.core.transaction.builder(this.core)\n .setType(\"keychain_access\")\n .addOwnership(aesEncrypt(keychainAddress, aesKey), authorizedKeys)\n .build(seed, 0);\n }\n\n async getKeychain(seed) {\n const { publicKey: accessPublicKey, privateKey: accessPrivateKey } =\n deriveKeyPair(seed, 0);\n const accessKeychainAddress = deriveAddress(seed, 1);\n\n //Download the encrypted data from the access transaction\n const accessOwnerships =\n await this.core.transaction.getTransactionOwnerships(\n accessKeychainAddress\n );\n\n if (accessOwnerships.length == 0) {\n throw \"Keychain doesn't exist\";\n }\n\n const { secret: accessSecret, authorizedPublicKeys: accessAuthorizedKeys } =\n accessOwnerships[0];\n\n const { encryptedSecretKey: accessSecretKey } = accessAuthorizedKeys.find(\n (authKey) => {\n return (\n authKey.publicKey.toLocaleUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toLocaleUpperCase()\n );\n }\n );\n\n // Decrypt the keychain address within the access's transaction secret\n const accessAESKey = ecDecrypt(accessSecretKey, accessPrivateKey);\n const keychainAddress = aesDecrypt(accessSecret, accessAESKey);\n\n // Download the encrypted data from the keychain transaction\n const keychainOwnerships =\n await this.core.transaction.getTransactionOwnerships(keychainAddress);\n\n const {\n secret: keychainSecret,\n authorizedPublicKeys: keychainAuthorizedKeys,\n } = keychainOwnerships[0];\n const { encryptedSecretKey: keychainSecretKey } =\n keychainAuthorizedKeys.find(\n ({ publicKey }) =>\n publicKey.toUpperCase() ==\n uint8ArrayToHex(accessPublicKey).toUpperCase()\n );\n\n // Decrypt the keychain\n const keychainAESKey = ecDecrypt(keychainSecretKey, accessPrivateKey);\n const encodedKeychain = aesDecrypt(keychainSecret, keychainAESKey);\n\n return Keychain.decode(encodedKeychain);\n }\n};\n", "import {\n generateDeterministicKeyPair,\n deriveAddress,\n hash,\n curveToID,\n hashAlgoToID,\n IDToCurve,\n IDToHashAlgo,\n sign\n} from \"./crypto.js\";\n\nimport {\n uint8ArrayToHex,\n concatUint8Arrays,\n encodeInt32,\n decodeInt32,\n} from \"./utils.js\";\nimport { createHmac, createHash } from \"crypto\";\n\nimport base64url from \"base64url\";\n\nconst KEYCHAIN_ORIGIN_ID = 0;\n\nexport default class Keychain {\n constructor(seed, version = 1) {\n if (!(seed instanceof Uint8Array)) {\n seed = new TextEncoder().encode(seed);\n }\n\n this.version = version;\n this.seed = seed;\n this.services = {};\n }\n\n addService(name, derivationPath, curve = \"ed25519\", hashAlgo = \"sha256\") {\n this.services[name] = {\n derivationPath: derivationPath,\n curve: curve,\n hashAlgo: hashAlgo,\n };\n return this;\n }\n\n encode() {\n let servicesBuffer = [];\n for (let service in this.services) {\n const { derivationPath, curve, hashAlgo } = this.services[service];\n servicesBuffer.push(\n concatUint8Arrays([\n Uint8Array.from([service.length]),\n new TextEncoder().encode(service),\n Uint8Array.from([derivationPath.length]),\n new TextEncoder().encode(derivationPath),\n Uint8Array.from([curveToID(curve)]),\n Uint8Array.from([hashAlgoToID(hashAlgo)]),\n ])\n );\n }\n\n return concatUint8Arrays([\n encodeInt32(this.version),\n Uint8Array.from([this.seed.length]),\n this.seed,\n Uint8Array.from([Object.keys(this.services).length]),\n concatUint8Arrays(servicesBuffer),\n ]);\n }\n\n deriveKeypair(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n\n const { derivationPath, curve } = this.services[service];\n return deriveArchethicKeypair(this.seed, derivationPath, index, curve);\n }\n\n deriveAddress(service, index = 0) {\n if (!this.services[service]) {\n throw \"Service doesn't exist in the keychain\";\n }\n const { derivationPath, curve, hashAlgo } = this.services[service];\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n index,\n curve\n );\n const curveID = curveToID(curve);\n\n const hashedPublicKey = hash(publicKey, hashAlgo);\n\n return concatUint8Arrays([\n Uint8Array.from([curveID]),\n Uint8Array.from(hashedPublicKey),\n ]);\n }\n\n buildTransaction(tx, service, index) {\n const keypair = this.deriveKeypair(service, index);\n const address = this.deriveAddress(service, index + 1);\n\n tx.setAddress(address);\n\n const payloadForPreviousSignature = tx.previousSignaturePayload();\n const previousSignature = sign(\n payloadForPreviousSignature,\n keypair.privateKey\n );\n\n tx.setPreviousSignatureAndPreviousPublicKey(\n previousSignature,\n keypair.publicKey\n );\n\n return tx;\n }\n\n static decode(binary) {\n var pos = 0;\n\n var { bytes: version, pos: pos } = readBytes(binary, pos, 4);\n var { byte: seedSize, pos: pos } = readByte(binary, pos, 1);\n var { bytes: seed, pos: pos } = readBytes(binary, pos, seedSize);\n var { byte: nbServices, pos: pos } = readByte(binary, pos, 1);\n\n let keychain = new Keychain(seed, decodeInt32(version));\n\n for (let i = 0; i < nbServices; i++) {\n var { byte: serviceNameLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: serviceName, pos: pos } = readBytes(\n binary,\n pos,\n serviceNameLength\n );\n var { byte: derivationPathLength, pos: pos } = readByte(binary, pos, 1);\n var { bytes: derivationPath, pos: pos } = readBytes(\n binary,\n pos,\n derivationPathLength\n );\n var { byte: curveID, pos: pos } = readByte(binary, pos, 1);\n var { byte: hashAlgoID } = readByte(binary, pos, 1);\n\n serviceName = new TextDecoder().decode(serviceName);\n derivationPath = new TextDecoder().decode(derivationPath);\n\n keychain.addService(\n serviceName,\n derivationPath,\n IDToCurve(curveID),\n IDToHashAlgo(hashAlgoID)\n );\n }\n\n return keychain;\n }\n\n toDID() {\n const address = deriveAddress(this.seed, 0);\n const address_hex = uint8ArrayToHex(address);\n\n let verificationMethods = [];\n let authentications = [];\n\n for (let service in this.services) {\n const { derivationPath, curve } = this.services[service];\n\n const purpose = derivationPath\n .split(\"/\")\n .map((v) => v.replace(\"'\", \"\"))\n .at(1);\n\n //Only support of archethic derivation scheme for now\n if (purpose == \"650\") {\n const { publicKey } = deriveArchethicKeypair(\n this.seed,\n derivationPath,\n 0,\n curve\n );\n\n verificationMethods.push({\n id: `did:archethic:${address_hex}#${service}`,\n type: \"JsonWebKey2020\",\n publicKeyJwk: keyToJWK(publicKey, service),\n controller: `did:archethic:${address_hex}`,\n });\n\n authentications.push(`did:archethic:${address_hex}#${service}`);\n } else {\n throw \"Purpose '\" + purpose + \"' is not yet supported\";\n }\n }\n\n return {\n \"@context\": [\"https://www.w3.org/ns/did/v1\"],\n id: `did:archethic:${address_hex}`,\n authentication: authentications,\n verificationMethod: verificationMethods,\n };\n }\n}\n\nfunction readByte(binary, pos, size) {\n return {\n byte: binary.slice(pos, pos + size)[0],\n pos: pos + size,\n };\n}\n\nfunction readBytes(binary, pos, size) {\n return {\n bytes: binary.slice(pos, pos + size),\n pos: pos + size,\n };\n}\n\nfunction deriveArchethicKeypair(\n seed,\n derivationPath,\n index,\n curve = \"ed25519\"\n) {\n //Hash the derivation path\n const hashedPath = createHash(\"sha256\")\n .update(replaceDerivationPathIndex(derivationPath, index))\n .digest();\n\n const extendedSeed = createHmac(\"sha512\", seed)\n .update(hashedPath)\n .digest()\n .subarray(0, 32);\n\n return generateDeterministicKeyPair(extendedSeed, curve, KEYCHAIN_ORIGIN_ID);\n}\n\nfunction replaceDerivationPathIndex(path, index) {\n return path.split(\"/\").slice(0, -1).concat(`${index}'`).join(\"/\");\n}\n\nexport function keyToJWK(publicKey, keyID) {\n const curveID = publicKey[0];\n const key = publicKey.slice(2, publicKey.length);\n\n switch (curveID) {\n case 0:\n return {\n kty: \"OKP\",\n crv: \"Ed25519\",\n x: base64url(key),\n kid: keyID,\n };\n case 1:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"P-256\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n case 2:\n x = key.subarray(16);\n y = key.subarray(-16);\n\n return {\n kty: \"EC\",\n crv: \"secp256k1\",\n x: base64url(x),\n y: base64url(y),\n kid: keyID,\n };\n }\n}\n", "import * as API from \"./api.js\";\n\nexport default class Network {\n constructor(core) {\n this.core = core;\n }\n\n async getStorageNoncePublicKey() {\n return this.core.requestNode((endpoint) =>\n API.getStorageNoncePublicKey(endpoint)\n );\n }\n\n async addOriginKey(originKey, certificate) {\n return this.core.requestNode((endpoint) =>\n API.addOriginKey(originKey, certificate, endpoint)\n );\n }\n\n async getOracleData(timestamp = undefined) {\n return this.core.requestNode((endpoint) => API.getOracleData(endpoint, timestamp));\n }\n\n async subscribeToOracleUpdates(callback, transport) {\n return this.core.requestNode((endpoint) =>\n API.subscribeToOracleUpdates(endpoint, callback, transport)\n );\n }\n\n async getToken(tokenAddress) {\n return this.core.requestNode((endpoint) => \n API.getToken(tokenAddress, endpoint)\n );\n }\n};\n", "import TransactionBuilder from \"./transaction_builder.js\";\nimport TransactionSender from \"./transaction_sender.js\";\n\nimport * as API from \"./api.js\";\n\nexport default class Transaction {\n constructor(core) {\n this.core = core;\n this.builder = ExtendedTransactionBuilder;\n }\n\n new() {\n return new this.builder(this.core)\n }\n\n getTransactionIndex(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionIndex(address, endpoint)\n );\n }\n\n getTransactionFee(tx) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionFee(tx, endpoint)\n );\n }\n\n getTransactionOwnerships(address) {\n return this.core.requestNode((endpoint) =>\n API.getTransactionOwnerships(address, endpoint)\n );\n }\n};\n\nclass ExtendedTransactionBuilder extends TransactionBuilder {\n constructor(core) {\n super();\n this.core = core;\n this.sender = new TransactionSender();\n }\n\n //Override TransactionSender.send to use the node resolution\n send(confirmationThreshold, timeout) {\n this.core.requestNode((endpoint) =>\n this.sender.send(this, endpoint, confirmationThreshold, timeout)\n );\n }\n\n //Use of composition as multi inheritance model\n on(eventName, fun) {\n this.sender.on(eventName, fun);\n return this;\n }\n\n unsubscribe(eventName) {\n this.sender.unsubscribe(eventName);\n return this;\n }\n}\n", "import { deriveKeyPair, deriveAddress, sign } from './crypto.js'\nimport { isHex, hexToUint8Array, uint8ArrayToHex, concatUint8Arrays, encodeInt32, encodeInt64, toBigInt, toByteArray } from './utils.js'\n\nconst version = 1\n\nconst txTypes = {\n //User based transaction types\n \"keychain_access\": 254,\n \"keychain\": 255,\n \"transfer\": 253,\n \"hosting\": 252,\n \"token\": 251,\n //Network based transaction types\n \"code_proposal\": 7,\n \"code_approval\": 8\n}\n\nexport default class TransactionBuilder {\n\n /**\n * Create a new instance of the transaction builder\n */\n constructor(txType) {\n this.version = version\n this.type = \"transfer\"\n this.data = {\n content: new Uint8Array(),\n code: new Uint8Array(),\n ownerships: [],\n ledger: {\n uco: {\n transfers: []\n },\n token: {\n transfers: []\n }\n },\n recipients: []\n }\n }\n\n /**\n * Set the type of the transaction\n * @param {String} type Transaction type\n */\n setType(type) {\n if (!Object.keys(txTypes).includes(type)) {\n throw \"Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'\"\n }\n this.type = type\n return this\n }\n\n /**\n * Add smart contract code to the transcation\n * @param {String} code Smart contract code\n */\n setCode(code) {\n if (typeof (code) !== \"string\") {\n throw \"'code' must be a string\"\n }\n this.data.code = new TextEncoder().encode(code)\n return this\n }\n\n /**\n * Add a content to the transaction\n * @param {String | Uint8Array} content Hosted content\n */\n setContent(content) {\n\n if (typeof (content) !== \"string\" && !(content instanceof Uint8Array)) {\n throw \"'content' must be a string or Uint8Array\"\n }\n\n if (typeof (content) == \"string\") {\n content = new TextEncoder().encode(content)\n }\n this.data.content = content;\n return this\n }\n\n /**\n * Add an ownership with a secret and its authorized public keys\n * @param {String | Uint8Array} secret Secret encrypted (hexadecimal or binary buffer)\n * @param {Array} authorizedKeys List of authorized keys\n */\n addOwnership(secret, authorizedKeys) {\n\n if (typeof (secret) !== \"string\" && !(secret instanceof Uint8Array)) {\n throw \"'secret' must be a string or Uint8Array\"\n }\n\n if (typeof (secret) == \"string\") {\n if (isHex(secret)) {\n secret = hexToUint8Array(secret)\n } else {\n secret = new TextEncoder().encode(secret)\n }\n }\n\n if (typeof (authorizedKeys) !== \"object\" && !(authorizedKeys instanceof Array)) {\n throw \"'authorizedKeys must be an array\"\n }\n\n const filteredAuthorizedKeys = []\n\n // Remove duplicated public key\n authorizedKeys.reduce((acc, { publicKey, encryptedSecretKey }) => {\n if (typeof (publicKey) !== \"string\" && !(publicKey instanceof Uint8Array)) {\n throw \"Authorized public key must be a string or Uint8Array\"\n }\n\n if (typeof (publicKey) == \"string\") {\n if (!isHex(publicKey)) {\n throw \"Authorized public key must be an hexadecimal\"\n }\n publicKey = hexToUint8Array(publicKey)\n }\n\n if (typeof (encryptedSecretKey) !== \"string\" && !(encryptedSecretKey instanceof Uint8Array)) {\n throw \"Encrypted secret key must be a string or Uint8Array\"\n }\n\n if (typeof (encryptedSecretKey) == \"string\") {\n if (!isHex(encryptedSecretKey)) {\n throw \"Encrypted secret key must be an hexadecimal\"\n }\n encryptedSecretKey = hexToUint8Array(encryptedSecretKey)\n }\n\n if (acc[publicKey]) return acc\n\n filteredAuthorizedKeys.push({publicKey, encryptedSecretKey})\n\n acc[publicKey] = encryptedSecretKey\n\n return acc\n }, {})\n\n this.data.ownerships.push({\n secret: secret,\n authorizedKeys: filteredAuthorizedKeys\n })\n\n return this\n }\n\n /**\n * Add a UCO transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integrer} amount Amount of UCO to transfer (in bigint)\n */\n addUCOTransfer(to, amount) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'UCO transfer amount must be a positive number'\n }\n\n this.data.ledger.uco.transfers.push({to, amount})\n return this\n }\n\n /**\n * Add a token transfer to the transaction\n * @param {String | Uint8Array} to Address of the recipient (hexadecimal or binary buffer)\n * @param {Integer} amount Amount of UCO to transfer (in bigint)\n * @param {String | Uint8Array} tokenAddress Address of token to spend (hexadecimal or binary buffer)\n * @param {Integer} tokenId ID of the token to use (default to 0)\n */\n addTokenTransfer(to, amount, tokenAddress, tokenId = 0) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (tokenAddress) !== \"string\" && !(tokenAddress instanceof Uint8Array)) {\n throw \"'tokenAddress' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n\n if (isNaN(amount) || amount <= 0) {\n throw 'Token transfer amount must be a positive number'\n }\n\n if (typeof (tokenAddress) == \"string\") {\n if (!isHex(tokenAddress)) {\n throw \"'tokenAddress' must be in hexadecimal form if it's string\"\n }\n tokenAddress = hexToUint8Array(tokenAddress)\n }\n\n if (isNaN(tokenId) || tokenId < 0) {\n throw \"'tokenId' must be a valid integer >= 0\"\n }\n\n this.data.ledger.token.transfers.push({\n to: to,\n amount: amount,\n token: tokenAddress,\n tokenId: tokenId\n })\n return this\n }\n\n /**\n * Add recipient to the transaction\n * @param {String | Uint8Array} to Recipient address (hexadecimal or binary buffer) \n */\n addRecipient(to) {\n if (typeof (to) !== \"string\" && !(to instanceof Uint8Array)) {\n throw \"'to' must be a string or Uint8Array\"\n }\n\n if (typeof (to) == \"string\") {\n if (!isHex(to)) {\n throw \"'to' must be in hexadecimal form if it's string\"\n }\n to = hexToUint8Array(to)\n }\n this.data.recipients.push(to)\n return this\n }\n\n /**\n * Set the transaction builder with Previous Publickey and Previous Signature\n * @param {String | Uint8Array} to Previous Signature (hexadecimal)\n * @param {String | Uint8Array} to Previous PublicKey (hexadecimal)\n */\n\n setPreviousSignatureAndPreviousPublicKey(prevSign, prevPubKey) {\n\n if (typeof (prevSign) !== \"string\" && !(prevSign instanceof Uint8Array)) {\n throw \"'prevSign' must be a string or Uint8Array\"\n }\n\n if (typeof (prevPubKey) !== \"string\" && !(prevPubKey instanceof Uint8Array)) {\n throw \"'prevPubKey' must be a string or Uint8Array\"\n }\n\n if (typeof (prevSign) == \"string\") {\n if (!isHex(prevSign)) {\n throw \"'previous Signature' must be in hexadecimal form if it's string\"\n }\n prevSign = hexToUint8Array(prevSign);\n }\n if (typeof (prevPubKey) == \"string\") {\n if (!isHex(prevPubKey)) {\n throw \"'previous Public Key' must be in hexadecimal form if it's string\"\n }\n prevPubKey = hexToUint8Array(prevPubKey);\n }\n\n this.previousPublicKey = prevPubKey;\n this.previousSignature = prevSign;\n return this\n }\n\n /**\n * Set the transaction builder with address (required for originSign) \n * @param {String | Uint8Array} to Address (hexadecimal | Uint8Array)\n * \n */\n\n setAddress(addr) {\n if (typeof (addr) !== \"string\" && !(addr instanceof Uint8Array)) {\n throw \"'addr' must be a string or Uint8Array\"\n }\n\n if (typeof (addr) == \"string\") {\n if (!isHex(addr)) {\n throw \"'addr' must be in hexadecimal form if it's string\"\n }\n addr = hexToUint8Array(addr)\n }\n this.address = addr;\n return this\n }\n\n /**\n * Generate the transaction address, keys and signatures\n * @param {String | Uint8Array} seed Transaction chain seed (hexadecimal or binary buffer)\n * @param {Integer} index Number of transaction on the chain\n * @param {String} curve Elliptic curve to use for the key generation\n * @param {String} hashAlgo Hash algorithm to use for the address generation\n */\n build(seed, index, curve, hashAlgo) {\n const keypair = deriveKeyPair(seed, index, curve);\n const address = deriveAddress(seed, index + 1, curve, hashAlgo)\n this.address = address\n this.previousPublicKey = keypair.publicKey\n\n const payloadForPreviousSignature = this.previousSignaturePayload()\n\n this.previousSignature = sign(payloadForPreviousSignature, keypair.privateKey)\n\n return this\n }\n\n /**\n * Sign the transaction with an origin private key\n * @param {String | Uint8Array} originPv Origin Private Key (hexadecimal or binary buffer)\n */\n originSign(privateKey) {\n if (typeof (privateKey) !== \"string\" && !(privateKey instanceof Uint8Array)) {\n throw \"'privateKey' must be a string or Uint8Array\"\n }\n\n if (typeof (privateKey) == \"string\") {\n if (!isHex(privateKey)) {\n throw \"'privateKey' must be in hexadecimal form if it's string\"\n }\n }\n\n this.originSignature = sign(this.originSignaturePayload(), privateKey)\n return this\n }\n\n /**\n * Set the Txn's originSignature, method called from hardware_libs\n * @param {String | Uint8Array} to Signature (hexadecimal)\n */\n setOriginSign(signature) {\n if (typeof (signature) !== \"string\" && !(signature instanceof Uint8Array)) {\n throw \"'signature' must be a string or Uint8Array\"\n }\n\n if (typeof (signature) == \"string\") {\n if (!isHex(signature)) {\n throw \"'Signature' must be in hexadecimal form if it's string\"\n }\n signature = hexToUint8Array(signature);\n }\n\n this.originSignature = signature\n return this\n }\n\n\n /**\n * Convert the transaction in JSON\n */\n toJSON() {\n return JSON.stringify({\n version: this.version,\n address: uint8ArrayToHex(this.address),\n type: this.type,\n data: {\n content: uint8ArrayToHex(this.data.content),\n code: new TextDecoder().decode(this.data.code),\n ownerships: this.data.ownerships.map(({ secret, authorizedKeys }) => {\n return {\n secret: uint8ArrayToHex(secret),\n authorizedKeys: authorizedKeys.map(({ publicKey, encryptedSecretKey }) => {\n return {\n publicKey: uint8ArrayToHex(publicKey),\n encryptedSecretKey: uint8ArrayToHex(encryptedSecretKey)\n }\n })\n }\n }),\n ledger: {\n uco: {\n transfers: this.data.ledger.uco.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount\n }\n })\n },\n token: {\n transfers: this.data.ledger.token.transfers.map((t) => {\n return {\n to: uint8ArrayToHex(t.to),\n amount: t.amount,\n tokenAddress: uint8ArrayToHex(t.token),\n tokenId: t.tokenId\n }\n })\n }\n },\n recipients: this.data.recipients.map(uint8ArrayToHex)\n },\n previousPublicKey: uint8ArrayToHex(this.previousPublicKey),\n previousSignature: uint8ArrayToHex(this.previousSignature),\n originSignature: this.originSignature && uint8ArrayToHex(this.originSignature)\n })\n }\n\n /**\n * Generate the payload for the previous signature by encoding address, type and data\n */\n previousSignaturePayload() {\n\n const bufCodeSize = encodeInt32(this.data.code.length)\n\n let contentSize = this.data.content.length\n if (this.data.content instanceof ArrayBuffer) {\n contentSize = this.data.content.byteLength\n }\n\n const bufContentSize = encodeInt32(contentSize)\n\n const ownershipsBuffer = this.data.ownerships.map(({ secret, authorizedKeys }) => {\n\n const bufAuthKeyLength = Uint8Array.from(toByteArray(authorizedKeys.length))\n const authorizedKeysBuffer = [Uint8Array.from([bufAuthKeyLength.length]), bufAuthKeyLength]\n\n // Sort authorized public key by alphabethic order\n authorizedKeys.sort((a, b) => uint8ArrayToHex(a.publicKey).localeCompare(uint8ArrayToHex(b.publicKey)))\n\n authorizedKeys.forEach(({ publicKey, encryptedSecretKey }) => {\n authorizedKeysBuffer.push(publicKey)\n authorizedKeysBuffer.push(encryptedSecretKey)\n })\n\n return concatUint8Arrays([\n encodeInt32(secret.byteLength),\n secret,\n concatUint8Arrays(authorizedKeysBuffer)\n ])\n })\n\n const ucoTransfersBuffers = this.data.ledger.uco.transfers.map(function (transfer) {\n return concatUint8Arrays([\n transfer.to,\n encodeInt64(transfer.amount)\n ])\n })\n\n const tokenTransfersBuffers = this.data.ledger.token.transfers.map(function (transfer) {\n const bufTokenId = Uint8Array.from(toByteArray(transfer.tokenId))\n return concatUint8Arrays([\n transfer.token,\n transfer.to,\n encodeInt64(transfer.amount),\n Uint8Array.from([bufTokenId.length]),\n bufTokenId\n ])\n })\n\n const bufOwnershipLength = Uint8Array.from(toByteArray(this.data.ownerships.length))\n const bufUCOTransferLength = Uint8Array.from(toByteArray(this.data.ledger.uco.transfers.length))\n const bufTokenTransferLength = Uint8Array.from(toByteArray(this.data.ledger.token.transfers.length))\n const bufRecipientLength = Uint8Array.from(toByteArray(this.data.recipients.length))\n\n return concatUint8Arrays([\n encodeInt32(version),\n this.address,\n Uint8Array.from([txTypes[this.type]]),\n bufCodeSize,\n this.data.code,\n bufContentSize,\n this.data.content,\n Uint8Array.from([bufOwnershipLength.length]),\n bufOwnershipLength,\n concatUint8Arrays(ownershipsBuffer),\n Uint8Array.from([bufUCOTransferLength.length]),\n bufUCOTransferLength,\n concatUint8Arrays(ucoTransfersBuffers),\n Uint8Array.from([bufTokenTransferLength.length]),\n bufTokenTransferLength,\n concatUint8Arrays(tokenTransfersBuffers),\n Uint8Array.from([bufRecipientLength.length]),\n bufRecipientLength,\n concatUint8Arrays(this.data.recipients)\n ])\n }\n\n originSignaturePayload() {\n const payloadForPreviousSignature = this.previousSignaturePayload()\n return concatUint8Arrays([\n payloadForPreviousSignature,\n this.previousPublicKey,\n Uint8Array.from([this.previousSignature.length]),\n this.previousSignature,\n ])\n }\n}\n\n", "import fetch from \"cross-fetch\";\nimport { uint8ArrayToHex } from \"./utils.js\";\n\nimport {\n absintheCreate,\n absintheSend,\n absintheObserve,\n absintheCancel,\n} from \"./api/absinthe.cjs\";\n\nconst senderContext = \"SENDER\";\n\nexport default class TransactionSender {\n constructor() {\n this.onSent = [];\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n\n this.confirmationNotifier = undefined;\n this.errorNotifier = undefined;\n this.absintheSocket = undefined;\n\n this.timeout = undefined;\n this.nbConfirmationReceived = 0;\n\n return this;\n }\n\n /**\n * Add listener on specific event\n * @param {String} event Event to subscribe\n * @param {Function} func Function to call when event triggered\n */\n on(event, func) {\n if (typeof event !== \"string\") {\n throw \"'event' must be a string\";\n }\n\n if (typeof func !== \"function\") {\n throw \"'func' must be a function\";\n }\n\n switch (event) {\n case \"sent\":\n this.onSent.push(func);\n break;\n\n case \"confirmation\":\n this.onConfirmation.push(func);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation.push(func);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation.push(func);\n break;\n\n case \"error\":\n this.onError.push(func);\n break;\n\n case \"timeout\":\n this.onTimeout.push(func);\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n\n return this;\n }\n\n async send(tx, endpoint, confirmationThreshold = 100, timeout = 60) {\n if (typeof tx !== \"object\") {\n throw \"'tx' must be an instance of TransactionBuilder\";\n }\n\n if (typeof endpoint !== \"string\") {\n throw \"'endpoint' must be a string\";\n }\n\n if (\n typeof confirmationThreshold !== \"number\" ||\n (confirmationThreshold < 0 && confirmationThreshold > 100)\n ) {\n throw \"'confirmationThreshold' must be an integer between 0 and 100\";\n }\n\n if (typeof timeout !== \"number\" || timeout <= 0) {\n throw \"'timeout' must be an integer greater than 0\";\n }\n\n const txAddress = uint8ArrayToHex(tx.address);\n\n // Create web socket\n const { host, protocol } = new URL(endpoint);\n const ws_protocol = protocol == \"https:\" ? \"wss\" : \"ws\";\n\n this.absintheSocket = absintheCreate(`${ws_protocol}://${host}/socket`);\n\n try {\n this.confirmationNotifier = await waitConfirmations(\n txAddress,\n this.absintheSocket,\n (nbConf, maxConf) =>\n handleConfirmation.call(this, confirmationThreshold, nbConf, maxConf)\n );\n this.errorNotifier = await waitError(\n txAddress,\n this.absintheSocket,\n handleError.bind(this)\n );\n } catch (err) {\n this.onError.forEach((func) => func(senderContext, err.message, this));\n return this;\n }\n\n // Send transaction\n fetch(endpoint + \"/api/transaction\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: tx.toJSON(),\n })\n .then((response) => handleSend.call(this, timeout, response))\n .catch((err) =>\n this.onError.forEach((func) => func(senderContext, err, this))\n );\n\n return this;\n }\n\n unsubscribe(event = undefined) {\n if (event) {\n switch (event) {\n case \"sent\":\n this.onSent = [];\n break;\n\n case \"confirmation\":\n this.onConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"requiredConfirmation\":\n this.onRequiredConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"fullConfirmation\":\n this.onFullConfirmation = [];\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n break;\n\n case \"error\":\n this.onError = [];\n absintheCancel(this.absintheSocket, this.errorNotifier);\n break;\n\n case \"timeout\":\n this.onTimeout = [];\n break;\n\n default:\n throw \"Event \" + event + \" is not supported\";\n }\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n this.onConfirmation = [];\n this.onFullConfirmation = [];\n this.onRequiredConfirmation = [];\n this.onError = [];\n this.onTimeout = [];\n this.onSent = [];\n }\n }\n}\n\nasync function waitConfirmations(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionConfirmed(address: \"${address}\") {\n nbConfirmations,\n maxConfirmations\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionConfirmed) {\n const {\n nbConfirmations: nbConfirmations,\n maxConfirmations: maxConfirmations,\n } = result.data.transactionConfirmed;\n\n handler(nbConfirmations, maxConfirmations);\n }\n });\n}\n\nasync function waitError(address, absintheSocket, handler) {\n const operation = `\n subscription {\n transactionError(address: \"${address}\") {\n context,\n reason\n }\n }\n `;\n const notifier = absintheSend(absintheSocket, operation);\n return absintheObserve(absintheSocket, notifier, (result) => {\n if (result.data.transactionError) {\n const { context: context, reason: reason } = result.data.transactionError;\n handler(context, reason);\n }\n });\n}\n\nfunction handleConfirmation(\n confirmationThreshold,\n nbConfirmations,\n maxConfirmations\n) {\n // Update nb confirmation received for timeout\n this.nbConfirmationReceived = nbConfirmations;\n\n // Unsubscribe to error on first confirmation\n if (nbConfirmations == 1)\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onConfirmation.forEach((func) =>\n func(nbConfirmations, maxConfirmations, this)\n );\n\n if (\n maxConfirmations * (confirmationThreshold / 100) <= nbConfirmations &&\n this.onRequiredConfirmation.length > 0\n ) {\n this.onRequiredConfirmation.forEach((func) => func(nbConfirmations, this));\n this.onRequiredConfirmation = [];\n clearTimeout(this.timeout);\n }\n\n if (nbConfirmations == maxConfirmations) {\n clearTimeout(this.timeout);\n\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n\n this.onFullConfirmation.forEach((func) => func(maxConfirmations, this));\n }\n}\n\nfunction handleError(context, reason) {\n clearTimeout(this.timeout);\n\n // Unsubscribe to all subscriptions\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onError.forEach((func) => func(context, reason, this));\n}\n\nfunction handleSend(timeout, response) {\n if (response.status >= 200 && response.status <= 299) {\n this.onSent.forEach((func) => func(this));\n // Setup 1 minute timeout\n this.timeout = setTimeout(() => {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n this.onTimeout.forEach((func) => func(this.nbConfirmationReceived, this));\n }, timeout * 1_000);\n } else {\n absintheCancel(this.absintheSocket, this.confirmationNotifier);\n absintheCancel(this.absintheSocket, this.errorNotifier);\n\n response\n .json()\n .then((err) =>\n this.onError.forEach((func) => func(senderContext, err.status, this))\n );\n }\n}\n"], - "mappings": "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K,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAE,GAAAC,EAAAC,IAAA,cAAAC,IAEA,IAAIC,GAASF,GAETG,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAEnB,SAASE,GAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAA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A,IAChBU,EAAEV,EAAI,IAAMqB,EAAErB,GACdU,EAAEV,EAAI,IAAMyB,EAAEzB,GACdU,EAAEV,EAAI,IAAM6B,EAAE7B,GACdU,EAAEV,EAAI,IAAMiB,EAAEjB,GAElB,IAAI+F,EAAMrF,EAAE,SAAS,EAAE,EACnBsF,EAAMtF,EAAE,SAAS,EAAE,EACvB,OAAA+E,GAASM,EAAKA,CAAG,EACjBvD,GAAEwD,EAAKA,EAAKD,CAAG,EACfhE,GAAUH,EAAGoE,CAAG,EACT,CACX,CACA,SAASC,GAAuBrE,EAAGI,EAAG,CAClC,OAAO2D,GAAkB/D,EAAGI,EAAGnC,EAAE,CACrC,CACA,IAAIqG,GAAI,CACJ,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACJ,EACA,SAASC,GAA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", - "names": ["require_base64_js", "__commonJSMin", "exports", "init_esbuild_inject", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "init_esbuild_inject", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "c", "rt", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "i", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "Buffer", "init_esbuild_inject", "__esmMin", "require_browser_ponyfill", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "__self__", "F", "self", "irrelevant", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "error", "fetch", "init", "request", "xhr", "abortXhr", "ctx", "__export", "exports", "Channel", "LongPoll", "Presence", "serializer_default", "Socket", "closure", "value", "globalSelf", "phxWindow", "global", "DEFAULT_VSN", "SOCKET_STATES", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "XHR_STATES", "Push", "channel", "event", "payload", "timeout", "status", "callback", "response", "_ref", "h", "Timer", "timerCalc", "topic", "params", "socket", "pushEvent", "reason", "ref", "bind", "onClose", "leavePush", "_event", "joinRef", "handledPayload", "eventBindings", "i", "Ajax", "method", "endPoint", "accept", "body", "ontimeout", "req", "resp", "obj", "parentKey", "queryStr", "key", "paramKey", "paramVal", "url", "prefix", "token", "messages", "msg", "_code", "_reason", "opts", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "by", "currentState", "state", "joins", "leaves", "presence", "newPresence", "currentPresence", "newRefs", "m", "curRefs", "joinedMetas", "leftMetas", "joinedRefs", "curMetas", "leftPresence", "refsToRemove", "p", "presences", "chooser", "pres", "func", "rawPayload", "join_ref", "message", "metaLength", "header", "view", "offset", "char", "combined", "buffer", "kind", "decoder", "joinRefSize", "topicSize", "eventSize", "data", "refSize", "awaitingConnectionOnPageShow", "_e", "tries", "newTransport", "uri", "code", "error", "closeCode", "transportBefore", "establishedBefore", "c", "refs", "chanParams", "chan", "result", "newRef", "rawMessage", "dupChannel", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ws", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "hide", "has", "SRC", "TO_STRING", "$toString", "TPL", "it", "O", "key", "val", "safe", "isFunction", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "hide", "redefine", "ctx", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "target", "expProto", "key", "own", "out", "exp", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_array_species_constructor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "isArray", "SPECIES", "original", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "speciesConstructor", "original", "length", "require_array_methods", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctx", "IObject", "toObject", "toLength", "asc", "TYPE", "$create", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "NO_HOLES", "create", "$this", "callbackfn", "that", "O", "self", "f", "length", "index", "result", "val", "res", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "UNSCOPABLES", "ArrayProto", "key", "require_es6_array_find_index", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_array_find", "__commonJSMin", "init_esbuild_inject", "$export", "$find", "KEY", "forced", "callbackfn", "require_es6_function_name", "__commonJSMin", "init_esbuild_inject", "dP", "FProto", "nameRE", "NAME", "require_newArrowCheck", "__commonJSMin", "exports", "init_esbuild_inject", "innerThis", "boundThis", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_to_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ceil", "floor", "it", "require_defined", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "b", "require_library", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_global", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "require_core", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "require_a_function", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_ctx", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "fn", "that", "length", "a", "b", "c", "require_is_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "it", "require_an_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "require_fails", "__commonJSMin", "exports", "module", "init_esbuild_inject", "exec", "require_descriptors", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_dom_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "document", "is", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_primitive", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "it", "S", "fn", "val", "require_object_dp", "__commonJSMin", "exports", "init_esbuild_inject", "anObject", "IE8_DOM_DEFINE", "toPrimitive", "dP", "O", "P", "Attributes", "require_property_desc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bitmap", "value", "require_hide", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "createDesc", "object", "key", "value", "require_has", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hasOwnProperty", "it", "key", "require_export", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "ctx", "hide", "has", "PROTOTYPE", "$export", "type", "name", "source", "IS_FORCED", "IS_GLOBAL", "IS_STATIC", "IS_PROTO", "IS_BIND", "IS_WRAP", "expProto", "target", "key", "own", "out", "C", "F", "a", "b", "c", "require_redefine", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_cof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toString", "it", "require_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "it", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_length", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "min", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared", "__commonJSMin", "exports", "module", "init_esbuild_inject", "core", "global", "SHARED", "store", "key", "value", "require_uid", "__commonJSMin", "exports", "module", "init_esbuild_inject", "id", "px", "key", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "store", "uid", "Symbol", "USE_SYMBOL", "$exports", "name", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_to_object", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defined", "it", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_string_iterator", "__commonJSMin", "init_esbuild_inject", "$at", "iterated", "O", "index", "point", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "global", "hide", "Iterators", "TO_STRING_TAG", "DOMIterables", "i", "NAME", "Collection", "proto", "require_wks_ext", "__commonJSMin", "exports", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_meta", "__commonJSMin", "exports", "module", "init_esbuild_inject", "META", "isObject", "has", "setDesc", "id", "isExtensible", "FREEZE", "setMeta", "it", "fastKey", "create", "getWeak", "onFreeze", "meta", "require_wks_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "global", "core", "LIBRARY", "wksExt", "defineProperty", "name", "$Symbol", "require_object_gops", "__commonJSMin", "exports", "init_esbuild_inject", "require_object_pie", "__commonJSMin", "exports", "init_esbuild_inject", "require_enum_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "it", "result", "getSymbols", "symbols", "isEnum", "i", "key", "require_is_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "arg", "require_object_gopn", "__commonJSMin", "exports", "init_esbuild_inject", "$keys", "hiddenKeys", "O", "require_object_gopn_ext", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "gOPN", "toString", "windowNames", "getWindowNames", "it", "require_object_gopd", "__commonJSMin", "exports", "init_esbuild_inject", "pIE", "createDesc", "toIObject", "toPrimitive", "has", "IE8_DOM_DEFINE", "gOPD", "O", "P", "require_es6_symbol", "__commonJSMin", "init_esbuild_inject", "global", "has", "DESCRIPTORS", "$export", "redefine", "META", "$fails", "shared", "setToStringTag", "uid", "wks", "wksExt", "wksDefine", "enumKeys", "isArray", "anObject", "isObject", "toIObject", "toPrimitive", "createDesc", "_create", "gOPNExt", "$GOPD", "$DP", "$keys", "gOPD", "dP", "gOPN", "$Symbol", "$JSON", "_stringify", "PROTOTYPE", "HIDDEN", "TO_PRIMITIVE", "isEnum", "SymbolRegistry", "AllSymbols", "OPSymbols", "ObjectProto", "USE_NATIVE", "QObject", "setter", "setSymbolDesc", "it", "key", "D", "protoDesc", "wrap", "tag", "sym", "isSymbol", "$defineProperty", "$defineProperties", "P", "keys", "i", "l", "$create", "$propertyIsEnumerable", "E", "$getOwnPropertyDescriptor", "$getOwnPropertyNames", "names", "result", "$getOwnPropertySymbols", "IS_OP", "$set", "value", "name", "es6Symbols", "j", "wellKnownSymbols", "k", "S", "args", "replacer", "$replacer", "require_es6_object_to_string", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_async_iterator", "__commonJSMin", "init_esbuild_inject", "require_es7_symbol_observable", "__commonJSMin", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_symbol", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_typeof", "__commonJSMin", "exports", "init_esbuild_inject", "_iterator", "_iterator2", "_interopRequireDefault", "_symbol", "_symbol2", "_typeof", "obj", "require_iter_call", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "iterator", "fn", "value", "entries", "e", "ret", "require_is_array_iter", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Iterators", "ITERATOR", "ArrayProto", "it", "require_create_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$defineProperty", "createDesc", "object", "index", "value", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_core_get_iterator_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "require_iter_detect", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ITERATOR", "SAFE_CLOSING", "riter", "exec", "skipClosing", "safe", "arr", "iter", "require_es6_array_from", "__commonJSMin", "init_esbuild_inject", "ctx", "$export", "toObject", "call", "isArrayIter", "toLength", "createProperty", "getIterFn", "iter", "arrayLike", "O", "C", "aLen", "mapfn", "mapping", "index", "iterFn", "length", "result", "step", "iterator", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_from", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_toConsumableArray", "__commonJSMin", "exports", "init_esbuild_inject", "_from", "_from2", "_interopRequireDefault", "obj", "arr", "i", "arr2", "require_Fun", "__commonJSMin", "exports", "init_esbuild_inject", "flip", "constant", "on", "compose", "pipe", "curry", "f", "b", "a", "o", "x", "y", "_this", "_len", "fns", "_key", "len", "_i", "_this2", "_len2", "_key2", "_i2", "curried", "length", "acc", "combined", "require_object_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "gOPS", "pIE", "toObject", "IObject", "$assign", "A", "B", "S", "K", "k", "target", "source", "T", "aLen", "index", "getSymbols", "isEnum", "keys", "length", "j", "key", "require_es6_object_assign", "__commonJSMin", "init_esbuild_inject", "$export", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_assign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_extends", "__commonJSMin", "exports", "init_esbuild_inject", "_assign", "_assign2", "_interopRequireDefault", "obj", "target", "i", "source", "key", "require_object_sap", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$export", "core", "fails", "KEY", "exec", "fn", "exp", "require_es6_object_keys", "__commonJSMin", "init_esbuild_inject", "toObject", "$keys", "it", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "floor", "it", "require_es6_number_is_integer", "__commonJSMin", "init_esbuild_inject", "$export", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_integer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_objectWithoutProperties", "__commonJSMin", "exports", "init_esbuild_inject", "obj", "keys", "target", "require_cjs", "__commonJSMin", "exports", "init_esbuild_inject", "_interopDefault", "ex", "_toConsumableArray", "_newArrowCheck", "Fun", "_extends", "_Array$from", "_Object$keys", "_Number$isInteger", "_objectWithoutProperties", "_this", "append", "elements", "array", "append$1", "_this$1", "convertIfNot", "input", "_this$3", "isLastIndex", "index", "isLastIndex$1", "_this$2", "cycleNext", "currentIndex", "cycleNext$1", "_this$4", "getObjectLength", "object", "fromObject", "_this$5", "insert", "insert$1", "_this$6", "isIntGreaterThan", "number", "other", "isKey", "string", "_this$7", "isPossibleFromObject", "_ref", "length", "rest", "_this$8", "prepend", "prepend$1", "_this$9", "reduceIf", "filter", "reduce", "resultInitial", "result", "element", "reduceIf$1", "_this$10", "reduceWhile", "shouldProceed", "proceed", "reduceWhile$1", "_this$11", "remove", "count", "remove$1", "_this$12", "repeat", "repeat$1", "_this$13", "replace", "replace$1", "_this$14", "resolveIndex", "relativeIndex", "resolveIndex$1", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "equal", "a", "b", "arrA", "arrB", "i", "keys", "dateA", "dateB", "regexpA", "regexpB", "require_es6_object_define_property", "__commonJSMin", "init_esbuild_inject", "$export", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$Object", "it", "key", "desc", "require_define_property", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_defineProperty", "__commonJSMin", "exports", "init_esbuild_inject", "_defineProperty", "_defineProperty2", "_interopRequireDefault", "obj", "key", "value", "require_core_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "ITERATOR", "Iterators", "it", "O", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_is_iterable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_core_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "get", "it", "iterFn", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_get_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_slicedToArray", "__commonJSMin", "exports", "init_esbuild_inject", "_isIterable2", "_isIterable3", "_interopRequireDefault", "_getIterator2", "_getIterator3", "obj", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "require_object_to_array", "__commonJSMin", "exports", "module", "init_esbuild_inject", "getKeys", "toIObject", "isEnum", "isEntries", "it", "O", "keys", "length", "i", "result", "key", "require_es7_object_entries", "__commonJSMin", "init_esbuild_inject", "$export", "$entries", "it", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_entries", "__commonJSMin", "exports", "module", "init_esbuild_inject", "get", "key", "composite", "curry", "isObject", "e", "_newArrowCheck", "_this$2", "thing", "is", "Array", "isArray", "getInIfNeeded", "index", "path", "value", "isLastIndex", "getInRecur", "getNotCompositeErrorMessage", "maybeComposite", "join", "ensureIsComposite", "isComposite", "Error", "getIn", "length", "getKeys", "keys", "_Object$keys", "hasIn", "isDeepEqual", "hasKey", "Object", "prototype", "hasOwnProperty", "call", "haveSameProps", "c1", "c2", "keys1", "every", "t", "_this$6", "k1", "isEmpty", "mapObject", "mapper", "object", "_Object$entries", "reduce", "result", "map", "objectRemove", "rest", "remove", "arrayRemove", "shallowCopy", "createReduceContext", "_this$11", "origin", "current", "previous", "undefined", "set", "updateSet", "context", "updateRemove", "removed", "removeAction", "_Symbol", "update", "createSupporting", "copyOrCreate", "nextKey", "getNext", "updater", "getReducer", "updateIn", "updateInCurried", "_this$10", "removeIn", "copy", "setIn", "_this$14", "xor", "cond1", "cond2", "Boolean", "Number", "shallowEqual", "toUndefinedIfEmpty", "require_iter_step", "__commonJSMin", "exports", "module", "init_esbuild_inject", "done", "value", "require_iterators", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_to_iobject", "__commonJSMin", "exports", "module", "init_esbuild_inject", "IObject", "defined", "it", "require_to_absolute_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "max", "min", "index", "length", "require_array_includes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toIObject", "toLength", "toAbsoluteIndex", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_shared_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "shared", "uid", "key", "require_object_keys_internal", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toIObject", "arrayIndexOf", "IE_PROTO", "object", "names", "O", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_object_keys", "__commonJSMin", "exports", "module", "init_esbuild_inject", "$keys", "enumBugKeys", "O", "require_object_dps", "__commonJSMin", "exports", "module", "init_esbuild_inject", "dP", "anObject", "getKeys", "O", "Properties", "keys", "length", "i", "P", "require_html", "__commonJSMin", "exports", "module", "init_esbuild_inject", "document", "require_object_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "dPs", "enumBugKeys", "IE_PROTO", "Empty", "PROTOTYPE", "createDict", "iframe", "i", "lt", "gt", "iframeDocument", "O", "Properties", "result", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "init_esbuild_inject", "def", "has", "TAG", "it", "tag", "stat", "require_iter_create", "__commonJSMin", "exports", "module", "init_esbuild_inject", "create", "descriptor", "setToStringTag", "IteratorPrototype", "Constructor", "NAME", "next", "require_object_gpo", "__commonJSMin", "exports", "module", "init_esbuild_inject", "has", "toObject", "IE_PROTO", "ObjectProto", "O", "require_iter_define", "__commonJSMin", "exports", "module", "init_esbuild_inject", "LIBRARY", "$export", "redefine", "hide", "Iterators", "$iterCreate", "setToStringTag", "getPrototypeOf", "ITERATOR", "BUGGY", "FF_ITERATOR", "KEYS", "VALUES", "returnThis", "Base", "NAME", "Constructor", "next", "DEFAULT", "IS_SET", "FORCED", "getMethod", "kind", "proto", "TAG", "DEF_VALUES", "VALUES_BUG", "$native", "$default", "$entries", "$anyNative", "methods", "key", "IteratorPrototype", "require_es6_array_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "addToUnscopables", "step", "Iterators", "toIObject", "iterated", "kind", "O", "index", "require_web_dom_iterable", "__commonJSMin", "init_esbuild_inject", "$iterators", "getKeys", "redefine", "global", "hide", "Iterators", "wks", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "DOMIterables", "collections", "i", "NAME", "explicit", "Collection", "proto", "key", "require_strict_method", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fails", "method", "arg", "require_es6_array_for_each", "__commonJSMin", "init_esbuild_inject", "$export", "$forEach", "STRICT", "callbackfn", "require_arrayWithoutHoles", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_arrayWithoutHoles", "arr", "i", "arr2", "require_iterableToArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_iterableToArray", "iter", "require_nonIterableSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_nonIterableSpread", "require_toConsumableArray", "__commonJSMin", "exports", "module", "init_esbuild_inject", "arrayWithoutHoles", "iterableToArray", "nonIterableSpread", "_toConsumableArray", "arr", "require_es6_array_map", "__commonJSMin", "init_esbuild_inject", "$export", "$map", "callbackfn", "require_string_at", "__commonJSMin", "exports", "module", "init_esbuild_inject", "toInteger", "defined", "TO_STRING", "that", "pos", "s", "i", "l", "a", "b", "require_advance_string_index", "__commonJSMin", "exports", "module", "init_esbuild_inject", "at", "S", "index", "unicode", "require_classof", "__commonJSMin", "exports", "module", "init_esbuild_inject", "cof", "TAG", "ARG", "tryGet", "it", "key", "O", "T", "B", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "init_esbuild_inject", "classof", "builtinExec", "R", "S", "exec", "result", "require_flags", "__commonJSMin", "exports", "module", "init_esbuild_inject", "anObject", "that", "result", "require_regexp_exec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "regexpFlags", "nativeExec", "nativeReplace", "patchedExec", "LAST_INDEX", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "NPCG_INCLUDED", "PATCH", "str", "re", "lastIndex", "reCopy", "match", "i", "require_es6_regexp_exec", "__commonJSMin", "init_esbuild_inject", "regexpExec", "require_fix_re_wks", "__commonJSMin", "exports", "module", "init_esbuild_inject", "redefine", "hide", "fails", "defined", "wks", "regexpExec", "SPECIES", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "originalExec", "KEY", "length", "exec", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "nativeRegExpMethod", "fns", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "strfn", "rxfn", "string", "arg", "require_es6_regexp_match", "__commonJSMin", "init_esbuild_inject", "anObject", "toLength", "advanceStringIndex", "regExpExec", "defined", "MATCH", "$match", "maybeCallNative", "regexp", "O", "fn", "res", "rx", "S", "fullUnicode", "A", "n", "result", "matchStr", "require_es6_array_some", "__commonJSMin", "init_esbuild_inject", "$export", "$some", "callbackfn", "require_invoke", "__commonJSMin", "exports", "module", "init_esbuild_inject", "fn", "args", "that", "un", "require_bind", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aFunction", "isObject", "invoke", "arraySlice", "factories", "construct", "F", "len", "args", "n", "i", "that", "fn", "partArgs", "bound", "require_es6_function_bind", "__commonJSMin", "init_esbuild_inject", "$export", "require_newArrowCheck", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_newArrowCheck", "innerThis", "boundThis", "locationsToString", "locations", "map", "_ref", "column", "line", "join", "errorToString", "_ref2", "message", "errorsToString", "gqlErrors", "operationTypeRe", "getOperationTypeFromMatched", "matched", "getOperationType", "operation", "result", "match", "TypeError", "isSubscription", "definition", "kind", "hasSubscription", "documentNode", "definitions", "some", "requestFromCompat", "query", "variables", "requestToCompat", "require_Observable", "__commonJSMin", "exports", "init_esbuild_inject", "_createClass", "defineProperties", "target", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "hasSymbols", "hasSymbol", "name", "getSymbol", "SymbolIterator", "SymbolObservable", "SymbolSpecies", "getMethod", "obj", "key", "value", "getSpecies", "ctor", "Observable", "isObservable", "x", "hostReportError", "e", "enqueue", "fn", "cleanupSubscription", "subscription", "cleanup", "unsubscribe", "closeSubscription", "flushSubscription", "queue", "i", "notifySubscription", "type", "observer", "m", "onNotify", "Subscription", "subscriber", "subscriptionObserver", "SubscriptionObserver", "_this", "resolve", "reject", "done", "_this2", "C", "_this3", "_this4", "hasSeed", "hasValue", "seed", "acc", "first", "_this5", "_len", "sources", "_key", "index", "startNext", "next", "v", "_this6", "subscriptions", "outer", "inner", "completeIfDone", "s", "method", "observable", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "item", "err", "_len2", "items", "_key2", "require_zen_observable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_es7_array_includes", "__commonJSMin", "init_esbuild_inject", "$export", "$includes", "el", "require_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isObject", "cof", "MATCH", "it", "isRegExp", "require_string_context", "__commonJSMin", "exports", "module", "init_esbuild_inject", "isRegExp", "defined", "that", "searchString", "NAME", "require_fails_is_regexp", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MATCH", "KEY", "re", "require_es6_string_includes", "__commonJSMin", "init_esbuild_inject", "$export", "context", "INCLUDES", "searchString", "require_defineProperty", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_defineProperty", "obj", "key", "value", "require_objectSpread", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defineProperty", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "require_objectWithoutPropertiesLoose", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "require_objectWithoutProperties", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectWithoutPropertiesLoose", "_objectWithoutProperties", "source", "excluded", "target", "key", "i", "sourceSymbolKeys", "require_es6_array_index_of", "__commonJSMin", "init_esbuild_inject", "$export", "$indexOf", "$native", "NEGATIVE_ZERO", "searchElement", "cancel", "_ref", "activeObservers", "canceledObservers", "rest", "_objectWithoutProperties", "isActive", "_toConsumableArray", "getNotifier", "handlerName", "payload", "observer", "getHandlerName", "name", "notifyAll", "observers", "event", "forEach", "notifyCanceled", "notifier", "observerNotifyAll", "eventNames", "abort", "error", "result", "start", "createStartEvent", "createResultEvent", "createErrorEvent", "createCancelEvent", "undefined", "createAbortEvent", "clearCanceled", "flushCanceled", "length", "findIndex", "notifiers", "key", "value", "hasIn", "refresh", "arrayReplace", "request", "remove", "arrayRemove", "updateNotifiers", "absintheSocket", "updater", "refreshNotifier", "notifierRefresh", "requestStatuses", "canceled", "canceling", "pending", "sent", "sending", "getObservers", "notify", "abortNotifier", "notifierRemove", "notifierNotify", "find", "notifyActive", "notifyResultEvent", "notifyStartEvent", "reset", "_objectSpread", "requestStatus", "subscriptionId", "handlePush", "push", "handler", "receive", "onSucceed", "onError", "onTimeout", "getPushHandlerMethodGetter", "handle", "notifierFind", "args", "_len", "_key", "getPushHandler", "notifierPushHandler", "map", "pushAbsintheEvent", "absintheEvent", "channel", "absintheEventNames", "doc", "unsubscribe", "createAbsintheUnsubscribeEvent", "createAbsintheDocEvent", "pushAbsintheDocEvent", "requestToCompat", "setNotifierRequestStatusSending", "createRequestError", "message", "Error", "notifierNotifyActive", "errorMessage", "getNotifierPushHandler", "pushRequestUsing", "onUnsubscribeSucceedCanceled", "notifierFlushCanceled", "onUnsubscribeSucceedActive", "subscribe", "notifierReset", "createUnsubscribeError", "unsubscribeHandler", "notifierNotifyCanceled", "pushAbsintheUnsubscribeEvent", "onSubscribeSucceed", "_ref2", "subscribedNotifier", "notifierNotifyStartEvent", "onSubscribe", "response", "errors", "gqlErrorsToString", "onDataMessage", "_ref3", "notifierNotifyResultEvent", "dataMessageEventName", "isDataMessage", "cancelQueryOrMutationSending", "notifierCancel", "cancelQueryOrMutationIfSending", "cancelPending", "cancelQueryOrMutation", "unsubscribeIfNeeded", "cancelNonPendingSubscription", "cancelSubscription", "cancelActive", "operationType", "setNotifierRequestStatusSent", "onQueryOrMutationSucceed", "pushQueryOrMutation", "pushRequest", "createChannelJoinError", "notifyErrorToAllActive", "createChannelJoinHandler", "joinChannel", "join", "channelJoinCreated", "onMessage", "withSubscription", "createConnectionCloseError", "notifyConnectionCloseError", "notifierOnConnectionCloseCanceled", "notifierOnConnectionCloseActive", "notifierOnConnectionClose", "onConnectionClose", "shouldJoinChannel", "onConnectionOpen", "absintheChannelName", "create", "phoenixSocket", "onOpen", "onClose", "observe", "notifierObserve", "createUsing", "getOperationType", "operation", "reactivate", "connectOrJoinChannel", "isConnected", "connect", "sendNew", "notifierCreate", "append", "updateCanceledReactivate", "notifierReactivate", "updateCanceled", "updateIfCanceled", "getExistentIfAny", "send", "getUnsubscriber", "onResult", "observableObserver", "next", "complete", "createObserver", "handlers", "onAbort", "bind", "toObservable", "Observable", "removeObserver", "indexOf", "unobserve", "ensureHasActiveObserver", "includes", "notifierUnobserve", "doUnobserveOrCancel", "unobserveOrCancel", "require_absinthe", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Socket", "WebSocket", "withAbsintheSocket", "uri", "webSocket", "absintheSocket", "operation", "notifier", "onResultCallback", "resolve", "reject", "err", "result", "require_safe_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_BYTES", "MAX_UINT32", "oldBrowser", "Buffer", "crypto", "randomBytes", "size", "cb", "bytes", "generated", "require_inherits_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ctor", "superCtor", "TempCtor", "require_events", "__commonJSMin", "exports", "module", "init_esbuild_inject", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "i", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "require_stream_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_util", "__commonJSMin", "init_esbuild_inject", "require_buffer_list", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_inheritsLoose", "subClass", "superClass", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "_Base", "oneOf", "expected", "thing", "len", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "deprecate", "fn", "msg", "config", "warned", "deprecated", "name", "val", "require_stream_writable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "init_esbuild_inject", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "onEndNT", "self", "value", "require_string_decoder", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_end_of_stream", "__commonJSMin", "exports", "module", "init_esbuild_inject", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "init_esbuild_inject", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_stream_readable", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "init_esbuild_inject", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "init_esbuild_inject", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_hash_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "inherits", "throwIfNotStringOrBuffer", "val", "prefix", "HashBase", "blockSize", "chunk", "encoding", "callback", "error", "err", "data", "block", "offset", "i", "j", "carry", "digest", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "HashBase", "Buffer", "ARRAY16", "MD5", "M", "i", "a", "b", "c", "d", "fnF", "fnG", "fnH", "fnI", "buffer", "rotl", "x", "n", "m", "k", "s", "require_ripemd160", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "inherits", "HashBase", "ARRAY16", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "j", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "i", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "rotl", "t", "buffer", "x", "n", "a", "b", "c", "d", "e", "m", "k", "s", "require_hash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Hash", "blockSize", "finalSize", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "H", "require_sha512", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "init_esbuild_inject", "algorithm", "Algorithm", "require_stream_browserify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Stream", "EE", "inherits", "dest", "options", "source", "ondata", "chunk", "ondrain", "onend", "onclose", "didOnEnd", "onerror", "er", "cleanup", "require_cipher_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "Transform", "StringDecoder", "inherits", "CipherBase", "hashMode", "data", "inputEnc", "outputEnc", "outData", "_", "next", "err", "e", "done", "value", "enc", "fin", "out", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "MD5", "RIPEMD160", "sha", "Base", "Hash", "hash", "data", "alg", "require_legacy", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Base", "ZEROS", "blocksize", "Hmac", "alg", "key", "ipad", "opad", "i", "data", "h", "require_md5", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MD5", "buffer", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Legacy", "Base", "Buffer", "md5", "RIPEMD160", "sha", "ZEROS", "Hmac", "alg", "key", "blocksize", "hash", "ipad", "opad", "i", "data", "h", "require_algos", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_precondition", "__commonJSMin", "exports", "module", "init_esbuild_inject", "MAX_ALLOC", "iterations", "keylen", "require_default_encoding", "__commonJSMin", "exports", "module", "init_esbuild_inject", "defaultEncoding", "pVersionMajor", "require_to_buffer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "thing", "encoding", "name", "require_sync_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "md5", "RIPEMD160", "sha", "Buffer", "checkParameters", "defaultEncoding", "toBuffer", "ZEROS", "sizes", "Hmac", "alg", "key", "saltLen", "hash", "getDigest", "blocksize", "ipad", "opad", "i", "ipad1", "data", "h", "shaFunc", "rmd160Func", "pbkdf2", "password", "salt", "iterations", "keylen", "digest", "hmac", "DK", "block1", "destPos", "hLen", "l", "T", "U", "j", "k", "require_async", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "checkParameters", "defaultEncoding", "sync", "toBuffer", "ZERO_BUF", "subtle", "toBrowser", "checks", "checkNative", "algo", "prom", "browserPbkdf2", "nextTick", "getNextTick", "password", "salt", "iterations", "length", "key", "res", "resolvePromise", "promise", "callback", "out", "e", "keylen", "digest", "resp", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "bytes", "off", "res", "value", "inL", "inR", "out", "outL", "outR", "i", "j", "num", "shift", "pc2table", "len", "r", "sTable", "b", "sb", "permuteTable", "size", "group", "str", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "l", "require_cipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "Cipher", "options", "data", "off", "min", "i", "out", "inputOff", "outputOff", "count", "max", "buffer", "first", "last", "require_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "utils", "Cipher", "DESState", "DES", "options", "state", "shiftTable", "key", "kL", "kR", "i", "shift", "inp", "inOff", "out", "outOff", "l", "r", "buffer", "off", "value", "pad", "lStart", "rStart", "keyL", "keyR", "s", "f", "t", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "proto", "CBCState", "iv", "i", "instantiate", "Base", "CBC", "options", "keys", "key", "state", "inp", "inOff", "out", "outOff", "superProto", "require_ede", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "inherits", "Cipher", "DES", "EDEState", "type", "key", "k1", "k2", "k3", "EDE", "options", "state", "inp", "inOff", "out", "outOff", "require_des", "__commonJSMin", "exports", "init_esbuild_inject", "require_browserify_des", "__commonJSMin", "exports", "module", "init_esbuild_inject", "CipherBase", "des", "inherits", "Buffer", "modes", "DES", "opts", "modeName", "mode", "type", "key", "iv", "data", "require_ecb", "__commonJSMin", "exports", "init_esbuild_inject", "self", "block", "require_buffer_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "a", "b", "length", "buffer", "i", "require_cbc", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "self", "block", "data", "pad", "out", "require_cfb", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "xor", "encryptStart", "self", "data", "decrypt", "len", "out", "require_cfb8", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "out", "chunk", "len", "i", "require_cfb1", "__commonJSMin", "exports", "init_esbuild_inject", "Buffer", "encryptByte", "self", "byteParam", "decrypt", "pad", "i", "len", "out", "bit", "value", "shiftIn", "buffer", "chunk", "require_ofb", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "getBlock", "self", "chunk", "Buffer", "pad", "require_incr32", "__commonJSMin", "exports", "module", "init_esbuild_inject", "incr32", "iv", "len", "item", "require_ctr", "__commonJSMin", "exports", "init_esbuild_inject", "xor", "Buffer", "incr32", "getBlock", "self", "out", "blockSize", "chunk", "chunkNum", "start", "i", "offset", "pad", "require_modes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "modeModules", "modes", "key", "require_aes", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "asUInt32Array", "buf", "len", "out", "scrubVec", "v", "i", "cryptBlock", "M", "keySchedule", "SUB_MIX", "SBOX", "nRounds", "SUB_MIX0", "SUB_MIX1", "SUB_MIX2", "SUB_MIX3", "s0", "s1", "s2", "s3", "t0", "t1", "t2", "t3", "ksRow", "round", "RCON", "G", "d", "j", "INV_SBOX", "INV_SUB_MIX", "x", "xi", "sx", "x2", "x4", "x8", "t", "AES", "key", "keyWords", "keySize", "ksRows", "k", "invKeySchedule", "ik", "ksR", "tt", "m1", "require_ghash", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "ZEROES", "toArray", "buf", "fromArray", "out", "GHASH", "key", "block", "i", "Vi", "Zi", "j", "xi", "lsbVi", "chunk", "abl", "bl", "require_authCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "GHASH", "xor", "incr32", "xorTest", "a", "b", "out", "len", "i", "calcIv", "self", "iv", "ck", "ghash", "toPad", "ivBits", "tail", "StreamCipher", "mode", "key", "decrypt", "h", "chunk", "rump", "tag", "buf", "require_streamCipher", "__commonJSMin", "exports", "module", "init_esbuild_inject", "aes", "Buffer", "Transform", "inherits", "StreamCipher", "mode", "key", "iv", "decrypt", "chunk", "require_evp_bytestokey", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "MD5", "EVP_BytesToKey", "password", "salt", "keyBits", "ivLen", "keyLen", "key", "iv", "tmp", "hash", "used", "keyStart", "ivStart", "length", "require_encrypter", "__commonJSMin", "exports", "init_esbuild_inject", "MODES", "AuthCipher", "Buffer", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Cipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "PADDING", "setTo", "len", "padBuff", "i", "createCipheriv", "suite", "password", "config", "createCipher", "keys", "require_decrypter", "__commonJSMin", "exports", "init_esbuild_inject", "AuthCipher", "Buffer", "MODES", "StreamCipher", "Transform", "aes", "ebtk", "inherits", "Decipher", "mode", "key", "iv", "Splitter", "data", "chunk", "thing", "out", "unpad", "setTo", "autoPadding", "last", "padded", "i", "createDecipheriv", "suite", "password", "config", "createDecipher", "keys", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "ciphers", "deciphers", "modes", "getCiphers", "require_modes", "__commonJSMin", "exports", "init_esbuild_inject", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "DES", "aes", "aesModes", "desModes", "ebtk", "createCipher", "suite", "password", "keyLen", "ivLen", "keys", "createCipheriv", "createDecipher", "createDecipheriv", "key", "iv", "getCiphers", "require_buffer", "__commonJSMin", "init_esbuild_inject", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex", "str", "end", "r", "len", "c", "parseBase", "mul", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_crypto", "__commonJSMin", "init_esbuild_inject", "require_brorand", "__commonJSMin", "exports", "module", "init_esbuild_inject", "r", "len", "Rand", "rand", "n", "res", "arr", "crypto", "require_mr", "__commonJSMin", "exports", "module", "init_esbuild_inject", "bn", "brorand", "MillerRabin", "rand", "n", "len", "min_bytes", "a", "start", "stop", "size", "k", "cb", "red", "rone", "n1", "s", "d", "rn1", "prime", "x", "i", "g", "require_generatePrime", "__commonJSMin", "exports", "module", "init_esbuild_inject", "randomBytes", "findPrime", "simpleSieve", "fermatTest", "BN", "TWENTYFOUR", "MillerRabin", "millerRabin", "ONE", "TWO", "FIVE", "SIXTEEN", "EIGHT", "TEN", "THREE", "SEVEN", "ELEVEN", "FOUR", "TWELVE", "primes", "_getPrimes", "limit", "res", "i", "k", "sqrt", "j", "p", "red", "bits", "gen", "num", "n2", "require_dh", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "MillerRabin", "millerRabin", "TWENTYFOUR", "ELEVEN", "TEN", "THREE", "SEVEN", "primes", "randomBytes", "DH", "setPublicKey", "pub", "enc", "Buffer", "setPrivateKey", "priv", "primeCache", "checkPrime", "prime", "generator", "gen", "hex", "error", "rem", "malleable", "other", "secret", "out", "front", "formatReturnValue", "bn", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "generatePrime", "primes", "DH", "getDiffieHellman", "mod", "prime", "Buffer", "gen", "ENCODINGS", "createDiffieHellman", "enc", "generator", "genc", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_browserify_rsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "randomBytes", "blind", "priv", "r", "getr", "blinder", "len", "crt", "msg", "blinds", "blinded", "c1", "c2", "qinv", "p", "q", "m1", "m2", "h", "Buffer", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "toArray", "msg", "enc", "res", "c", "hi", "lo", "zero2", "word", "toHex", "i", "arr", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_base", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_short", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "m", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "init_esbuild_inject", "curve", "require_utils", "__commonJSMin", "exports", "init_esbuild_inject", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "assert", "BlockHash", "msg", "enc", "r", "i", "len", "bytes", "k", "res", "t", "require_common", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "i", "b", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "i", "b", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "i", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "init_esbuild_inject", "require_ripemd", "__commonJSMin", "exports", "init_esbuild_inject", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "init_esbuild_inject", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "require_curves", "__commonJSMin", "exports", "init_esbuild_inject", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "i", "Qprime", "require_key", "__commonJSMin", "exports", "module", "init_esbuild_inject", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "init_esbuild_inject", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "init_esbuild_inject", "elliptic", "require_bn", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_safer", "__commonJSMin", "exports", "module", "init_esbuild_inject", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_reporter", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "options", "obj", "ReporterError", "state", "data", "key", "index", "value", "prev", "now", "msg", "err", "inherited", "elem", "result", "path", "e", "require_buffer", "__commonJSMin", "exports", "init_esbuild_inject", "inherits", "Reporter", "Buffer", "DecoderBuffer", "base", "options", "data", "save", "res", "fail", "bytes", "EncoderBuffer", "value", "reporter", "item", "out", "offset", "require_node", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Reporter", "EncoderBuffer", "DecoderBuffer", "assert", "tags", "methods", "overrided", "Node", "enc", "parent", "name", "state", "stateProps", "cstate", "prop", "res", "method", "clone", "body", "child", "args", "children", "arg", "key", "value", "tag", "item", "val", "num", "newKey", "obj", "input", "options", "result", "present", "prevKey", "save", "prevObj", "explicit", "start", "data", "entity", "match", "node", "reporter", "content", "primitive", "cls", "str", "require_der", "__commonJSMin", "exports", "init_esbuild_inject", "reverse", "map", "res", "key", "value", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "Node", "der", "DEREncoder", "entity", "DERNode", "data", "reporter", "parent", "tag", "primitive", "cls", "content", "encodedTag", "encodeTag", "header", "lenOctets", "i", "j", "str", "buf", "id", "values", "relative", "size", "ident", "objid", "offset", "two", "num", "time", "date", "numArray", "out", "value", "obj", "dataBuffer", "state", "res", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "DEREncoder", "PEMEncoder", "entity", "data", "options", "p", "out", "i", "require_encoders", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "require_der", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "bignum", "DecoderBuffer", "Node", "der", "DERDecoder", "entity", "DERNode", "data", "options", "parent", "buffer", "tag", "any", "state", "decodedTag", "derDecodeTag", "len", "derDecodeLen", "res", "fail", "decoder", "result", "possibleEnd", "unused", "raw", "str", "i", "numstr", "printstr", "values", "relative", "identifiers", "ident", "subident", "first", "second", "tmp", "year", "mon", "day", "hour", "min", "sec", "obj", "buf", "cls", "primitive", "oct", "tagStr", "num", "j", "require_pem", "__commonJSMin", "exports", "module", "init_esbuild_inject", "inherits", "Buffer", "DERDecoder", "PEMDecoder", "entity", "data", "options", "lines", "label", "re", "start", "end", "i", "match", "base64", "input", "require_decoders", "__commonJSMin", "exports", "init_esbuild_inject", "decoders", "require_api", "__commonJSMin", "exports", "init_esbuild_inject", "encoders", "decoders", "inherits", "api", "name", "body", "Entity", "Base", "Generated", "entity", "enc", "data", "options", "reporter", "require_base", "__commonJSMin", "exports", "init_esbuild_inject", "base", "require_constants", "__commonJSMin", "exports", "init_esbuild_inject", "constants", "map", "res", "key", "value", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "require_certificate", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn", "Time", "AttributeTypeValue", "AlgorithmIdentifier", "SubjectPublicKeyInfo", "RelativeDistinguishedName", "RDNSequence", "Name", "Validity", "Extension", "TBSCertificate", "X509Certificate", "require_asn1", "__commonJSMin", "exports", "init_esbuild_inject", "asn1", "RSAPrivateKey", "RSAPublicKey", "PublicKey", "AlgorithmIdentifier", "PrivateKeyInfo", "EncryptedPrivateKeyInfo", "DSAPrivateKey", "ECPrivateKey", "ECParameters", "require_fixProc", "__commonJSMin", "exports", "module", "init_esbuild_inject", "findProc", "startRegex", "fullRegex", "evp", "ciphers", "Buffer", "okey", "password", "key", "match", "decrypted", "suite", "iv", "cipherText", "cipherKey", "out", "cipher", "match2", "tag", "require_parse_asn1", "__commonJSMin", "exports", "module", "init_esbuild_inject", "asn1", "aesid", "fixProc", "ciphers", "compat", "Buffer", "parseKeys", "buffer", "password", "stripped", "type", "data", "subtype", "ndata", "decrypt", "salt", "iters", "algo", "iv", "cipherText", "keylen", "key", "cipher", "out", "require_sign", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHmac", "crt", "EC", "BN", "parseKeys", "curves", "sign", "hash", "key", "hashType", "signType", "tag", "priv", "ecSign", "dsaSign", "len", "pad", "i", "out", "curveId", "curve", "algo", "x", "p", "q", "g", "r", "k", "H", "bits2int", "s", "kv", "getKey", "makeKey", "makeR", "toDER", "total", "res", "zeros", "hlen", "hbits", "bits2octets", "v", "obits", "bits", "shift", "t", "require_verify", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "BN", "EC", "parseKeys", "curves", "verify", "sig", "hash", "key", "signType", "tag", "pub", "ecVerify", "dsaVerify", "len", "pad", "padNum", "i", "red", "out", "curveId", "curve", "pubkey", "p", "q", "g", "y", "unpacked", "s", "r", "checkValue", "montp", "w", "v", "b", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "Buffer", "createHash", "stream", "inherits", "sign", "verify", "algorithms", "key", "Sign", "algorithm", "data", "_", "done", "enc", "hash", "sig", "Verify", "createSign", "createVerify", "require_browser", "__commonJSMin", "exports", "module", "init_esbuild_inject", "elliptic", "BN", "curve", "ECDH", "aliases", "enc", "format", "other", "inenc", "Buffer", "otherPub", "out", "formatReturnValue", "key", "pub", "priv", "_priv", "bn", "len", "buf", "zeros", "require_mgf", "__commonJSMin", "exports", "module", "init_esbuild_inject", "createHash", "Buffer", "seed", "len", "t", "c", "i2ops", "out", "require_xor", "__commonJSMin", "exports", "module", "init_esbuild_inject", "a", "b", "len", "i", "require_withPublic", "__commonJSMin", "exports", "module", "init_esbuild_inject", "BN", "Buffer", "withPublic", "paddedMsg", "key", "require_publicEncrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "randomBytes", "createHash", "mgf", "xor", "BN", "withPublic", "crt", "Buffer", "publicKey", "msg", "reverse", "padding", "key", "paddedMsg", "oaep", "pkcs1", "k", "mLen", "iHash", "hLen", "hLen2", "ps", "dblen", "seed", "maskedDb", "maskedSeed", "nonZero", "len", "out", "i", "cache", "cur", "num", "require_privateDecrypt", "__commonJSMin", "exports", "module", "init_esbuild_inject", "parseKeys", "mgf", "xor", "BN", "crt", "createHash", "withPublic", "Buffer", "privateKey", "enc", "reverse", "padding", "key", "k", "msg", "zBuffer", "oaep", "pkcs1", "iHash", "hLen", "maskedSeed", "maskedDb", "seed", "db", "compare", "i", "p1", "status", "ps", "a", "b", "dif", "len", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "key", "buf", "require_browser", "__commonJSMin", "exports", "init_esbuild_inject", "oldBrowser", "safeBuffer", "randombytes", "Buffer", "kBufferMaxLength", "crypto", "kMaxUint32", "assertOffset", "offset", "length", "assertSize", "size", "randomFill", "randomFillSync", "buf", "cb", "actualFill", "ourBuf", "uint", "err", "bytes", "require_crypto_browserify", "__commonJSMin", "exports", "init_esbuild_inject", "algos", "algoKeys", "hashes", "p", "aes", "dh", "sign", "publicEncrypt", "rf", "require_sha3", "__commonJSMin", "exports", "module", "init_esbuild_inject", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_nanoassert", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "notEqual", "notOk", "equal", "a", "b", "m", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "loadWebAssembly", "opts", "imp", "wasm", "toUint8Array", "ready", "mod", "realloc", "onload", "size", "cb", "setup", "w", "s", "charCodeAt", "c", "require_blake2b_wasm", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "wasm", "head", "freeList", "Blake2b", "BYTES_MIN", "BYTES_MAX", "BYTES", "KEYBYTES_MIN", "KEYBYTES_MAX", "KEYBYTES", "SALTBYTES", "PERSONALBYTES", "digestLength", "key", "salt", "personal", "noAssert", "input", "enc", "hexSlice", "i", "cb", "noop", "p", "reject", "resolve", "err", "buf", "start", "len", "str", "toHex", "n", "require_blake2b", "__commonJSMin", "exports", "module", "init_esbuild_inject", "assert", "b2wasm", "ADD64AA", "v", "a", "b", "o0", "o1", "ADD64AC", "b0", "b1", "B2B_GET32", "arr", "i", "B2B_G", "c", "d", "ix", "iy", "x0", "m", "x1", "y0", "y1", "xor0", "xor1", "BLAKE2B_IV32", "SIGMA8", "SIGMA82", "x", "blake2bCompress", "ctx", "last", "parameter_block", "Blake2b", "outlen", "key", "salt", "personal", "blake2bUpdate", "input", "out", "buf", "blake2bFinal", "hexSlice", "cb", "str", "toHex", "n", "Proto", "noAssert", "BYTES_MIN", "BYTES_MAX", "KEYBYTES_MIN", "KEYBYTES_MAX", "SALTBYTES", "PERSONALBYTES", "BYTES", "KEYBYTES", "err", "require_lib", "__commonJSMin", "exports", "init_esbuild_inject", "_0", "_9", "gf", "init", "i", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "d", "crypto_verify_32", "set25519", "r", "a", "car25519", "o", "v", "c", "sel25519", "p", "q", "b", "t", "pack25519", "n", "j", "m", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "z", "e", "f", "x32", "x16", "crypto_scalarmult_base", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "out", "add", "g", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "s", "scalarbase", "L", "modL", "carry", "k", "reduce", "crypto_sign_direct", "sm", "sk", "crypto_sign_direct_rnd", "rnd", "curve25519_sign", "opt_rnd", "edsk", "signBit", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "pk", "mlen", "convertPublicKey", "curve25519_sign_open", "edpk", "checkArrayTypes", "args", "sharedKey", "secretKey", "publicKey", "signMessage", "msg", "opt_random", "buf", "signedMsg", "openMessage", "tmp", "sign", "signature", "verify", "generateKeyPair", "seed", "require_nacl_fast", "__commonJSMin", "exports", "module", "init_esbuild_inject", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_ed2curve", "__commonJSMin", "exports", "module", "init_esbuild_inject", "root", "f", "nacl", "gf", "init", "i", "r", "gf0", "gf1", "D", "I", "car25519", "o", "c", "sel25519", "p", "q", "t", "unpack25519", "n", "A", "a", "Z", "M", "j", "S", "inv25519", "pack25519", "b", "m", "par25519", "vn", "x", "xi", "y", "yi", "d", "crypto_verify_32", "neq25519", "pow2523", "set25519", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "convertPublicKey", "pk", "z", "convertSecretKey", "sk", "convertKeyPair", "edKeyPair", "publicKey", "require_pad_string", "__commonJSMin", "exports", "init_esbuild_inject", "padString", "input", "segmentLength", "stringLength", "diff", "position", "padLength", "paddedStringLength", "buffer", "Buffer", "require_base64url", "__commonJSMin", "exports", "init_esbuild_inject", "pad_string_1", "encode", "input", "encoding", "Buffer", "fromBase64", "decode", "base64url", "toBase64", "base64", "toBuffer", "require_base64url", "__commonJSMin", "exports", "module", "init_esbuild_inject", "init_esbuild_inject", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "utils_exports", "__export", "concatUint8Arrays", "decodeInt32", "encodeInt32", "encodeInt64", "fromBigInt", "hexToUint8Array", "isHex", "originPrivateKey", "toBigInt", "toByteArray", "uint8ArrayToHex", "init_esbuild_inject", "byteToHex", "n", "hexOctet", "inputString", "hexString", "byte", "bytes", "buff", "hexOctets", "arrays", "totalLength", "acc", "value", "buffer", "pos", "curr", "number", "array", "i", "decimals", "a", "getNearestEndpoints", "endpoint", "url", "fetch", "handleResponse", "res", "getTransactionIndex", "address", "isHex", "uint8ArrayToHex", "getStorageNoncePublicKey", "getTransactionFee", "tx", "getTransactionOwnerships", "getToken", "tokenAddress", "addOriginKey", "originPublicKey", "certificate", "getOracleData", "timestamp", "query", "subscribeToOracleUpdates", "handler", "host", "protocol", "ws_protocol", "absintheSocket", "notifier", "result", "response", "resolve", "reject", "crypto_exports", "__export", "IDToCurve", "IDToHashAlgo", "aesDecrypt", "aesEncrypt", "curveToID", "deriveAddress", "deriveKeyPair", "ecDecrypt", "ecEncrypt", "generateDeterministicKeyPair", "getHashDigest", "hash", "hashAlgoToID", "randomSecretKey", "sign", "verify", "init_esbuild_inject", "import_crypto", "import_elliptic", "import_js_sha3", "import_blake2b", "curve25519", "import_ed2curve", "EC", "EdDSA", "elliptic", "ec_eddsa", "ec_P256", "ec_secp256k1", "sha3_512", "sha3_256", "sha3", "SOFTWARE_ID", "randomSecretKey", "hashAlgoToID", "hashAlgo", "IDToHashAlgo", "ID", "curveToID", "curve", "IDToCurve", "deriveAddress", "seed", "index", "publicKey", "deriveKeyPair", "curveID", "hashedPublicKey", "hash", "concatUint8Arrays", "content", "algo", "isHex", "hexToUint8Array", "algoID", "digest", "getHashDigest", "output", "blake2b", "pvBuf", "derivePrivateKey", "generateDeterministicKeyPair", "pvKey", "originID", "privateKey", "getKeypair", "key", "pubBuf", "sign", "data", "curveBuf", "msgHash", "verify", "sig", "ecEncrypt", "curve_buf", "ephemeralPublicKey", "ephemeralPrivateKey", "curve25519pub", "ed2curve", "sharedKey", "aesKey", "iv", "deriveSecret", "tag", "encrypted", "aesAuthEncrypt", "ecdh", "ecDecrypt", "ciphertext", "ephemeralPubKey", "curve25519pv", "aesAuthDecrypt", "aesEncrypt", "aesDecrypt", "cipherText", "masterKey", "masterEntropy", "index_buf", "encodeInt32", "extended_seed", "pseudoRandomKey", "cipher", "decipher", "decryptedBuffers", "init_esbuild_inject", "init_esbuild_inject", "import_crypto", "import_base64url", "KEYCHAIN_ORIGIN_ID", "Keychain", "seed", "version", "name", "derivationPath", "curve", "hashAlgo", "servicesBuffer", "service", "concatUint8Arrays", "curveToID", "hashAlgoToID", "encodeInt32", "index", "deriveArchethicKeypair", "publicKey", "curveID", "hashedPublicKey", "hash", "tx", "keypair", "address", "payloadForPreviousSignature", "previousSignature", "sign", "binary", "pos", "readBytes", "seedSize", "readByte", "nbServices", "keychain", "decodeInt32", "i", "serviceNameLength", "serviceName", "derivationPathLength", "hashAlgoID", "IDToCurve", "IDToHashAlgo", "deriveAddress", "address_hex", "uint8ArrayToHex", "verificationMethods", "authentications", "purpose", "v", "keyToJWK", "size", "hashedPath", "replaceDerivationPathIndex", "extendedSeed", "generateDeterministicKeyPair", "path", "keyID", "key", "base64url", "Account", "core", "seed", "authorizedPublicKeys", "keychain", "Keychain", "aesKey", "randomSecretKey", "authorizedKeys", "key", "ecEncrypt", "aesEncrypt", "keychainAddress", "publicKey", "deriveKeyPair", "encryptedSecretKey", "accessPublicKey", "accessPrivateKey", "accessKeychainAddress", "deriveAddress", "accessOwnerships", "accessSecret", "accessAuthorizedKeys", "accessSecretKey", "authKey", "uint8ArrayToHex", "accessAESKey", "ecDecrypt", "aesDecrypt", "keychainOwnerships", "keychainSecret", "keychainAuthorizedKeys", "keychainSecretKey", "keychainAESKey", "encodedKeychain", "init_esbuild_inject", "Network", "core", "endpoint", "getStorageNoncePublicKey", "originKey", "certificate", "addOriginKey", "timestamp", "getOracleData", "callback", "transport", "subscribeToOracleUpdates", "tokenAddress", "getToken", "init_esbuild_inject", "init_esbuild_inject", "version", "txTypes", "TransactionBuilder", "txType", "type", "code", "content", "secret", "authorizedKeys", "isHex", "hexToUint8Array", "filteredAuthorizedKeys", "acc", "publicKey", "encryptedSecretKey", "to", "amount", "tokenAddress", "tokenId", "prevSign", "prevPubKey", "addr", "seed", "index", "curve", "hashAlgo", "keypair", "deriveKeyPair", "address", "deriveAddress", "payloadForPreviousSignature", "sign", "privateKey", "signature", "uint8ArrayToHex", "t", "bufCodeSize", "encodeInt32", "contentSize", "bufContentSize", "ownershipsBuffer", "bufAuthKeyLength", "toByteArray", "authorizedKeysBuffer", "a", "b", "concatUint8Arrays", "ucoTransfersBuffers", "transfer", "encodeInt64", "tokenTransfersBuffers", "bufTokenId", "bufOwnershipLength", "bufUCOTransferLength", "bufTokenTransferLength", "bufRecipientLength", "init_esbuild_inject", "import_cross_fetch", "import_absinthe", "senderContext", "TransactionSender", "event", "func", "tx", "endpoint", "confirmationThreshold", "timeout", "txAddress", "uint8ArrayToHex", "host", "protocol", "ws_protocol", "waitConfirmations", "nbConf", "maxConf", "handleConfirmation", "waitError", "handleError", "err", "fetch", "response", "handleSend", "address", "absintheSocket", "handler", "operation", "notifier", "result", "nbConfirmations", "maxConfirmations", "context", "reason", "Transaction", "core", "ExtendedTransactionBuilder", "address", "endpoint", "getTransactionIndex", "tx", "getTransactionFee", "getTransactionOwnerships", "TransactionBuilder", "TransactionSender", "confirmationThreshold", "timeout", "eventName", "fun", "Archethic", "endpoint", "Transaction", "Account", "Network", "nodes", "getNearestEndpoints", "ip", "port", "call", "node", "err"] -} diff --git a/example/transactionBuilder/index.html b/example/transactionBuilder/index.html index 860a62a..2afb96f 100644 --- a/example/transactionBuilder/index.html +++ b/example/transactionBuilder/index.html @@ -52,6 +52,8 @@

Transaction Builder

+ +
@@ -138,4 +140,4 @@

Transaction Builder

- + \ No newline at end of file diff --git a/lib/transaction_builder.js b/lib/transaction_builder.js index c463bba..386b997 100644 --- a/lib/transaction_builder.js +++ b/lib/transaction_builder.js @@ -10,6 +10,8 @@ const txTypes = { "transfer": 253, "hosting": 252, "token": 251, + "data": 250, + "contract": 249, //Network based transaction types "code_proposal": 7, "code_approval": 8 @@ -45,7 +47,7 @@ export default class TransactionBuilder { */ setType(type) { if (!Object.keys(txTypes).includes(type)) { - throw "Transaction type must be 'transfer', 'hosting', 'keychain_access', 'keychain', 'token', 'code_proposal', 'code_approval'" + throw "Transaction type must be in " + Object.keys(txTypes).map(t => `'${t}'`).join(", ") } this.type = type return this @@ -131,7 +133,7 @@ export default class TransactionBuilder { if (acc[publicKey]) return acc - filteredAuthorizedKeys.push({publicKey, encryptedSecretKey}) + filteredAuthorizedKeys.push({ publicKey, encryptedSecretKey }) acc[publicKey] = encryptedSecretKey @@ -167,7 +169,7 @@ export default class TransactionBuilder { throw 'UCO transfer amount must be a positive number' } - this.data.ledger.uco.transfers.push({to, amount}) + this.data.ledger.uco.transfers.push({ to, amount }) return this } From 37eefb8fa5a6270edaff91f154893cb4468582b0 Mon Sep 17 00:00:00 2001 From: Bastien CHAMAGNE Date: Fri, 13 Jan 2023 09:24:40 +0100 Subject: [PATCH 2/3] add unit test --- test/transaction_builder.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/test/transaction_builder.js b/test/transaction_builder.js index 3fff99b..13e6515 100644 --- a/test/transaction_builder.js +++ b/test/transaction_builder.js @@ -13,10 +13,26 @@ import assert from "assert"; describe("Transaction builder", () => { describe("setType", () => { - it("should assign type", () => { + it("should assign type transfer", () => { const tx = new TransactionBuilder().setType("transfer"); assert.strictEqual(tx.type, "transfer"); }); + it("should assign type contract", () => { + const tx = new TransactionBuilder().setType("contract"); + assert.strictEqual(tx.type, "contract"); + }); + it("should assign type data", () => { + const tx = new TransactionBuilder().setType("data"); + assert.strictEqual(tx.type, "data"); + }); + it("should assign type token", () => { + const tx = new TransactionBuilder().setType("token"); + assert.strictEqual(tx.type, "token"); + }); + it("should assign type hosting", () => { + const tx = new TransactionBuilder().setType("contract"); + assert.strictEqual(tx.type, "contract"); + }); }); describe("setCode", () => { From bb47e37716f56e987ef0471ce91a674b815eac66 Mon Sep 17 00:00:00 2001 From: Bastien CHAMAGNE Date: Fri, 13 Jan 2023 09:25:39 +0100 Subject: [PATCH 3/3] fix typo --- test/transaction_builder.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/transaction_builder.js b/test/transaction_builder.js index 13e6515..1b6e109 100644 --- a/test/transaction_builder.js +++ b/test/transaction_builder.js @@ -30,8 +30,8 @@ describe("Transaction builder", () => { assert.strictEqual(tx.type, "token"); }); it("should assign type hosting", () => { - const tx = new TransactionBuilder().setType("contract"); - assert.strictEqual(tx.type, "contract"); + const tx = new TransactionBuilder().setType("hosting"); + assert.strictEqual(tx.type, "hosting"); }); });